src/Controller/GestionComerciale/ArticleCommandeController.php line 195

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