src/Controller/GestionComerciale/ArticleCommandeFournisseurController.php line 154

Open in your IDE?
  1. <?php
  2. namespace App\Controller\GestionComerciale;
  3. use App\Entity\Articles\Article;
  4. use App\Entity\GestionComerciale\ArticleCommande;
  5. use App\Entity\GestionComerciale\Devis;
  6. use App\Form\GestionComerciale\SupprimerDevisType;
  7. use App\Library\Datatable\Util\Datatable;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\JsonResponse;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Component\Validator\Validator\ValidatorInterface;
  15. use Symfony\Contracts\Translation\TranslatorInterface;
  16. class ArticleCommandeFournisseurController extends AbstractController
  17. {
  18.     /**
  19.      * @Route("", name="")
  20.      */
  21.     public function ajouterAction(Request $requestEntityManagerInterface $em)
  22.     {
  23.         $articleCommande = new ArticleCommande();
  24.         if ($request->isMethod('GET')) {
  25.             $devisId           $request->query->get('devis');
  26.             $devis             $em->getRepository(Devis::class)->find($devisId);
  27.             $position          count($devis->getArticlesCommande()) + 1;
  28.             $libelle           $request->query->get('dtc_gestioncomercialebundle_devis')['articlesCommande'][1]['libelle'];
  29.             $libelleSecondaire $request->query->get('dtc_gestioncomercialebundle_devis')['articlesCommande'][1]['libellesSecondaires'];
  30.             $description       $request->query->get('dtc_gestioncomercialebundle_devis')['articlesCommande'][1]['description'];
  31.             $quantite          $request->query->get('dtc_gestioncomercialebundle_devis')['articlesCommande'][1]['quantite'];
  32.             $tva               $request->query->get('dtc_gestioncomercialebundle_devis')['articlesCommande'][1]['tva'];
  33.             $prixBase          $request->query->get('dtc_gestioncomercialebundle_devis')['articlesCommande'][1]['prixBase'];
  34.             $remise            $request->query->get('dtc_gestioncomercialebundle_devis')['articlesCommande'][1]['remise'];
  35.             $articleId         $request->query->get('search-article');
  36.             $article           $em->getRepository(Article::class)->find($articleId);
  37.             $pump              $request->query->get('dtc_gestioncomercialebundle_devis')['articlesCommande'][1]['pump'];
  38.             $articleCommande->setPosition($position);
  39.             if (is_object($devis)) {
  40.                 $articleCommande->setDevis($devis);
  41.             }
  42.             $articleCommande->setLibelle($libelle);
  43.             $articleCommande->setLibelleSecondaire($libelleSecondaire);
  44.             $articleCommande->setDescription($description);
  45.             $articleCommande->setQuantite($quantite);
  46.             $articleCommande->setTva($tva);
  47.             $articleCommande->setPrixBase($prixBase);
  48.             $articleCommande->setRemise($remise);
  49.             if (is_object($article)) {
  50.                 $articleCommande->setArticle($article);
  51.                 $articleCommande->setReference($article->getReference());
  52.             }
  53.             $articleCommande->setPump($pump);
  54.             $devis->addArticlesCommande($articleCommande);
  55.             $em->persist($articleCommande);
  56.             $em->flush();
  57.             //unset($devis);
  58.         }
  59.         $totalHT  0;
  60.         $totalTTC 0;
  61.         //$devis = $em->getRepository('DTCGestionComercialeBundle:Devis')->find($devisId);
  62.         if (is_object($devis)) {
  63.             $totalHT  $devis->getPrixHT();
  64.             $totalTTC $devis->getPrixTTC();
  65.         }
  66.         $totalHT 10;
  67.         $response = new JsonResponse();
  68.         $response->setData([
  69.                                'html'     => $this->listerAction($devisIdtrue),
  70.                                'infos'    => $article,
  71.                                'totalHT'  => $totalHT,
  72.                                'totalTTC' => $totalTTC,
  73.                            ]);
  74.         return $response;
  75.     }
  76.     /**
  77.      * @Route("", name="")
  78.      */
  79.     public function supprimerMultipleAction(Request $requestEntityManagerInterface $emTranslatorInterface $translator)
  80.     {
  81.         $data $request->get('dataTables');
  82.         $ids  $data['actions'];
  83.         $repo $em->getRepository(ArticleCommande::class);
  84.         for ($i 0$i count($ids); $i++) {
  85.             $v $repo->find($ids[$i]);
  86.             if (is_object($v)) {
  87.                 $em->remove($v);
  88.             }
  89.         }
  90.         $em->flush();
  91.         $this->addFlash(
  92.             'notice',
  93.             $translator->trans('Devis supprimés avec succès !')
  94.         );
  95.         $url $this->generateUrl('dtc_article_commande_liste', []);
  96.         return new JsonResponse(['url' => $url'valide' => '1']);
  97.     }
  98.     /**
  99.      * @Route("", name="")
  100.      */
  101.     public function supprimerAction(Request $requestArticleCommande $articleCommandeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  102.     {
  103.         $titre_modal $translator->trans("Demande de confirmation");
  104.         $user        $this->getUser();
  105.         $form   $this->createForm(SupprimerDevisType::class, $articleCommande);
  106.         $errors "";
  107.         $form->handleRequest($request);
  108.         if ($form->isSubmitted()) {
  109.             if ($form->isValid()) {
  110.                 $em->remove($articleCommande);
  111.                 $em->flush();
  112.                 $this->addFlash(
  113.                     'notice',
  114.                     $translator->trans('Devis supprimé avec succès !')
  115.                 );
  116.                 $url $this->generateUrl('dtc_devis_liste', []);
  117.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  118.             } else {
  119.                 $errors $validator->validate($articleCommande);
  120.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $articleCommande->getId(), 'type' => '']);
  121.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  122.             }
  123.         }
  124.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'id' => $articleCommande->getId(), 'type' => '''errors' => $errors]);
  125.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  126.     }
  127.     /**
  128.      * @Route("", name="")
  129.      */
  130.     public function listerAction(Request $request$type$id$ajax falseDatatable $datatableTranslatorInterface $translator)
  131.     {
  132.         $this->datatable($type$id$datatable$translator);
  133.         if ($ajax == false) {
  134.             return $this->render('GestionComerciale/ArticleCommande/listerDatatableFournisseur.html.twig', ['type' => $type'id' => $id]);
  135.         } else {
  136.             return $this->renderView('GestionComerciale/ArticleCommande/listerDatatableFournisseur.html.twig', ['type' => $type'id' => $id]);
  137.         }
  138.     }
  139.     /**
  140.      * set datatable configs
  141.      *
  142.      * @return \App\Library\Datatable\Util\Datatable
  143.      */
  144.     public function datatable($type$idDatatable $datatableTranslatorInterface $translator)
  145.     {
  146.         $datatable->setEntity(ArticleCommande::class, "x")
  147.                   ->setFields(
  148.                       [
  149.                           $translator->trans("Date de reprise") => 'd.date',
  150.                           'Réf'                                 => 'a.reference',
  151.                           'Document'                            => 'd.reference',
  152.                           'Libelle'                             => 'x.libelle',
  153.                           'Quantité'                            => 'x.quantite',
  154.                           'Prix HT'                             => 'x.prixBase',
  155.                           'Taux remise'                         => 'x.remise',
  156.                           'Taux remise Suppl.'                  => 'x.remiseSupplementaire',
  157.                           //'Prix net' => 'x.remise',
  158.                           'Montant HT'                          => 'x.totalHt',
  159.                           //'tdc' => 'tdc.id',
  160.                           //$translator->trans("Actions") =>  'x.id',
  161.                           "_identifier_"                        => 'x.id',
  162.                       ]
  163.                   )
  164.                   ->addJoin('x.commandeFournisseur''d'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  165.                   ->addJoin('x.article''a'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  166.                   ->addJoin('x.articleCommandeRepris''acr'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  167.                   ->addJoin('acr.commandeFournisseur''acrc'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  168.             //  ->addJoin('d.typeDocumentCommercial', 'tdc', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  169.                   ->setRenderers(
  170.                 [
  171.                     => [
  172.                         'view' => 'FO/DataTable/date.html.twig',
  173.                     ],
  174.                     => [
  175.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  176.                         'params' => [
  177.                             'edit_route'   => 'dtc_article_modifier',
  178.                             'typeDocument' => 'article',
  179.                         ],
  180.                     ],
  181.                     /*2 => array(
  182.                         'view' => 'FO/DataTable/edit_texte.html.twig',
  183.                     /*
  184.                     3 => array(
  185.                         'view' => 'FO/DataTable/edit_texte.html.twig',
  186.                         'params' => array(
  187.                                 'objet'    => ArticleCommande::class,
  188.                                 'champ'    => 'setQuantite',
  189.                             ),
  190.                     ),*/
  191.                     => [
  192.                         'view' => 'GestionComerciale/ArticleCommande/prix_ht.html.twig',
  193.                     ],
  194.                     /*5 => array(
  195.                         'view' => 'FO/DataTable/edit_texte.html.twig',
  196.                         'params' => array(
  197.                                 'objet'    => ArticleCommande::class,
  198.                                 'champ'    => 'setRemise',
  199.                             ),
  200.                     ),*/
  201.                     /*6 => array(
  202.                         //'view' => 'FO/DataTable/prix_class.html.twig',
  203.                         'view' => 'GestionComerciale/ArticleCommande/pump.html.twig',
  204.                         'params' => array(
  205.                                 //'class'    => 'pump',
  206.                             ),
  207.                     ),*/
  208.                     /*7 => array(
  209.                         'view' => 'GestionComerciale/ArticleCommande/prix_remise.html.twig',
  210.                     ),*/
  211.                     /*8 => array(
  212.                         'view' => 'GestionComerciale/ArticleCommande/marge.html.twig',
  213.                     ),*/
  214.                     => [
  215.                         'view' => 'GestionComerciale/ArticleCommande/prix_ht.html.twig',
  216.                     ],
  217.                     => [
  218.                         'view' => 'GestionComerciale/ArticleCommande/prix_ht.html.twig',
  219.                     ],
  220.                     10 => [
  221.                         'view'   => 'FO/DataTable/actions.html.twig',
  222.                         'params' => [
  223.                             'edit_route'      => 'dtc_article_commande_modifier',
  224.                             'supprimer_route' => 'dtc_article_commande_supprimer',
  225.                             'objet'           => ArticleCommande::class,
  226.                         ],
  227.                     ],
  228.                 ]
  229.             )
  230.                   ->setMultiple(
  231.                       [
  232.                           'delete' => [
  233.                               'title' => 'Supprimer',
  234.                               'route' => 'dtc_article_commande_liste_supprimer',
  235.                           ],
  236.                       ]
  237.                   )
  238.             /*
  239. ->setWhere(                                                     // set your dql where statement
  240. 'acrc.id = :id and tdc.id IN (:typeDocumentCommercial)',
  241. array('id' => $id, 'typeDocumentCommercial' => array(TypeDocumentCommercial::COMMANDE, TypeDocumentCommercial::AVOIR))
  242. )
  243.             */
  244.                   ->setWhere(                                                     // set your dql where statement
  245.                 'acrc.id = :id',
  246.                 ['id' => $id]
  247.             )
  248.                   ->setOrder("x.position""asc")
  249.                   ->setSearch(true)
  250.                   ->setSearchFields([1]);
  251.         //$datatable->setSearchFields(array(0,2));
  252.         return $datatable;
  253.     }
  254.     /**
  255.      * @Route("/article-commande/grid/{type}/{id}", name="dtc_article_commande_liste_grid")
  256.      */
  257.     public function gridAction(Request $request$type$idDatatable $datatableTranslatorInterface $translator)
  258.     {
  259.         return $this->datatable($type$id$datatable$translator)->execute();
  260.     }
  261.     /**
  262.      * @Route("", name="")
  263.      */
  264.     public function pumpAction(Request $request$articleIdEntityManagerInterface $em)
  265.     {
  266.         $pumpActuel $em->getRepository(Article::class)->getPumpC($articleId);
  267.         return $this->render('FO/DataTable/prix_class.html.twig', ['dt_item' => $pumpActuel'class' => 'pumpActuel']);
  268.     }
  269.     /**
  270.      * @Route("", name="")
  271.      */
  272.     public function margeAction(Request $request$prixRemise$articleIdEntityManagerInterface $em)
  273.     {
  274.         //$pumpActuel = $em->getRepository('DTCArticlesBundle:Article')->getPumpR($articleId);
  275.         //$marge = $prixRemise - $pumpActuel;
  276.         $cpumpActuel $em->getRepository(Article::class)->getPumpC($articleId);
  277.         $marge       $prixRemise $cpumpActuel;
  278.         return $this->render('FO/DataTable/prix_class.html.twig', ['dt_item' => $marge'class' => 'margeActuelle']);
  279.     }
  280. }