src/Controller/GestionComerciale/FabricationSimplifieAdditiveController.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 FabricationSimplifieAdditiveController extends AbstractController
  34. {
  35.     /**
  36.      * @Route("/fabrication-simplifie/additive/liste", name="dtc_fabrication_additive_simplifie_liste")
  37.      */
  38.     public function listerAdditiveAction(Request   $request$fabricationParente ''$fabricationMultiple ''$prestation ''$commandeFournisseur ''EntityManagerInterface $em,
  39.                                          Datatable $datatableTranslatorInterface $translator,FabricationService $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.             $statut_atte_options $em->getRepository(StatutFabrication::class)->find(9);
  54.             $fab_multiple_obj $em->getRepository(FabricationMultiple::class)->find($fabricationMultiple);
  55.             foreach($fab_multiple_obj->getFabrications() as $fabrication)
  56.             {
  57.                 if (is_object($fabrication)) {
  58.                     if($fabrication->getStatutFabrication()->getId() != 10) {
  59.                         $this->addFlash('warning'"Impossible de désassembler l'élément ".$fabrication->getArticleCommandeCommandeClient()->getArticle()->getLibelle()." de la commande ".$fabrication->getArticleCommandeCommandeClient()->getCommande()->getReference()." car le statut de la fabrication est ".$fabrication->getStatutFabrication()->getLibelle().".");
  60.                     }
  61.                     else {
  62.                         $fabrication->setStatutFabrication($statut_atte_options);
  63.                         $em->persist($fabrication);
  64.                         $etiquettes[]=$fabrication->getFabricationEtiquette();
  65.                         $donnees=[];
  66.                         $donnees["message"]=" : ".$fabrication->getReference()." ".$fabrication->getArticleCommandeCommandeClient()->getReference()." (id:".$fabrication->getArticleCommandeCommandeClient()->getId().")";
  67.                         $commandeService->creerHistorique($fabrication->getArticleCommandeCommandeClient()->getCommande(), 'desassemblage_disque',$donnees);
  68.                         if ($repo->getNbFabricationAdditiveNotDisasembled($fabrication->getFabricationMultiple()->getId()) === 0) {
  69.                             $fabrication->getFabricationMultiple()->setStatutFabricationMultiple($em->getReference(StatutFabrication::class, 8));
  70.                         }
  71.                     }
  72.                 }
  73.             }
  74.             $em->flush();
  75.             $this->addFlash('notice'"Désassemblage des éléments réalisé avec succès !");
  76.             return $this->redirectToRoute('dtc_fabrication_multiple_simplifie_additive_liste', ['typeFabrication'=>1,'step' => 2,"etiquette"=>$etiquettes]);
  77.         }
  78.         $tableauClassColonne   = [];
  79.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [0], "visible" => false"orderable" => false];
  80.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [1], "visible" => true"orderable" => false];
  81.         $tableauClassColonne[] = ["className" => "colonne_id text-left""targets" => [2], "visible" => true"orderable" => true];
  82.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [3], "visible" => true"orderable" => true];
  83.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [4], "visible" => true"orderable" => true];
  84.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [5], "visible" => true"orderable" => true];
  85. //        $tableauClassColonne[] = ["className" => "colonne_id text-center", "targets" => [6], "visible" => true, "orderable" => true];
  86. //        $tableauClassColonne[] = ["className" => "colonne_id text-center", "targets" => [7], "visible" => true, "orderable" => true];
  87.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [5], "visible" => true"orderable" => true];
  88.         $tableauClassColonne[] = ["className" => "colonne_id text-left""targets" => [6], "visible" => true"orderable" => true];
  89.         $tableauClassColonne[] = ["className" => "colonne_id text-center couleur_boite""targets" => [8], "visible" => true"orderable" => true];
  90.         $tableauClassColonne[] = ["className" => "colonne_id ""targets" => [9], "visible" => true"orderable" => true];
  91. //        $tableauClassColonne[] = ["className" => "colonne_id", "targets" => [7], "visible" => true, "orderable" => false];
  92.         //if($fabricable == 1) $fabricable = 0; else $fabricable = 1;
  93.         $repo_article              $em->getRepository(Article::class);
  94.         $repo_type_article         $em->getRepository(Type::class);
  95.         $repo_fabrication_multiple $em->getRepository(FabricationMultiple::class);
  96. //        if ($fabricationParente != '' || $fabricationMultiple != '' || $prestation != '' || $commandeFournisseur != '') {
  97. ////            $template = 'GestionComerciale/FabricationSimplifie/lister-datatable.html.twig';
  98. //        } else {
  99.         $template 'GestionComerciale/FabricationSimplifie/additive.lister.html.twig';
  100. //        }
  101.         return $this->render($template, [
  102.             'tableauClassColonne'       => $tableauClassColonne,
  103.             'fabricationParente'        => $fabricationParente,
  104.             'fabricationMultiple'       => $fabricationMultiple,
  105.             'fabricationMultipleEntity' => (is_numeric($fabricationMultiple)) ? $repo_fabrication_multiple->find($fabricationMultiple) : null,
  106.             'typePrestations'           => $repo_article->findBy(['prestation' => 1], ['libelle' => 'ASC']),
  107.             'prestationId'              => $prestationId,
  108.             'prestation'                => $prestation,
  109.             'commandeFournisseur'       => $commandeFournisseur,
  110.             'ref_bloquante'             => $ref_bloquante,
  111.             'ref_bloquante_label'       => $ref_bloquante_label,
  112.             'fabricable'                => $fabricable,
  113.             'type'                      => $type,
  114.             'typesArticle'              => $repo_type_article->findAll(),
  115.         ]);
  116.     }
  117.     /**
  118.      * Grid action
  119.      * @return Response
  120.      */
  121.     /**
  122.      * @Route("/fabrication-simplifie/additive/grid", name="dtc_fabrication_simplifie_additive_liste_grid")
  123.      */
  124.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  125.     {
  126.         $fabricationParente  $request->query->get('fabricationParente');
  127.         $fabricationMultiple $request->query->get('fabricationMultiple');
  128.         $prestationId        $request->query->get('prestationId');
  129.         $prestation          $request->query->get('prestation');
  130.         $commandeFournisseur $request->query->get('commandeFournisseur');
  131.         $ref_bloquante       $request->query->get('ref_bloquante');
  132.         $fabricable          $request->query->get('fabricable');
  133.         $type                $request->query->get('type');
  134.         $typeFabrication     $request->query->get('typeFabrication');
  135.         return $this->datatable(
  136.             $request,
  137.             $datatable,
  138.             $translator,
  139.             $fabricationParente,
  140.             $fabricationMultiple,
  141.             $prestationId,
  142.             $prestation,
  143.             $commandeFournisseur,
  144.             $ref_bloquante,
  145.             $fabricable,
  146.             $type,
  147.             $typeFabrication
  148.         )->execute();
  149.     }
  150.     /**
  151.      * set datatable configs
  152.      *
  153.      * @return \App\Library\Datatable\Util\Datatable
  154.      */
  155.     private function datatable(Request $requestDatatable $datatableTranslatorInterface $translator$fabricationParente ''$fabricationMultiple ''$prestationId '',
  156.                                        $prestation ''$commandeFournisseur ''$ref_bloquante ''$fabricable '',
  157.                                        $type ''$typeFabrication ''
  158.     ) {
  159.         $get $request->query->all();
  160.         //print_r($get);
  161.         $parameters = [];
  162.         $datatable
  163.             ->setDatatableId('dta-desassemblage-ofm')
  164.             ->setEntity(Fabrication::class, "f")
  165.                   ->setFields(
  166.                       [
  167.                           $translator->trans("Actions")             => 'f.id',
  168.                           $translator->trans("OF") => 'f.reference',
  169.                           $translator->trans("Date") => 'f.dateFabrication',
  170.                           $translator->trans("Commande") => 'cde.reference',
  171.                           $translator->trans("Client") => 'clt.nom',
  172.                           $translator->trans("Libellé")             => "a.libelle",
  173.                           $translator->trans("Réf article")         => "a.reference",
  174.                           $translator->trans("TRP")       => "tr.libelle",
  175.                           $translator->trans("COMM CLIENT")       => "cde.commentaire",
  176.                           $translator->trans("FLAG")                 => "ac.fabricationEtiquette",
  177.                           $translator->trans("BOITE") => 'b.libelle',
  178.                           $translator->trans("STL") => 'fi.id',
  179.                           "_identifier_" => 'f.id',
  180.                       ]
  181.                   )
  182.             //->addJoin('ac.commande', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  183.             ->addJoin('f.statutFabrication''s'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  184.             ->addJoin('f.article''a'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  185.             ->addJoin('f.articleCommandeCommandeClient''ac'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  186.             ->addJoin('ac.commande''cde'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  187.             ->addJoin('cde.transporteur''tr'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  188.             ->addJoin('cde.client''clt'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  189.             ->addJoin('ac.fichier''fi'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  190.             ->addJoin('f.fabricationMultiple''fm'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  191.             ->addJoin('a.type''t'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  192.             ->addJoin('a.caisse''b'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  193.             ->setRenderers(
  194.                 [
  195.                     => [
  196.                         'view'   => 'FO/DataTable/actions-interface-simplifie.html.twig',
  197.                         'params' => [
  198.                             'afficher_icone_reception' => false,
  199.                             //'edit_route'               => 'dtc_fabrication_simplifie_fraisage_reception',
  200.                             //'supprimer_route'    => 'dtc_fabrication_supprimer',
  201.                             'objet'                    => Fabrication::class,
  202.                             'fabrication'              => true,
  203.                             'afficher_icone_anomalie_of'              => true,
  204.                             'table'              => 'dta-desassemblage-ofm',
  205.                             'fabricationMultiple'      => $fabricationMultiple,
  206.                         ],
  207.                     ],
  208.                     => [
  209.                         'view' => 'FO/DataTable/date.html.twig',//'DTCFO/DataTable/choix_fournisseur_controller.html.twig'
  210.                     ],
  211.                     => [
  212.                         'view'   => 'FO/DataTable/client.html.twig',
  213.                         'params' => [
  214.                             'edit_route'   => 'dtc_client_modifier',
  215.                             'typeDocument' => 'client',
  216.                         ],
  217.                     ],
  218.                     10  => [
  219.                         'view' => 'FO/DataTable/couleur_boite.html.twig',
  220.                     ],
  221.                     11  => [
  222.                         'view' => 'FO/DataTable/article_commande_file.html.twig',
  223.                     ],
  224.                 ]
  225.             )
  226.                   ->setSearch(true)
  227.             //->setSearchFields(array(3,4,5,7,8,9,10,11))
  228.                   ->setSearchFields([])
  229.                   ->setOrder('f.dateFabrication''ASC')
  230.             ->setMultiple(
  231.                 [
  232.                     'fabriquer' => [
  233.                         'title' => 'Creer une fabrication',
  234.                         'route' => 'dtc_fabrication_fraisage_simplifie_liste',
  235.                     ],
  236.                 ]
  237.             );
  238.         $where 's.id = 10';
  239.         //$parametres['article']= 'test';
  240.         if ($fabricable != '') {
  241.             $where .= ' AND f.fabriquable = 2';
  242.         }
  243.         $where .= ' AND f.typeFabrication = :typeFabrication';
  244.         $where .= ' AND f.raisonAnomalie is null ';
  245.         $parameters['typeFabrication'] = Fabrication::ADDITIVE;
  246.         if ($fabricationMultiple != '') {
  247.             //$datatable->addJoin('f.fabricationMultiple', 'fm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  248.             $where .= ' AND fm.id = '.$fabricationMultiple;
  249.         }
  250.         if ($where != '') {
  251.             $datatable->setWhere($where$parameters);
  252.         }
  253.         return $datatable;
  254.     }
  255.     /**
  256.      * @Route("/fabrication-simplifie/additive/reception/{id}", name="dtc_fabrication_simplifie_additive_reception")
  257.      */
  258.     public function receptionnerAction(Request $requestFabrication $fabricationEntityManagerInterface $emTranslatorInterface $translatorFabricationService $fabricationService)
  259.     {
  260.         $pid getmypid();
  261.         $user $this->getUser();
  262.         //$fabrication->setUtilisateur($user);
  263.         $errors           "";
  264.         $repo_utilisateur $em->getRepository(Utilisateur::class);
  265.         $repo_commande    $em->getRepository(Commande::class);
  266.         $utilisateurs     $repo_utilisateur->findAll();
  267.         if ($request->isMethod('POST')) {
  268.             $post $request->request->all();
  269.             $articles = [
  270.                 'ids'          => $request->request->get('ids'),
  271.                 'commentaires' => $request->request->get('commentaires'),
  272.                 'qtes'         => $request->request->get('qtes'),
  273.                 'qtesCmdes'    => $request->request->get('qtesCmdes'),
  274.                 'pumps'        => $request->request->get('pumps'),
  275.                 'cumps'        => $request->request->get('cumps'),
  276.                 'typesMvt'     => $request->request->get('typesMvt'),
  277.                 'emplacement'  => $request->request->get('emplacement'),
  278.             ];
  279.             $valeurs  = [
  280.                 "articles"     => $articles,
  281.                 'niveauUn'     => $request->request->get('niveauUn'),
  282.                 'niveauDeux'   => $request->request->get('niveauDeux'),
  283.                 'niveauTrois'  => $request->request->get('niveauTrois'),
  284.                 'niveauQuatre' => $request->request->get('niveauQuatre'),
  285.             ];
  286. //            dd($articles, $valeurs);
  287.             $equipier $repo_utilisateur->find($request->request->get('equipier'));
  288.             //Tester si la fabrication a été modifiée à la réception
  289.             // Si la fabrication a été modifiée on crée une nouvelle fabrication correspondant à cette réception et on modifie la réception existante
  290.             $newFabrication false;
  291.             foreach ($fabrication->getArticleCommande() as $ac) {
  292.                 $articleId $ac->getArticle()->getId();
  293.                 if ( ! in_array($articleId$articles['ids'])) {
  294.                     $newFabrication true;
  295.                 }
  296.             }
  297.             if ($newFabrication == true) {
  298.                 //Création de la nouvelle fabrication
  299.                 $valeurs['receptionnee'] = true;
  300.                 $newFabrication          $fabricationService->modifierFabricationEtCreerNewFabrication($fabrication$articles$equipier);
  301.                 $this->addFlash('notice'$translator->trans('Nouvel ordre de fabrication créé !'));
  302.                 $url $this->generateUrl('dtc_fabrication_modifier', ["id" => $newFabrication->getId(), 'tabs' => '#fabrications']);
  303.                 //$url = $this->generateUrl('dtc_fabrication_modifier',array("id"=>$fabrication->getId(), 'tabs'=>'#fabrications'));
  304.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  305.             } else {
  306.                 $fabricationService->creerMvtStock($fabrication$valeurs''$equipier);
  307.                 //echo 'test';
  308.                 //$this->addFlash('notice', 'Réception de la fabrication '.$fabrication->getReference().' réalisée avec succès !' );
  309.                 $url $this->generateUrl('dtc_fabrication_modifier', ["id" => $fabrication->getId()]);
  310.                 if ($request->query->get('commandeFournisseur') != '') {
  311.                     $url $this->generateUrl('dtc_commande_fournisseur_modifier', ["id" => $request->query->get('commandeFournisseur'), 'tabs' => '#fabrications']);
  312.                 } elseif ($request->query->get('fabricationMultiple') != '') {
  313.                     $url $this->generateUrl('dtc_fabrication_multiple_modifier', ["id" => $request->query->get('fabricationMultiple'), 'tabs' => '#fabrications']);
  314.                 }
  315.                 //$url = $this->generateUrl('dtc_fabrication_simplifie_liste',array());
  316.                 $url $this->generateUrl('dtcfo_interface_simplifie_validation', []);
  317.                 $route   $this->generateUrl('dtc_fabrication_simplifie_disassembled_additive_recherche_etiquette', []);
  318.                 $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>';
  319.                 $this->addFlash('notice'$translator->trans($message));
  320.                 // TODO refactor commande
  321. //                $builder = new ProcessBuilder();
  322. //                $builder->setArguments(['php', '../app/console', 'articlesComposesModifierCondHa:maj']);
  323. //                $builder->getProcess()->start();
  324.                 //exit;
  325.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  326.             }
  327.         }
  328.         $etiquettes  $repo_commande $em->getRepository(Etiquette::class)->findAll();
  329.         $titre_modal $translator->trans('Voulez-vous générer les mouvements de stock ?');
  330.         return $this->render(
  331.             'GestionComerciale/FabricationSimplifie/additive.reception.html.twig',
  332.             ['pid' => $pid'errors' => $errors'fabrication' => $fabrication'user' => $user'utilisateurs' => $utilisateurs'etiquettes' => $etiquettes]
  333.         );//'form' => $form->createView(),
  334.         //$rendu = $this->renderView('GestionComerciale/FabricationSimplifie/reception.html.twig', array('errors'=>$errors,'fabrication'=>$fabrication,'user'=>$user, 'utilisateurs'=>$utilisateurs, 'etiquettes'=>$etiquettes));//'form' => $form->createView(),
  335.         //return new Response(json_encode(array('rendu'=>$rendu,'valide'=>'0','url'=>'','titre'=>$titre_modal)), 200, array('Content-Type'=>'application/json'));
  336.     }
  337.     /**
  338.      * @Route("", name="")
  339.      */
  340.     public function ____receptionnerEmplacementAction(Request $requestFabrication $fabricationEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  341.     {
  342.         //$emplacement = $objet;
  343.         $titre_modal $translator->trans("Ou allez-vous déposer la marchandise fabriquée ?");
  344.         $get         $request->query->all();
  345.         $user        $this->getUser();
  346.         //$rendu = $this->renderView('Rangements/Rangement/ajouter.html.twig', array('fabrication' => $fabrication));
  347.         $rendu $this->renderView('GestionComerciale/FabricationSimplifie/reception-emplacement.html.twig', ['fabrication' => $fabrication]);
  348.         return new Response(json_encode(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]));
  349.     }
  350.     /**
  351.      * @Route("/fabrication-simplifie-emplacement/additive/reception/{id}", name="dtc_fabrication_simplifie_additive_reception_emplacement")
  352.      */
  353.     public function receptionnerEmplacementAction(Request $requestFabrication $fabricationEntityManagerInterface $emTranslatorInterface $translator)
  354.     {
  355.         $titre_modal $translator->trans("Ou allez-vous déposer la marchandise fabriquée ?");
  356.         $get         $request->query->all();
  357.         $user        $this->getUser();
  358.         $codeBarre   trim($request->request->get('codeBarre'));
  359.         if ($request->isMethod('post')) {
  360.             if ( ! empty($request->request->get('codeBarre'))) {
  361.                 $niveau      1;
  362.                 $emplacement $em->getRepository(NiveauUn::class)->findOneBy(['codeBarres' => $codeBarre]);
  363.                 if ( ! is_object($emplacement)) {
  364.                     $emplacement $em->getRepository(NiveauDeux::class)->findOneBy(['codeBarres' => $codeBarre]);
  365.                     $niveau++;
  366.                 }
  367.                 if ( ! is_object($emplacement)) {
  368.                     $emplacement $em->getRepository(NiveauTrois::class)->findOneBy(['codeBarres' => $codeBarre]);
  369.                     $niveau++;
  370.                 }
  371.                 if ( ! is_object($emplacement)) {
  372.                     $emplacement $em->getRepository(NiveauQuatre::class)->findOneBy(['codeBarres' => $codeBarre]);
  373.                     $niveau++;
  374.                 }
  375.                 if (is_object($emplacement)) {
  376.                     $donneesEmplacement = [
  377.                         'niveauUn'     => '',
  378.                         'niveauDeux'   => '',
  379.                         'niveauTrois'  => '',
  380.                         'niveauQuatre' => '',
  381.                     ];
  382.                     if ($niveau == 1) {
  383.                         $donneesEmplacement['niveauUn'] = $emplacement->getId();
  384.                     }
  385.                     if ($niveau == 2) {
  386.                         if (is_object($emplacement->getNiveauUn())) {
  387.                             $donneesEmplacement['niveauUn'] = $emplacement->getNiveauUn()->getId();
  388.                         }
  389.                         $donneesEmplacement['niveauDeux'] = $emplacement->getId();
  390.                     }
  391.                     if ($niveau == 3) {
  392.                         if (is_object($emplacement->getNiveauUn())) {
  393.                             $donneesEmplacement['niveauUn'] = $emplacement->getNiveauUn()->getId();
  394.                         }
  395.                         if (is_object($emplacement->getNiveauDeux())) {
  396.                             $donneesEmplacement['niveauDeux'] = $emplacement->getNiveauDeux()->getId();
  397.                         }
  398.                         $donneesEmplacement['niveauTrois'] = $emplacement->getId();
  399.                     }
  400.                     if ($niveau == 4) {
  401.                         if (is_object($emplacement->getNiveauUn())) {
  402.                             $donneesEmplacement['niveauUn'] = $emplacement->getNiveauUn()->getId();
  403.                         }
  404.                         if (is_object($emplacement->getNiveauDeux())) {
  405.                             $donneesEmplacement['niveauDeux'] = $emplacement->getNiveauDeux()->getId();
  406.                         }
  407.                         if (is_object($emplacement->getNiveauTrois())) {
  408.                             $donneesEmplacement['niveauTrois'] = $emplacement->getNiveauTrois()->getId();
  409.                         }
  410.                         $donneesEmplacement['niveauQuatre'] = $emplacement->getId();
  411.                     }
  412.                     return new JsonResponse(
  413.                         [
  414.                             'rendu'       => '',
  415.                             'valide'      => '0',
  416.                             'url'         => '',
  417.                             'titre'       => '',
  418.                             'type'        => 'callBackEmplacementFabrication',
  419.                             'emplacement' => $donneesEmplacement,
  420.                         ]
  421.                     );
  422.                 }
  423.             }
  424.             $this->addFlash('warning''Emplacement non reconnu ('.$request->request->get('codeBarre').').');
  425.         }
  426.         $rendu $this->renderView('GestionComerciale/FabricationSimplifie/reception-emplacement.html.twig', ['fabrication' => $fabrication]);
  427.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  428.     }
  429.     /**
  430.      * @Route("/fabrication-simplifie/additive/liste/", name="dtc_fabrication_simplifie_additive_liste")
  431.      */
  432.     public function listFabricationMultipleAdditive(Request                $request$fabricationParente ''$fabricationMultiple ''$prestation ''$commandeFournisseur '',
  433.                                                     EntityManagerInterface $em,
  434.                                                     Datatable              $datatableTranslatorInterface $translator
  435.     ) {
  436.         $this->datatableOFM($request$datatable$translatorFabrication::ADDITIVE);
  437.         $tableauClassColonne = [];
  438.         $tableauClassColonne   = [];
  439.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [0], "visible" => false"orderable" => false];
  440.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [1], "visible" => true"orderable" => false];
  441.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [2], "visible" => true"orderable" => true];
  442.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [3], "visible" => true"orderable" => true];
  443.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [4], "visible" => true"orderable" => true];
  444. //        $tableauClassColonne[] = ["className" => "colonne_id", "targets" => [5], "visible" => true, "orderable" => true];
  445. //        $tableauClassColonne[] = ["className" => "colonne_id text-center", "targets" => [6], "visible" => true, "orderable" => true];
  446. //        $tableauClassColonne[] = ["className" => "colonne_id text-center", "targets" => [7], "visible" => true, "orderable" => true];
  447.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [5], "visible" => true"orderable" => true];
  448.         $tableauClassColonne[] = ["className" => "colonne_id text-left""targets" => [6], "visible" => true"orderable" => true];
  449. //        $tableauClassColonne[] = ["className" => "colonne_id", "targets" => [7], "visible" => true, "orderable" => false];
  450.         $prestationId        $request->query->get('prestationId');
  451.         $ref_bloquante       $request->query->get('ref_bloquante');
  452.         $ref_bloquante_label $request->query->get('ref_bloquante_label');
  453.         $fabricable          $request->query->get('fabricable');
  454.         $type                $request->query->get('type');
  455.         //if($fabricable == 1) $fabricable = 0; else $fabricable = 1;
  456.         $repo_article      $em->getRepository(Article::class);
  457.         $repo_type_article $em->getRepository(Type::class);
  458.         if ($fabricationParente != '' || $fabricationMultiple != '' || $prestation != '' || $commandeFournisseur != '') {
  459.             $template 'GestionComerciale/FabricationSimplifie/lister-datatable.html.twig';
  460.         } else {
  461.             $template 'GestionComerciale/FabricationSimplifie/lister.html.twig';
  462.         }
  463.         return $this->render($template, [
  464.             'tableauClassColonne' => $tableauClassColonne,
  465.             'fabricationParente'  => $fabricationParente,
  466.             'fabricationMultiple' => $fabricationMultiple,
  467.             'typePrestations'     => $repo_article->findBy(['prestation' => 1], ['libelle' => 'ASC']),
  468.             'prestationId'        => $prestationId,
  469.             'prestation'          => $prestation,
  470.             'commandeFournisseur' => $commandeFournisseur,
  471.             'ref_bloquante'       => $ref_bloquante,
  472.             'ref_bloquante_label' => $ref_bloquante_label,
  473.             'fabricable'          => $fabricable,
  474.             'type'                => $type,
  475.             'typesArticle'        => $repo_type_article->findAll(),
  476.         ]);
  477.     }
  478.     /**
  479.      * @Route("/fabrication-simplifie/additive/desassemblage/recherche/", name="dtc_fabrication_simplifie_disassembled_additive_recherche_etiquette")
  480.      */
  481.     public function searchFromEtiquette(Request $requestFabricationRepository $fabricationRepository,Datatable $datatableTranslatorInterface $translator,FabricationService $fabricationService
  482.         CommandeService $commandeService
  483.     ) {
  484.         $this->datatableAttenteOptions($request$datatable$translator);
  485.         $tableauClassColonne = [];
  486.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [0], "visible" => false"orderable" => false];
  487.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [1], "visible" => true"orderable" => false];
  488.         $tableauClassColonne[] = ["className" => "text-center colonne_id""targets" => [2], "visible" => true"orderable" => true];
  489.         $tableauClassColonne[] = ["className" => "text-center colonne_id""targets" => [3], "visible" => true"orderable" => true];
  490.         $tableauClassColonne[] = ["className" => "text-center colonne_id""targets" => [8], "visible" => true"orderable" => true];
  491.         $tableauClassColonne[] = ["className" => "text-center colonne_id""targets" => [9], "visible" => true"orderable" => true];
  492.         $fabricationType $request->query->getInt('step'1);
  493.         $form            $this->createForm(SearchEtiquetteType::class);
  494.         $form->handleRequest($request);
  495.         if ($form->isSubmitted() && $form->isValid()) {
  496.             $data                  $form->getData();
  497.             $etiqueetteFabrication $data['etiquette'];
  498.             $fabrication           $fabricationRepository->searchFromEtiquette($etiqueetteFabrication, [9]);
  499.             if ($fabrication === null) {
  500.                 $this->addFlash('warning''Aucune fabrication avec le flag : '.$etiqueetteFabrication);
  501.                 return $this->redirectToRoute('dtc_fabrication_simplifie_disassembled_additive_recherche_etiquette');
  502.             } else {
  503.                 if (is_object($fabrication)) {
  504.                     //echo "<div>AA ".$fabrication->getReference().":".$fabrication->getStatutFabrication()->getLibelle()."</div>";
  505.                     $fabricationService->creerMvtStock($fabrication);
  506.                     $etiquettes[]=$fabrication->getFabricationEtiquette();
  507.                     $donnees=[];
  508.                     $donnees["message"]=" : ".$fabrication->getReference()." ".$fabrication->getArticleCommandeCommandeClient()->getReference()." (id:".$fabrication->getArticleCommandeCommandeClient()->getId().")";
  509.                     $commandeService->creerHistorique($fabrication->getArticleCommandeCommandeClient()->getCommande(), 'application_options',$donnees);
  510.                     $this->addFlash('notice'"Application des options réalisé avec succès !");
  511.                 }
  512.                 return $this->redirectToRoute(
  513.                     'dtc_fabrication_simplifie_disassembled_additive_recherche_etiquette',
  514.                     [
  515.                         'id' => $fabrication->getId(),
  516.                         "etiquette"=>$etiquettes
  517.                     ]
  518.                 );
  519.             }
  520.         }
  521.         $etiquettes  $request->query->get('etiquette');
  522.         return $this->render('GestionComerciale/FabricationSimplifie/recherche_etiquette.html.twig', [
  523.             'form' => $form->createView(),
  524.             'tableauClassColonne' => $tableauClassColonne,
  525.             'etiquettes' => $etiquettes,
  526.         ]);
  527.     }
  528.     /**
  529.      * @Route("/fabrication-simplifie/additive/desassemblage/{id}", name="dtc_fabrication_simplifie_desassemblage_additive")
  530.      */
  531.     public function setFabicrationDisassembled(Request $requestFabrication $fabricationEntityManagerInterface $entityManagerFabricationRepository $fabricationRepository)
  532.     {
  533.         $fabrication->setStatutFabrication($entityManager->getReference(StatutFabrication::class, 9));
  534.         $entityManager->flush();
  535.         $this->addFlash('success''Fabrication mis a jour avec succes');
  536.         if ($fabricationRepository->getNbFabricationAdditiveNotDisasembled($fabrication->getFabricationMultiple()->getId()) === 0) {
  537.             $this->addFlash('success''Toutes les fabrication additives sont désassemblées');
  538.             $fabrication->getFabricationMultiple()->setStatutFabricationMultiple($entityManager->getReference(StatutFabrication::class, 8));
  539.             $entityManager->flush();
  540.             return $this->redirectToRoute('dtcfo_homepage', ['ms' => 1]);
  541.         }
  542.         return $this->redirectToRoute('dtc_fabrication_additive_simplifie_liste', ['fabricationMultiple' => $fabrication->getFabricationMultiple()->getId()]);
  543.     }
  544.     /**
  545.      * set datatable configs
  546.      *
  547.      * @return \App\Library\Datatable\Util\Datatable
  548.      */
  549.     private function datatableAttenteOptions(Request $requestDatatable $datatableTranslatorInterface $translator$fabricationParente ''$fabricationMultiple ''$prestationId '',
  550.                                        $prestation ''$commandeFournisseur ''$ref_bloquante ''$fabricable '',
  551.                                        $type ''$typeFabrication ''
  552.     ) {
  553.         $get $request->query->all();
  554.         $parameters = [];
  555.         $datatable->setEntity(Fabrication::class, "f")
  556.             ->setDatatableId('dta-application-options')
  557.             ->setFields(
  558.                 [
  559.                     $translator->trans("Actions")             => 'f.id',
  560.                     $translator->trans("Référence") => 'f.reference',
  561.                     $translator->trans("Date de fabrication") => 'f.dateFabrication',
  562.                     $translator->trans("Client") => 'clt.nom',
  563.                     $translator->trans("Commande") => 'cde.reference',
  564.                     $translator->trans("Réf article")         => "a.reference",
  565.                     $translator->trans("Libellé")             => "a.libelle",
  566.                     $translator->trans("TRP")       => "tr.libelle",
  567.                     $translator->trans("COMM CLIENT")       => "cde.commentaire",
  568.                     $translator->trans("FLAG")           => "f.fabricationEtiquette",
  569.                     $translator->trans("Boite")               => "c.libelle",
  570.                      $translator->trans("Statut") => 's.libelle',
  571.                     $translator->trans("STL")     => "fi.id",
  572.                     "_identifier_" => 'f.id',
  573.                 ]
  574.             )
  575.             //->addJoin('ac.commande', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  576.             ->addJoin('f.statutFabrication''s'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  577.             ->addJoin('f.article''a'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  578.             ->addJoin('a.caisse''c'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  579.             ->addJoin('f.articleCommandeCommandeClient''ac'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  580.             ->addJoin('ac.fichier''fi'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  581.             ->addJoin('ac.commande''cde'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  582.             ->addJoin('cde.transporteur''tr'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  583.             ->addJoin('cde.client''clt'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  584.             ->addJoin('f.fabricationMultiple''fm'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  585.             ->addJoin('a.type''t'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  586.             ->setRenderers(
  587.                 [
  588.                     => [
  589.                         'view'   => 'FO/DataTable/actions-interface-simplifie.html.twig',
  590.                         'params' => [
  591.                             'afficher_icone_reception' => false,
  592.                             '_edit_route'               => 'dtc_fabrication_simplifie_desassemblage_additive',
  593.                             //'supprimer_route'    => 'dtc_fabrication_supprimer',
  594.                             'objet'                    => Fabrication::class,
  595.                             'fabrication'              => true,
  596.                             'commandeFournisseur'      => $commandeFournisseur,
  597.                             'fabricationMultiple'      => $fabricationMultiple,
  598.                             'afficher_icone_anomalie_of'              => true,
  599.                             'table'              => "dta-application-options",
  600.                         ],
  601.                     ],
  602.                     => [
  603.                         'view' => 'FO/DataTable/heure.html.twig',//'DTCFO/DataTable/choix_fournisseur_controller.html.twig'
  604.                     ],
  605.                     => [
  606.                         'view'   => 'FO/DataTable/client.html.twig',
  607.                         'params' => [
  608.                             'edit_route'   => 'dtc_client_modifier',
  609.                             'typeDocument' => 'client',
  610.                         ],
  611.                     ],
  612.                     => [
  613.                         'view' => 'FO/DataTable/commentaire-commande.html.twig',//'DTCFO/DataTable/choix_fournisseur_controller.html.twig'
  614.                     ],
  615.                     10 => [
  616.                         'view'   => 'FO/DataTable/couleur_boite.html.twig',
  617.                         'params' => [
  618.                         ],
  619.                     ],
  620.                    12 => [
  621.                         'view' => 'FO/DataTable/article_commande_file.html.twig',
  622.                     ],
  623.                     /*
  624.                     2 => [
  625.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  626.                         'params' => ['edit_route' => 'dtc_fabrication_simplifie_additive_reception', 'nouvelOnglet' => false],
  627.                     ],
  628.                     */
  629.                 ]
  630.             )
  631.             ->setSearch(true)
  632.             ->setSearchFields([])
  633.             ->setOrder('f.dateFabrication''ASC')
  634.             ->setMultiple(
  635.                 [
  636.                     'fabriquer' => [
  637.                         'title' => 'Creer une fabrication',
  638.                         'route' => 'dtc_fabrication_fraisage_simplifie_liste',
  639.                     ],
  640.                 ]
  641.             );
  642.         $where 's.id = 9';
  643.         if ($fabricable != '') {
  644.             $where .= ' AND f.fabriquable = 2';
  645.         }
  646.         $where .= ' AND f.typeFabrication = :typeFabrication';
  647.         $parameters['typeFabrication'] = Fabrication::ADDITIVE;
  648.         if ($fabricationMultiple != '') {
  649.             $where .= ' AND fm.id = '.$fabricationMultiple;
  650.         }
  651.         if ($where != '') {
  652.             $datatable->setWhere($where$parameters);
  653.         }
  654.         return $datatable;
  655.     }
  656.     /**
  657.      * Grid action
  658.      * @return Response
  659.      */
  660.     /**
  661.      * @Route("/fabrication-simplifie/attente-options/grid", name="dtc_fabrication_simplifie_attente_options_liste_grid")
  662.      */
  663.     public function gridAttenteOptionsAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  664.     {
  665.         $fabricationParente  $request->query->get('fabricationParente');
  666.         $fabricationMultiple $request->query->get('fabricationMultiple');
  667.         $prestationId        $request->query->get('prestationId');
  668.         $prestation          $request->query->get('prestation');
  669.         $commandeFournisseur $request->query->get('commandeFournisseur');
  670.         $ref_bloquante       $request->query->get('ref_bloquante');
  671.         $fabricable          $request->query->get('fabricable');
  672.         $type                $request->query->get('type');
  673.         $typeFabrication     $request->query->get('typeFabrication');
  674.         return $this->datatableAttenteOptions(
  675.             $request,
  676.             $datatable,
  677.             $translator,
  678.             $fabricationParente,
  679.             $fabricationMultiple,
  680.             $prestationId,
  681.             $prestation,
  682.             $commandeFournisseur,
  683.             $ref_bloquante,
  684.             $fabricable,
  685.             $type,
  686.             $typeFabrication
  687.         )->execute();
  688.     }
  689. }