src/Controller/GestionComerciale/OfATrierController.php line 45

Open in your IDE?
  1. <?php
  2. namespace App\Controller\GestionComerciale;
  3. use App\Entity\Articles\Article;
  4. use App\Entity\Articles\Type;
  5. use App\Entity\Etiquettes\Etiquette;
  6. use App\Model\Rangements\StatutCaisse;
  7. use App\Entity\GestionComerciale\Commande;
  8. use App\Entity\GestionComerciale\Fabrication;
  9. use App\Entity\GestionComerciale\FabricationMultiple;
  10. use App\Entity\GestionComerciale\StatutFabrication;
  11. use App\Entity\Rangements\Caisse;
  12. use App\Entity\Rangements\NiveauDeux;
  13. use App\Entity\Rangements\NiveauQuatre;
  14. use App\Entity\Rangements\NiveauTrois;
  15. use App\Entity\Rangements\NiveauUn;
  16. use App\Entity\Utilisateur\Utilisateur;
  17. use App\Form\Fabrication\SearchEtiquetteType;
  18. use App\Library\Datatable\Util\Datatable;
  19. use App\Repository\GestionComerciale\FabricationRepository;
  20. use App\Service\GestionComerciale\CommandeService;
  21. use App\Service\GestionComerciale\FabricationService;
  22. use Doctrine\ORM\EntityManagerInterface;
  23. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  24. use Symfony\Component\HttpFoundation\Request;
  25. use Symfony\Component\HttpFoundation\JsonResponse;
  26. use Symfony\Component\HttpFoundation\Response;
  27. use Symfony\Component\Form\Extension\Validator\ViolationMapper\ViolationMapper;
  28. use Symfony\Component\Routing\Annotation\Route;
  29. use Symfony\Component\Validator\Validation;
  30. use Symfony\Component\Validator\ConstraintViolation;
  31. use Symfony\Component\Form\FormError;
  32. use Symfony\Component\HttpFoundation\RedirectResponse;
  33. use Symfony\Component\Validator\Validator\ValidatorInterface;
  34. use Symfony\Contracts\Translation\TranslatorInterface;
  35. class OfATrierController extends AbstractController
  36. {
  37.     /**
  38.      * @Route("/fabrication-simplifie/of-trier/liste", name="dtc_fabrication_simplifie_of_trier_liste")
  39.      */
  40.     public function listeAction(Request   $request$fabricationParente ''$fabricationMultiple ''$prestation ''$commandeFournisseur ''EntityManagerInterface $em,
  41.                                         Datatable $datatableTranslatorInterface $translatorFabricationService $fabricationService
  42.     ) {
  43.         $this->datatable($request$datatable$translator);
  44.         $tableauClassColonne = [];
  45.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [0], "visible" => false"orderable" => false];
  46.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [1], "visible" => true"orderable" => false];
  47.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [4], "visible" => true"orderable" => true];
  48.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [9], "visible" => true"orderable" => true];
  49.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [10], "visible" => true"orderable" => true];
  50.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [12], "visible" => true"orderable" => true];
  51.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [14], "visible" => true"orderable" => false];
  52.         $prestationId        $request->query->get('prestationId');
  53.         $ref_bloquante       $request->query->get('ref_bloquante');
  54.         $ref_bloquante_label $request->query->get('ref_bloquante_label');
  55.         $fabricable          $request->query->get('fabricable');
  56.         $type                $request->query->get('type');
  57.         $fabricationMultiple $request->query->get('fabricationMultiple');
  58.         $repo_article      $em->getRepository(Article::class);
  59.         $repo_type_article $em->getRepository(Type::class);
  60.         $repo_fabrication_multiple $em->getRepository(FabricationMultiple::class);
  61.         $template 'GestionComerciale/OfATrier/lister.html.twig';
  62.         return $this->render($template, [
  63.             'tableauClassColonne' => $tableauClassColonne,
  64.             'fabricationParente'  => $fabricationParente,
  65.             'fabricationMultiple' => $fabricationMultiple,
  66.             'fabricationMultipleEntity' => (is_numeric($fabricationMultiple)) ? $repo_fabrication_multiple->find($fabricationMultiple) : null,
  67.             'typePrestations'     => $repo_article->findBy(['prestation' => 1], ['libelle' => 'ASC']),
  68.             'prestationId'        => $prestationId,
  69.             'prestation'          => $prestation,
  70.             'commandeFournisseur' => $commandeFournisseur,
  71.             'ref_bloquante'       => $ref_bloquante,
  72.             'ref_bloquante_label' => $ref_bloquante_label,
  73.             'fabricable'          => $fabricable,
  74.             'type'                => $type,
  75.             'typesArticle'        => $repo_type_article->findAll(),
  76.         ]);
  77.     }
  78.     /**
  79.      * set datatable configs
  80.      *
  81.      * @return \App\Library\Datatable\Util\Datatable
  82.      */
  83.     private function datatable(Request $requestDatatable $datatableTranslatorInterface $translator$fabricationParente ''$fabricationMultiple ''$prestationId '',
  84.                                        $prestation ''$commandeFournisseur ''$ref_bloquante ''$fabricable '',
  85.                                        $type ''$typeFabrication ''
  86.     ) {
  87.         $get $request->query->all();
  88.         //print_r($get);
  89.         $parameters = [];
  90.         $datatable->setEntity(Fabrication::class, "f")
  91.             ->setFields(
  92.                 [
  93.                     $translator->trans("Actions")             => 'f.id',
  94.                     $translator->trans("ID")             => 'f.id',
  95.                     $translator->trans("Réf") => 'f.reference',
  96.                     $translator->trans("Date") => 'f.dateFabrication',
  97.                     $translator->trans("Commande") => 'c.reference',
  98.                     $translator->trans("Client") => 'clt.nom',
  99.                     $translator->trans("Libellé")             => "a.libelle",
  100.                     $translator->trans("Réf article")         => "a.reference",
  101.                     $translator->trans("Teinte")         => "a.id",
  102.                     $translator->trans("NBE")         => "a.id",
  103.                     $translator->trans("NBET")         => "a.id",
  104.                     $translator->trans("TRP")       => "tr.libelle",
  105.                     $translator->trans("COMM CLIENT")       => "c.commentaire",
  106.                     $translator->trans("FLAG")                 => "f.fabricationEtiquette",
  107.                     $translator->trans("Statut") => 's.libelle',
  108.                     $translator->trans("STL") => 'fi.id',
  109.                     "_identifier_" => 'f.id',
  110.                 ]
  111.             )
  112.             ->addJoin('f.statutFabrication''s'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  113.             ->addJoin('f.article''a'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  114.             ->addJoin('f.articleCommandeCommandeClient''ac'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  115.             ->addJoin('ac.commande''c'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  116.             ->addJoin('c.transporteur''tr'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  117.             ->addJoin('c.client''clt'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  118.             ->addJoin('ac.fichier''fi'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  119.             ->addJoin('f.fabricationMultiple''fm'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  120.             ->addJoin('a.type''t'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  121.             ->setRenderers(
  122.                 [
  123.                     => [
  124.                         'view'   => 'FO/DataTable/actions-interface-simplifie.html.twig',
  125.                         'params' => [
  126.                             'afficher_icone_reception' => false,
  127.                             //'edit_route'               => 'dtc_fabrication_simplifie_fraisage_reception',
  128.                             //'supprimer_route'    => 'dtc_fabrication_supprimer',
  129.                             'objet'                    => Fabrication::class,
  130.                             'fabrication'              => true,
  131.                             'afficher_icone_anomalie_of'              => true,
  132.                             'table'              => 'dta-of',
  133.                         ],
  134.                     ],
  135.                     => [
  136.                         'view' => 'FO/DataTable/date.html.twig',//'DTCFO/DataTable/choix_fournisseur_controller.html.twig'
  137.                     ],
  138.                     => [
  139.                         'view'   => 'FO/DataTable/article_attribute.html.twig',
  140.                         'params' => ['article_id' => 'a.id''attribute_libelle' =>'NBE'],
  141.                     ],
  142.                     10 => [
  143.                         'view'   => 'FO/DataTable/article_attribute.html.twig',
  144.                         'params' => ['article_id' => 'a.id''attribute_libelle' =>'NBET'],
  145.                     ],
  146.                     15  => [
  147.                         'view' => 'FO/DataTable/article_commande_file.html.twig',
  148.                     ],
  149.                 ]
  150.             )
  151.             ->setSearch(true)
  152.             ->setSearchFields([])
  153.             ->setOrder('f.dateFabrication''ASC')
  154.             ->setMultiple(
  155.                 [
  156.                     'fabriquer' => [
  157.                         'title' => 'Creer une fabrication',
  158.                         'route' => 'dtc_fabrication_fraisage_simplifie_liste',
  159.                     ],
  160.                 ]
  161.             );
  162.         $where 's.id = 3 and ac.id is not null';
  163.         //$parametres['article']= 'test';
  164.         //$where .= ' AND f.typeFabrication = :typeFabrication';
  165.         //$parameters['typeFabrication'] = Fabrication::DEDUCTIVE;
  166.         if ($fabricationMultiple != '') {
  167.             //$datatable->addJoin('f.fabricationMultiple', 'fm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  168.             $where .= ' AND fm.id = '.$fabricationMultiple;
  169.         }
  170.         if ($where != '') {
  171.             $datatable->setWhere($where$parameters);
  172.         }
  173.         return $datatable;
  174.     }
  175.     /**
  176.      * @Route("/fabrication-simplifie/of-trier/grid", name="dtc_fabrication_simplifie_of_trier_liste_grid")
  177.      */
  178.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  179.     {
  180.         $fabricationParente  $request->query->get('fabricationParente');
  181.         $fabricationMultiple $request->query->get('fabricationMultiple');
  182.         $prestationId        $request->query->get('prestationId');
  183.         $prestation          $request->query->get('prestation');
  184.         $commandeFournisseur $request->query->get('commandeFournisseur');
  185.         $ref_bloquante       $request->query->get('ref_bloquante');
  186.         $fabricable          $request->query->get('fabricable');
  187.         $type                $request->query->get('type');
  188.         $typeFabrication     $request->query->get('typeFabrication');
  189.         return $this->datatable(
  190.             $request,
  191.             $datatable,
  192.             $translator,
  193.             $fabricationParente,
  194.             $fabricationMultiple,
  195.             $prestationId,
  196.             $prestation,
  197.             $commandeFournisseur,
  198.             $ref_bloquante,
  199.             $fabricable,
  200.             $type,
  201.             $typeFabrication
  202.         )->execute();
  203.     }
  204.     /**
  205.      * @Route("/fabrication-simplifie/of-trier/scan", name="dtc_fabrication_simplifie_of_trier_scan")
  206.      */
  207.     public function scanFlagElement(Request $request,EntityManagerInterface $emCommandeService $commandeService) {
  208.         $titre_modal "Affectation d'une boîte";
  209.         $repo_fabrication $em->getRepository(Fabrication::class);
  210.         $repo_statut_fabrication $em->getRepository(StatutFabrication::class);
  211.         $repo_caisse $em->getRepository(Caisse::class);
  212.         $caisseObj NULL;
  213.         $errors = [];
  214.         if ($request->isMethod('POST')) {
  215.             $post $request->request->all();
  216.             $caisse_obj $repo_caisse->findOneBy(array("ean"=>trim($post["caisse"])));
  217.             if(!is_object($caisse_obj)) {
  218.                 $errors[]=array("message"=>"Boîte introuvable");
  219.                 $flag   trim($post["flag"]);
  220.                 $ofFlag $repo_fabrication->searchFromEtiquette($flag,$statutFabrication=3);
  221.             }
  222.             else {
  223.                 $ofObj $repo_fabrication->find($post["OfId"]);
  224.                 //Vérifier que la caisse est libre
  225.                 $caisseLibre $repo_fabrication->caisseEstLibre($caisse_obj,$ofObj);
  226.                 if(!$caisseLibre) {
  227.                     $errors[]=array("message"=>"La boîte ".$caisse_obj->getLibelle()." n'est pas libre.");
  228.                     $flag   trim($post["flag"]);
  229.                     $ofFlag $repo_fabrication->searchFromEtiquette($flag,$statutFabrication=3);
  230.                 }
  231.                 else {
  232.                     if(is_object($caisse_obj->getRaisonAnomalie())) {
  233.                         $errors[]=array("message"=>"La boîte ".$caisse_obj->getLibelle()." n'est pas libre, elle est en anomalie.");
  234.                         $flag   trim($post["flag"]);
  235.                         $ofFlag $repo_fabrication->searchFromEtiquette($flag,$statutFabrication=3);
  236.                     }
  237.                     else {
  238.                         $url "";
  239.                         $statut_obj $repo_statut_fabrication->find(11);
  240.                         $ofObj->setStatutFabrication($statut_obj);
  241.                         $ofObj->setCaisse($caisse_obj);
  242.                         $caisse_obj->setStatutCaisse(StatutCaisse::OCCUPE);
  243.                         $caisse_obj->setClient($ofObj->getArticleCommandeCommandeClient()->getCommande()->getClient());
  244.                         $em->persist($ofObj);
  245.                         $em->persist($caisse_obj);
  246.                         $em->flush();
  247.                         $donnees=[];
  248.                         $donnees["message"]=" : BOITE ".$caisse_obj->getLibelle()." ".$ofObj->getReference()." ".$ofObj->getArticleCommandeCommandeClient()->getReference()." (id:".$ofObj->getArticleCommandeCommandeClient()->getId().")";
  249.                         $commandeService->creerHistorique($ofObj->getArticleCommandeCommandeClient()->getCommande(), 'trie_element',$donnees);
  250.                         return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => "dta-of"],
  251.                             200,
  252.                             ['Content-Type' => 'application/json']);
  253.                     }
  254.                 }
  255.             }
  256.         }
  257.         else {
  258.             $flag   trim($request->query->get('flag'));
  259.             $ofFlag $repo_fabrication->searchFromEtiquette($flag,$statutFabrication=3);
  260.             if(is_null($ofFlag)) {
  261.                 $errors "Impossible de trouver le flag : ".$flag;
  262.                 $rendu    $this->renderView('FO/Supprimer/supprimer_impossible.html.twig', ["errors"=>$errors]);
  263.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  264.             }
  265.             else if(is_object($ofFlag->getArticleCommandeCommandeClient()) && ($ofFlag->getArticleCommandeCommandeClient()->isBloquer()))
  266.             {
  267.                 $errors "Cette ligne est bloquée.";
  268.                 $rendu    $this->renderView('FO/Supprimer/supprimer_impossible.html.twig', ["errors"=>$errors]);
  269.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  270.             }
  271.             else if(is_object($ofFlag->getArticleCommandeCommandeClient()) && ($ofFlag->getArticleCommandeCommandeClient()->getCommande()->getABloquer()))
  272.             {
  273.                 $errors "Cette commande est bloquée.";
  274.                 $rendu    $this->renderView('FO/Supprimer/supprimer_impossible.html.twig', ["errors"=>$errors]);
  275.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  276.             }
  277.             else {
  278.                 $caisse_a_utiliser $repo_fabrication->searchCaisseFabrication($ofFlag);
  279.                 if(!is_null($caisse_a_utiliser)) {
  280.                     $caisseObj $repo_caisse->find($caisse_a_utiliser);
  281.                     if(is_object($caisseObj->getRaisonAnomalie())) {
  282.                         $caisseObj NULL;
  283.                     }
  284.                 }
  285.             }
  286.         }
  287.         $rendu    $this->renderView('GestionComerciale/OfATrier/affectation-boite.html.twig', ["errors"=>$errors,"flag"=>$flag,"of"=>$ofFlag,"caisse"=>$caisseObj]);
  288.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  289.     }
  290. }