src/Controller/GestionComerciale/FabricationSimplifieFraisageController.php line 46

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\Entity\GestionComerciale\Commande;
  7. use App\Entity\GestionComerciale\Fabrication;
  8. use App\Entity\GestionComerciale\FabricationMultiple;
  9. use App\Entity\GestionComerciale\StatutFabrication;
  10. use App\Entity\Rangements\NiveauDeux;
  11. use App\Entity\Rangements\NiveauQuatre;
  12. use App\Entity\Rangements\NiveauTrois;
  13. use App\Entity\Rangements\NiveauUn;
  14. use App\Entity\Utilisateur\Utilisateur;
  15. use App\Form\Fabrication\SearchEtiquetteType;
  16. use App\Library\Datatable\Util\Datatable;
  17. use App\Repository\GestionComerciale\FabricationRepository;
  18. use App\Service\GestionComerciale\CommandeService;
  19. use App\Service\GestionComerciale\FabricationService;
  20. use Doctrine\ORM\EntityManagerInterface;
  21. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  22. use Symfony\Component\HttpFoundation\Request;
  23. use Symfony\Component\HttpFoundation\JsonResponse;
  24. use Symfony\Component\HttpFoundation\Response;
  25. use Symfony\Component\Form\Extension\Validator\ViolationMapper\ViolationMapper;
  26. use Symfony\Component\Routing\Annotation\Route;
  27. use Symfony\Component\Validator\Validation;
  28. use Symfony\Component\Validator\ConstraintViolation;
  29. use Symfony\Component\Form\FormError;
  30. use Symfony\Component\HttpFoundation\RedirectResponse;
  31. use Symfony\Component\Validator\Validator\ValidatorInterface;
  32. use Symfony\Contracts\Translation\TranslatorInterface;
  33. class FabricationSimplifieFraisageController extends AbstractController
  34. {
  35.     /**
  36.      * @Route("/fabrication-simplifie/fraisage/liste", name="dtc_fabrication_fraisage_simplifie_liste")
  37.      */
  38.     public function listeFraisageAction(Request   $request$fabricationParente ''$fabricationMultiple ''$prestation ''$commandeFournisseur ''EntityManagerInterface $em,
  39.                                  Datatable $datatableTranslatorInterface $translatorFabricationService $fabricationServiceCommandeService $commandeService
  40.     ) {
  41.         $this->datatable($request$datatable$translator);
  42.         $tableauClassColonne = [];
  43.         $prestationId        $request->query->get('prestationId');
  44.         $ref_bloquante       $request->query->get('ref_bloquante');
  45.         $ref_bloquante_label $request->query->get('ref_bloquante_label');
  46.         $fabricable          $request->query->get('fabricable');
  47.         $type                $request->query->get('type');
  48.         $fabricationMultiple $request->query->get('fabricationMultiple');
  49.         if ($request->isMethod('POST')) {
  50.             $etiquettes=[];
  51.             //$articleCommandeIds = $request->request->all('dataTables')['actions'];
  52.             $repo $em->getRepository(Fabrication::class);
  53.             $fabricationMultiple_obj $em->getRepository(FabricationMultiple::class)->find($fabricationMultiple);
  54.             if(count($fabricationMultiple_obj->getFabrications())) {
  55.                 foreach($fabricationMultiple_obj->getFabrications() as $fabrication) {
  56.                     if($fabrication->getStatutFabrication()->getId() != 10) {
  57.                         $this->addFlash('warning'"Impossible de désassembler l'élément (".$fabrication->getId().") ".$fabrication->getArticleCommandeCommandeClient()->getArticle()->getLibelle()." de la commande ".$fabrication->getArticleCommandeCommandeClient()->getCommande()->getReference()." car le statut de la fabrication est ".$fabrication->getStatutFabrication()->getLibelle().".");
  58.                     }
  59.                     else {
  60.                         if(!is_object($fabrication->getRaisonAnomalie()) or 1==1) {
  61.                             $fabricationService->creerMvtStock($fabrication);
  62.                             $etiquettes[]=$fabrication->getFabricationEtiquette();
  63.                             $donnees=[];
  64.                             $donnees["message"]=" : ".$fabrication->getReference()." ".$fabrication->getArticleCommandeCommandeClient()->getReference()." (id:".$fabrication->getArticleCommandeCommandeClient()->getId().")";
  65.                             $commandeService->creerHistorique($fabrication->getArticleCommandeCommandeClient()->getCommande(), 'desassemblage_disque',$donnees);
  66.                         }
  67.                     }
  68.                 }
  69.             }
  70.             /*
  71.             for ($i = 0; $i < count($articleCommandeIds); $i++) {
  72.                 $fabrication = $repo->find($articleCommandeIds[$i]);
  73.                 if (is_object($fabrication)) {
  74.                     $fabricationService->creerMvtStock($fabrication);
  75.                     $etiquettes[]=$fabrication->getFabricationEtiquette();
  76.                     $donnees=[];
  77.                     $donnees["message"]=" : ".$fabrication->getReference()." ".$fabrication->getArticleCommandeCommandeClient()->getReference()." (id:".$fabrication->getArticleCommandeCommandeClient()->getId().")";
  78.                     $commandeService->creerHistorique($fabrication->getArticleCommandeCommandeClient()->getCommande(), 'desassemblage_disque',$donnees);
  79.                 }
  80.             }
  81.             */
  82.             $this->addFlash('notice'"Désassemblage du disque réalisé avec succès !");
  83.             return $this->redirectToRoute('dtc_fabrication_multiple_simplifie_fraisage_liste', ['step' => 2,"etiquette"=>$etiquettes]);
  84.         }
  85.         $tableauClassColonne   = [];
  86.         $tableauClassColonne[] = ["className" => "colonne_id masquer_colonne""targets" => [0], "visible" => true"orderable" => false];
  87.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [1], "visible" => true"orderable" => false];
  88.         $tableauClassColonne[] = ["className" => "colonne_id ""targets" => [2], "visible" => true"orderable" => true];
  89.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [3], "visible" => true"orderable" => true];
  90.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [4], "visible" => true"orderable" => true];
  91.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [5], "visible" => true"orderable" => true];
  92.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [5], "visible" => true"orderable" => true];
  93.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [11], "visible" => true"orderable" => true];
  94.         //if($fabricable == 1) $fabricable = 0; else $fabricable = 1;
  95.         $repo_article      $em->getRepository(Article::class);
  96.         $repo_type_article $em->getRepository(Type::class);
  97.         $repo_fabrication_multiple $em->getRepository(FabricationMultiple::class);
  98. //        if ($fabricationParente != '' || $fabricationMultiple != '' || $prestation != '' || $commandeFournisseur != '') {
  99. ////            $template = 'GestionComerciale/FabricationSimplifie/lister-datatable.html.twig';
  100. //        } else {
  101.         $template 'GestionComerciale/FabricationSimplifie/deductive.lister.html.twig';
  102. //        }
  103.         return $this->render($template, [
  104.             'tableauClassColonne' => $tableauClassColonne,
  105.             'fabricationParente'  => $fabricationParente,
  106.             'fabricationMultiple' => $fabricationMultiple,
  107.             'fabricationMultipleEntity' => (is_numeric($fabricationMultiple)) ? $repo_fabrication_multiple->find($fabricationMultiple) : null,
  108.             'typePrestations'     => $repo_article->findBy(['prestation' => 1], ['libelle' => 'ASC']),
  109.             'prestationId'        => $prestationId,
  110.             'prestation'          => $prestation,
  111.             'commandeFournisseur' => $commandeFournisseur,
  112.             'ref_bloquante'       => $ref_bloquante,
  113.             'ref_bloquante_label' => $ref_bloquante_label,
  114.             'fabricable'          => $fabricable,
  115.             'type'                => $type,
  116.             'typesArticle'        => $repo_type_article->findAll(),
  117.         ]);
  118.     }
  119.     /**
  120.      * @Route("/fabrication-simplifie/fraisage/grid", name="dtc_fabrication_simplifie_fraisage_liste_grid")
  121.      */
  122.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  123.     {
  124.         $fabricationParente  $request->query->get('fabricationParente');
  125.         $fabricationMultiple $request->query->get('fabricationMultiple');
  126.         $prestationId        $request->query->get('prestationId');
  127.         $prestation          $request->query->get('prestation');
  128.         $commandeFournisseur $request->query->get('commandeFournisseur');
  129.         $ref_bloquante       $request->query->get('ref_bloquante');
  130.         $fabricable          $request->query->get('fabricable');
  131.         $type                $request->query->get('type');
  132.         $typeFabrication     $request->query->get('typeFabrication');
  133.         return $this->datatable(
  134.             $request,
  135.             $datatable,
  136.             $translator,
  137.             $fabricationParente,
  138.             $fabricationMultiple,
  139.             $prestationId,
  140.             $prestation,
  141.             $commandeFournisseur,
  142.             $ref_bloquante,
  143.             $fabricable,
  144.             $type,
  145.             $typeFabrication
  146.         )->execute();
  147.     }
  148.     /**
  149.      * set datatable configs
  150.      *
  151.      * @return \App\Library\Datatable\Util\Datatable
  152.      */
  153.     private function datatable(Request $requestDatatable $datatableTranslatorInterface $translator$fabricationParente ''$fabricationMultiple ''$prestationId '',
  154.                                        $prestation ''$commandeFournisseur ''$ref_bloquante ''$fabricable '',
  155.                                        $type ''$typeFabrication ''
  156.     ) {
  157.         $get $request->query->all();
  158.         //print_r($get);
  159.         $parameters = [];
  160.         $datatable->setEntity(Fabrication::class, "f")
  161.                     ->setDatatableId('dta-desassemblage-ofm')
  162.                   ->setFields(
  163.                       [
  164.                           $translator->trans("Actions")             => 'f.id',
  165.                           $translator->trans("Réf") => 'f.reference',
  166.                           $translator->trans("Date usinage") => 'f.dateFabrication',
  167.                           $translator->trans("Commande") => 'cde.reference',
  168.                           $translator->trans("Client") => 'clt.nom',
  169.                           $translator->trans("Libellé")             => "a.libelle",
  170.                           $translator->trans("Réf article")         => "a.reference",
  171.                           $translator->trans("Teinte")         => "a.id",
  172.                           $translator->trans("NBE")         => "a.id",
  173.                           $translator->trans("NBET")         => "a.id",
  174.                           $translator->trans("TRP")       => "tr.libelle",
  175.                           $translator->trans("COMM CLIENT")       => "cde.commentaire",
  176.                           $translator->trans("FLAG")                 => "ac.fabricationEtiquette",
  177.                           $translator->trans("STL") => 'fi.id',
  178.                           "_identifier_" => 'f.id',
  179.                       ]
  180.                   )
  181.             //->addJoin('ac.commande', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  182.                 ->addJoin('f.statutFabrication''s'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  183.                 ->addJoin('f.article''a'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  184.                 ->addJoin('f.articleCommandeCommandeClient''ac'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  185.                 ->addJoin('ac.commande''cde'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  186.                 ->addJoin('cde.transporteur''tr'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  187.                 ->addJoin('cde.client''clt'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  188.                 ->addJoin('ac.fichier''fi'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  189.                 ->addJoin('f.fabricationMultiple''fm'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  190.                 ->addJoin('a.type''t'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  191.                   ->setRenderers(
  192.                       [
  193.                           => [
  194.                               'view'   => 'FO/DataTable/actions-interface-simplifie.html.twig',
  195.                               'params' => [
  196.                                   'imprimer_flag' => true,
  197.                                   'afficher_icone_reception' => false,
  198.                                   //'edit_route'               => 'dtc_fabrication_simplifie_fraisage_reception',
  199.                                   //'supprimer_route'    => 'dtc_fabrication_supprimer',
  200.                                   'objet'                    => Fabrication::class,
  201.                                   'fabrication'              => true,
  202.                                   'afficher_icone_anomalie_of'              => true,
  203.                                   'table'              => 'dta-desassemblage-ofm',
  204.                                   'fabricationMultiple'      => $fabricationMultiple,
  205.                               ],
  206.                           ],
  207.                           => [
  208.                               'view' => 'FO/DataTable/date.html.twig',//'DTCFO/DataTable/choix_fournisseur_controller.html.twig'
  209.                           ],
  210.                           => [
  211.                               'view'   => 'FO/DataTable/client.html.twig',
  212.                               'params' => [
  213.                                   'edit_route'   => 'dtc_client_modifier',
  214.                                   'typeDocument' => 'client',
  215.                               ],
  216.                           ],
  217.                           => [
  218.                               'view'   => 'FO/DataTable/article_attribute.html.twig',
  219.                               'params' => ['article_id' => 'a.id''attribute_libelle' =>'TEINTE'],
  220.                           ],
  221.                           => [
  222.                               'view'   => 'FO/DataTable/article_attribute.html.twig',
  223.                               'params' => ['article_id' => 'a.id''attribute_libelle' =>'NBE'],
  224.                           ],
  225.                           => [
  226.                               'view'   => 'FO/DataTable/article_attribute.html.twig',
  227.                               'params' => ['article_id' => 'a.id''attribute_libelle' =>'NBET'],
  228.                           ],
  229.                           13  => [
  230.                               'view' => 'FO/DataTable/article_commande_file.html.twig',
  231.                               'params' => ['pageCible' => 'desassemblage_disque'],
  232.                           ],
  233.                       ]
  234.                   )
  235.                   ->setSearch(true)
  236.                   ->setSearchFields([])
  237.                   ->setOrder('f.dateFabrication''ASC')
  238.             ->setMultiple(
  239.                 [
  240.                     'fabriquer' => [
  241.                         'title' => 'Creer une fabrication',
  242.                         'route' => 'dtc_fabrication_fraisage_simplifie_liste',
  243.                     ],
  244.                 ]
  245.             );
  246.         $where 's.id = 10';
  247.         //$parametres['article']= 'test';
  248.         if ($fabricable != '') {
  249.             $where .= ' AND f.fabriquable = 2';
  250.         }
  251.         $where                         .= ' AND f.typeFabrication = :typeFabrication';
  252.         $parameters['typeFabrication'] = Fabrication::DEDUCTIVE;
  253.         if ($fabricationMultiple != '') {
  254.             //$datatable->addJoin('f.fabricationMultiple', 'fm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  255.             $where .= ' AND fm.id = '.$fabricationMultiple;
  256.         }
  257.         if ($where != '') {
  258.             $datatable->setWhere($where$parameters);
  259.         }
  260.         return $datatable;
  261.     }
  262.     /**
  263.      * @Route("/fabrication-simplifie/fraisage/reception/{id}", name="dtc_fabrication_simplifie_fraisage_reception")
  264.      */
  265.     public function receptionnerAction(Request $requestFabrication $fabricationEntityManagerInterface $emTranslatorInterface $translatorFabricationService $fabricationService)
  266.     {
  267.         $pid getmypid();
  268.         $user $this->getUser();
  269.         //$fabrication->setUtilisateur($user);
  270.         $errors           "";
  271.         $repo_utilisateur $em->getRepository(Utilisateur::class);
  272.         $repo_commande    $em->getRepository(Commande::class);
  273.         $utilisateurs     $repo_utilisateur->findAll();
  274.         if ($request->isMethod('POST')) {
  275.             $post $request->request->all();
  276.             $articles = [
  277.                 'ids'          => $request->request->get('ids'),
  278.                 'commentaires' => $request->request->get('commentaires'),
  279.                 'qtes'         => $request->request->get('qtes'),
  280.                 'qtesCmdes'    => $request->request->get('qtesCmdes'),
  281.                 'pumps'        => $request->request->get('pumps'),
  282.                 'cumps'        => $request->request->get('cumps'),
  283.                 'typesMvt'     => $request->request->get('typesMvt'),
  284.                 'emplacement'  => $request->request->get('emplacement'),
  285.             ];
  286.             $valeurs  = [
  287.                 "articles"     => $articles,
  288.                 'niveauUn'     => $request->request->get('niveauUn'),
  289.                 'niveauDeux'   => $request->request->get('niveauDeux'),
  290.                 'niveauTrois'  => $request->request->get('niveauTrois'),
  291.                 'niveauQuatre' => $request->request->get('niveauQuatre'),
  292.             ];
  293. //            dd($articles, $valeurs);
  294.             $equipier $repo_utilisateur->find($request->request->get('equipier'));
  295.             //Tester si la fabrication a été modifiée à la réception
  296.             // Si la fabrication a été modifiée on crée une nouvelle fabrication correspondant à cette réception et on modifie la réception existante
  297.             $newFabrication false;
  298.             foreach ($fabrication->getArticleCommande() as $ac) {
  299.                 $articleId $ac->getArticle()->getId();
  300.                 if ( ! in_array($articleId$articles['ids'])) {
  301.                     $newFabrication true;
  302.                 }
  303.             }
  304.             if ($newFabrication == true) {
  305.                 //Création de la nouvelle fabrication
  306.                 $valeurs['receptionnee'] = true;
  307.                 $newFabrication          $fabricationService->modifierFabricationEtCreerNewFabrication($fabrication$articles$equipier);
  308.                 $this->addFlash('notice'$translator->trans('Nouvel ordre de fabrication créé !'));
  309.                 $url $this->generateUrl('dtc_fabrication_modifier', ["id" => $newFabrication->getId(), 'tabs' => '#fabrications']);
  310.                 //$url = $this->generateUrl('dtc_fabrication_modifier',array("id"=>$fabrication->getId(), 'tabs'=>'#fabrications'));
  311.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  312.             } else {
  313.                 $fabricationService->creerMvtStock($fabrication$valeurs''$equipier);
  314.                 //echo 'test';
  315.                 //$this->addFlash('notice', 'Réception de la fabrication '.$fabrication->getReference().' réalisée avec succès !' );
  316.                 $url $this->generateUrl('dtc_fabrication_modifier', ["id" => $fabrication->getId()]);
  317.                 if ($request->query->get('commandeFournisseur') != '') {
  318.                     $url $this->generateUrl('dtc_commande_fournisseur_modifier', ["id" => $request->query->get('commandeFournisseur'), 'tabs' => '#fabrications']);
  319.                 } elseif ($request->query->get('fabricationMultiple') != '') {
  320.                     $url $this->generateUrl('dtc_fabrication_multiple_modifier', ["id" => $request->query->get('fabricationMultiple'), 'tabs' => '#fabrications']);
  321.                 }
  322.                 //$url = $this->generateUrl('dtc_fabrication_simplifie_liste',array());
  323.                 $url $this->generateUrl('dtcfo_interface_simplifie_validation', []);
  324.                 $route   $this->generateUrl('dtc_fabrication_simplifie_fraisage_liste', []);
  325.                 $message '<br/>Fabrication réceptionné avec succès ! <br/> Vous allez être automatiquement redirigé dans 5 secondes. <br/> <div style="text-align:center;margin-top:5px;"><a id="lien_suivant" href="'.$route.'">Ne pas attendre</a></div>';
  326.                 $this->addFlash('notice'$translator->trans($message));
  327.                 // TODO refactor commande
  328. //                $builder = new ProcessBuilder();
  329. //                $builder->setArguments(['php', '../app/console', 'articlesComposesModifierCondHa:maj']);
  330. //                $builder->getProcess()->start();
  331.                 //exit;
  332.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  333.             }
  334.         }
  335.         $etiquettes  $repo_commande $em->getRepository(Etiquette::class)->findAll();
  336.         $titre_modal $translator->trans('Voulez-vous générer les mouvements de stock ?');
  337.         return $this->render(
  338.             'GestionComerciale/FabricationSimplifie/deductive.reception.html.twig',
  339.             ['pid' => $pid'errors' => $errors'fabrication' => $fabrication'user' => $user'utilisateurs' => $utilisateurs'etiquettes' => $etiquettes]
  340.         );//'form' => $form->createView(),
  341.         //$rendu = $this->renderView('GestionComerciale/FabricationSimplifie/reception.html.twig', array('errors'=>$errors,'fabrication'=>$fabrication,'user'=>$user, 'utilisateurs'=>$utilisateurs, 'etiquettes'=>$etiquettes));//'form' => $form->createView(),
  342.         //return new Response(json_encode(array('rendu'=>$rendu,'valide'=>'0','url'=>'','titre'=>$titre_modal)), 200, array('Content-Type'=>'application/json'));
  343.     }
  344.     /**
  345.      * @Route("", name="")
  346.      */
  347.     public function ____receptionnerEmplacementAction(Request $requestFabrication $fabricationEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  348.     {
  349.         //$emplacement = $objet;
  350.         $titre_modal $translator->trans("Ou allez-vous déposer la marchandise fabriquée ?");
  351.         $get         $request->query->all();
  352.         $user        $this->getUser();
  353.         //$rendu = $this->renderView('Rangements/Rangement/ajouter.html.twig', array('fabrication' => $fabrication));
  354.         $rendu $this->renderView('GestionComerciale/FabricationSimplifie/reception-emplacement.html.twig', ['fabrication' => $fabrication]);
  355.         return new Response(json_encode(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]));
  356.     }
  357.     /**
  358.      * @Route("/fabrication-simplifie-emplacement/fraisage/reception/{id}", name="dtc_fabrication_simplifie_fraisage_reception_emplacement")
  359.      */
  360.     public function receptionnerEmplacementAction(Request $requestFabrication $fabricationEntityManagerInterface $emTranslatorInterface $translator)
  361.     {
  362.         $titre_modal $translator->trans("Ou allez-vous déposer la marchandise fabriquée ?");
  363.         $get         $request->query->all();
  364.         $user        $this->getUser();
  365.         $codeBarre   trim($request->request->get('codeBarre'));
  366.         if ($request->isMethod('post')) {
  367.             if ( ! empty($request->request->get('codeBarre'))) {
  368.                 $niveau      1;
  369.                 $emplacement $em->getRepository(NiveauUn::class)->findOneBy(['codeBarres' => $codeBarre]);
  370.                 if ( ! is_object($emplacement)) {
  371.                     $emplacement $em->getRepository(NiveauDeux::class)->findOneBy(['codeBarres' => $codeBarre]);
  372.                     $niveau++;
  373.                 }
  374.                 if ( ! is_object($emplacement)) {
  375.                     $emplacement $em->getRepository(NiveauTrois::class)->findOneBy(['codeBarres' => $codeBarre]);
  376.                     $niveau++;
  377.                 }
  378.                 if ( ! is_object($emplacement)) {
  379.                     $emplacement $em->getRepository(NiveauQuatre::class)->findOneBy(['codeBarres' => $codeBarre]);
  380.                     $niveau++;
  381.                 }
  382.                 if (is_object($emplacement)) {
  383.                     $donneesEmplacement = [
  384.                         'niveauUn'     => '',
  385.                         'niveauDeux'   => '',
  386.                         'niveauTrois'  => '',
  387.                         'niveauQuatre' => '',
  388.                     ];
  389.                     if ($niveau == 1) {
  390.                         $donneesEmplacement['niveauUn'] = $emplacement->getId();
  391.                     }
  392.                     if ($niveau == 2) {
  393.                         if (is_object($emplacement->getNiveauUn())) {
  394.                             $donneesEmplacement['niveauUn'] = $emplacement->getNiveauUn()->getId();
  395.                         }
  396.                         $donneesEmplacement['niveauDeux'] = $emplacement->getId();
  397.                     }
  398.                     if ($niveau == 3) {
  399.                         if (is_object($emplacement->getNiveauUn())) {
  400.                             $donneesEmplacement['niveauUn'] = $emplacement->getNiveauUn()->getId();
  401.                         }
  402.                         if (is_object($emplacement->getNiveauDeux())) {
  403.                             $donneesEmplacement['niveauDeux'] = $emplacement->getNiveauDeux()->getId();
  404.                         }
  405.                         $donneesEmplacement['niveauTrois'] = $emplacement->getId();
  406.                     }
  407.                     if ($niveau == 4) {
  408.                         if (is_object($emplacement->getNiveauUn())) {
  409.                             $donneesEmplacement['niveauUn'] = $emplacement->getNiveauUn()->getId();
  410.                         }
  411.                         if (is_object($emplacement->getNiveauDeux())) {
  412.                             $donneesEmplacement['niveauDeux'] = $emplacement->getNiveauDeux()->getId();
  413.                         }
  414.                         if (is_object($emplacement->getNiveauTrois())) {
  415.                             $donneesEmplacement['niveauTrois'] = $emplacement->getNiveauTrois()->getId();
  416.                         }
  417.                         $donneesEmplacement['niveauQuatre'] = $emplacement->getId();
  418.                     }
  419.                     return new JsonResponse(
  420.                         [
  421.                             'rendu'       => '',
  422.                             'valide'      => '0',
  423.                             'url'         => '',
  424.                             'titre'       => '',
  425.                             'type'        => 'callBackEmplacementFabrication',
  426.                             'emplacement' => $donneesEmplacement,
  427.                         ]
  428.                     );
  429.                 }
  430.             }
  431.             $this->addFlash('warning''Emplacement non reconnu ('.$request->request->get('codeBarre').').');
  432.         }
  433.         $rendu $this->renderView('GestionComerciale/FabricationSimplifie/reception-emplacement.html.twig', ['fabrication' => $fabrication]);
  434.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  435.     }
  436.     /**
  437.      * @Route("/fabrication-simplifie/fraisage/liste/", name="dtc_fabrication_simplifie_fraisage_liste")
  438.      */
  439.     public function listFabricationMultipleFraisage(Request                $request$fabricationParente ''$fabricationMultiple ''$prestation ''$commandeFournisseur '',
  440.                                                     EntityManagerInterface $em,
  441.                                                     Datatable              $datatableTranslatorInterface $translator
  442.     ) {
  443.         $this->datatableOFM($request$datatable$translatorFabrication::DEDUCTIVE);
  444.         $tableauClassColonne = [];
  445.         $tableauClassColonne   = [];
  446.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [0], "visible" => false"orderable" => false];
  447.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [1], "visible" => true"orderable" => false];
  448.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [2], "visible" => true"orderable" => true];
  449.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [3], "visible" => true"orderable" => true];
  450.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [4], "visible" => true"orderable" => true];
  451. //        $tableauClassColonne[] = ["className" => "colonne_id", "targets" => [5], "visible" => true, "orderable" => true];
  452. //        $tableauClassColonne[] = ["className" => "colonne_id text-center", "targets" => [6], "visible" => true, "orderable" => true];
  453. //        $tableauClassColonne[] = ["className" => "colonne_id text-center", "targets" => [7], "visible" => true, "orderable" => true];
  454.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [5], "visible" => true"orderable" => true];
  455.         $tableauClassColonne[] = ["className" => "colonne_id text-left""targets" => [6], "visible" => true"orderable" => true];
  456. //        $tableauClassColonne[] = ["className" => "colonne_id", "targets" => [7], "visible" => true, "orderable" => false];
  457.         $prestationId        $request->query->get('prestationId');
  458.         $ref_bloquante       $request->query->get('ref_bloquante');
  459.         $ref_bloquante_label $request->query->get('ref_bloquante_label');
  460.         $fabricable          $request->query->get('fabricable');
  461.         $type                $request->query->get('type');
  462.         //if($fabricable == 1) $fabricable = 0; else $fabricable = 1;
  463.         $repo_article      $em->getRepository(Article::class);
  464.         $repo_type_article $em->getRepository(Type::class);
  465.         if ($fabricationParente != '' || $fabricationMultiple != '' || $prestation != '' || $commandeFournisseur != '') {
  466.             $template 'GestionComerciale/FabricationSimplifie/lister-datatable.html.twig';
  467.         } else {
  468.             $template 'GestionComerciale/FabricationSimplifie/lister.html.twig';
  469.         }
  470.         return $this->render($template, [
  471.             'tableauClassColonne' => $tableauClassColonne,
  472.             'fabricationParente'  => $fabricationParente,
  473.             'fabricationMultiple' => $fabricationMultiple,
  474.             'typePrestations'     => $repo_article->findBy(['prestation' => 1], ['libelle' => 'ASC']),
  475.             'prestationId'        => $prestationId,
  476.             'prestation'          => $prestation,
  477.             'commandeFournisseur' => $commandeFournisseur,
  478.             'ref_bloquante'       => $ref_bloquante,
  479.             'ref_bloquante_label' => $ref_bloquante_label,
  480.             'fabricable'          => $fabricable,
  481.             'type'                => $type,
  482.             'typesArticle'        => $repo_type_article->findAll(),
  483.         ]);
  484.     }
  485.     /**
  486.      * @Route("/fabrication-simplifie/fraisage/desassemblage/recherche/", name="dtc_fabrication_simplifie_fraisage_disassembled_recherche_etiquette")
  487.      */
  488.     public function searchFromEtiquette(Request $requestFabricationRepository $fabricationRepository
  489.     ) {
  490.         $fabricationType $request->query->getInt('step'1);
  491.         $form            $this->createForm(SearchEtiquetteType::class);
  492.         $form->handleRequest($request);
  493.         if ($form->isSubmitted() && $form->isValid()) {
  494.             $data                  $form->getData();
  495.             $etiqueetteFabrication $data['etiquette'];
  496.             $fabrication           $fabricationRepository->searchFromEtiquette($etiqueetteFabrication, ($fabricationType === 1) ? 1);
  497.             if ($fabrication === null) {
  498.                 $this->addFlash('warning''Aucune fabrication avec cette etiquette');
  499.                 return $this->redirectToRoute('dtc_fabrication_simplifie_disassembled_recherche_etiquette', ['step' => $fabricationType]);
  500.             } else {
  501.                 if ($fabricationType === 1) {
  502.                     return $this->render(
  503.                         'GestionComerciale/FabricationSimplifie/desassemblage.html.twig',
  504.                         [
  505.                             'form'        => $form->createView(),
  506.                             'fabrication' => $fabrication,
  507.                         ]
  508.                     );
  509.                 } else {
  510.                     return $this->redirectToRoute(
  511.                         'dtc_fabrication_simplifie_reception',
  512.                         [
  513.                             'id' => $fabrication->getId(),
  514.                         ]
  515.                     );
  516.                 }
  517.             }
  518.         }
  519.         return $this->render('GestionComerciale/FabricationSimplifie/recherche_etiquette.html.twig', [
  520.             'form' => $form->createView(),
  521.         ]);
  522.     }
  523.     /**
  524.      * @Route("/fabrication-simplifie/fraisage/desassemblage/{id}", name="dtc_fabrication_simplifie_desassemblage_fraisage")
  525.      */
  526.     public function setFabicrationDisassembled(Request $requestFabrication $fabricationEntityManagerInterface $entityManagerFabricationRepository $fabricationRepository)
  527.     {
  528.         $fabrication->setStatutFabrication($entityManager->getReference(StatutFabrication::class, 9));
  529.         $entityManager->flush();
  530.         $this->addFlash('success''Fabrication mis a jour avec succes');
  531.         if ($fabricationRepository->getNbFabricationAdditiveNotDisasembled($fabrication->getFabricationMultiple()->getId()) === 0) {
  532.             $this->addFlash('success''Toutes les fabrication additives sont désassemblées');
  533.             $fabrication->getFabricationMultiple()->setStatutFabricationMultiple($entityManager->getReference(StatutFabrication::class, 8));
  534.             $entityManager->flush();
  535.             return $this->redirectToRoute('dtcfo_homepage', ['ms' => 1]);
  536.         }
  537.         return $this->redirectToRoute('dtc_fabrication_simplifie_fraisage_liste', ['fabricationMultiple' => $fabrication->getFabricationMultiple()->getId()]);
  538.     }
  539. }