src/Controller/GestionComerciale/FabricationSimplifieReceptionController.php line 244

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\StatutFabrication;
  9. use App\Entity\Rangements\NiveauDeux;
  10. use App\Entity\Rangements\NiveauQuatre;
  11. use App\Entity\Rangements\NiveauTrois;
  12. use App\Entity\Rangements\NiveauUn;
  13. use App\Entity\Utilisateur\Utilisateur;
  14. use App\Form\Fabrication\SearchEtiquetteType;
  15. use App\Library\Datatable\Util\Datatable;
  16. use App\Repository\GestionComerciale\FabricationRepository;
  17. use App\Service\GestionComerciale\FabricationService;
  18. use Doctrine\ORM\EntityManagerInterface;
  19. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  20. use Symfony\Component\HttpFoundation\Request;
  21. use Symfony\Component\HttpFoundation\JsonResponse;
  22. use Symfony\Component\HttpFoundation\Response;
  23. use Symfony\Component\Form\Extension\Validator\ViolationMapper\ViolationMapper;
  24. use Symfony\Component\Routing\Annotation\Route;
  25. use Symfony\Component\Validator\Validation;
  26. use Symfony\Component\Validator\ConstraintViolation;
  27. use Symfony\Component\Form\FormError;
  28. use Symfony\Component\HttpFoundation\RedirectResponse;
  29. use Symfony\Component\Validator\Validator\ValidatorInterface;
  30. use Symfony\Contracts\Translation\TranslatorInterface;
  31. class FabricationSimplifieReceptionController extends AbstractController
  32. {
  33.     /**
  34.      * @Route("/fabrication-simplifie/fraisage/reception/{id}", name="dtc_fabrication_simplifie_reception")
  35.      */
  36.     public function receptionnerAction(Request $requestFabrication $fabricationEntityManagerInterface $emTranslatorInterface $translatorFabricationService $fabricationService)
  37.     {
  38.         $pid getmypid();
  39.         $user $this->getUser();
  40.         //$fabrication->setUtilisateur($user);
  41.         $errors           "";
  42.         $repo_utilisateur $em->getRepository(Utilisateur::class);
  43.         $repo_commande    $em->getRepository(Commande::class);
  44.         $utilisateurs     $repo_utilisateur->findAll();
  45.         if ($request->isMethod('POST')) {
  46.             $post $request->request->all();
  47.             $articles = [
  48.                 'ids'          => $request->request->get('ids'),
  49.                 'commentaires' => $request->request->get('commentaires'),
  50.                 'qtes'         => $request->request->get('qtes'),
  51.                 'qtesCmdes'    => $request->request->get('qtesCmdes'),
  52.                 'pumps'        => $request->request->get('pumps'),
  53.                 'cumps'        => $request->request->get('cumps'),
  54.                 'typesMvt'     => $request->request->get('typesMvt'),
  55.                 'emplacement'  => $request->request->get('emplacement'),
  56.             ];
  57.             $valeurs  = [
  58.                 "articles"     => $articles,
  59.                 'niveauUn'     => $request->request->get('niveauUn'),
  60.                 'niveauDeux'   => $request->request->get('niveauDeux'),
  61.                 'niveauTrois'  => $request->request->get('niveauTrois'),
  62.                 'niveauQuatre' => $request->request->get('niveauQuatre'),
  63.             ];
  64. //            dd($articles, $valeurs);
  65.             $equipier $repo_utilisateur->find($request->request->get('equipier'));
  66.             //Tester si la fabrication a été modifiée à la réception
  67.             // Si la fabrication a été modifiée on crée une nouvelle fabrication correspondant à cette réception et on modifie la réception existante
  68.             $newFabrication false;
  69.             foreach ($fabrication->getArticleCommande() as $ac) {
  70.                 $articleId $ac->getArticle()->getId();
  71.                 if ( ! in_array($articleId$articles['ids'])) {
  72.                     $newFabrication true;
  73.                 }
  74.             }
  75.             if ($newFabrication == true) {
  76.                 //Création de la nouvelle fabrication
  77.                 $valeurs['receptionnee'] = true;
  78.                 $newFabrication          $fabricationService->modifierFabricationEtCreerNewFabrication($fabrication$articles$equipier);
  79.                 $this->addFlash('notice'$translator->trans('Nouvel ordre de fabrication créé !'));
  80.                 $url $this->generateUrl('dtc_fabrication_modifier', ["id" => $newFabrication->getId(), 'tabs' => '#fabrications']);
  81.                 //$url = $this->generateUrl('dtc_fabrication_modifier',array("id"=>$fabrication->getId(), 'tabs'=>'#fabrications'));
  82.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  83.             } else {
  84.                 $fabricationService->creerMvtStock($fabrication$valeurs''$equipier);
  85.                 //echo 'test';
  86.                 //$this->addFlash('notice', 'Réception de la fabrication '.$fabrication->getReference().' réalisée avec succès !' );
  87.                 $url $this->generateUrl('dtc_fabrication_modifier', ["id" => $fabrication->getId()]);
  88.                 if ($request->query->get('commandeFournisseur') != '') {
  89.                     $url $this->generateUrl('dtc_commande_fournisseur_modifier', ["id" => $request->query->get('commandeFournisseur'), 'tabs' => '#fabrications']);
  90.                 } elseif ($request->query->get('fabricationMultiple') != '') {
  91.                     $url $this->generateUrl('dtc_fabrication_multiple_modifier', ["id" => $request->query->get('fabricationMultiple'), 'tabs' => '#fabrications']);
  92.                 }
  93.                 //$url = $this->generateUrl('dtc_fabrication_simplifie_liste',array());
  94.                 $url $this->generateUrl('dtcfo_interface_simplifie_validation', []);
  95.                 $route   $this->generateUrl('dtc_fabrication_simplifie_fraisage_liste', []);
  96.                 $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>';
  97.                 $this->addFlash('notice'$translator->trans($message));
  98.                 // TODO refactor commande
  99. //                $builder = new ProcessBuilder();
  100. //                $builder->setArguments(['php', '../app/console', 'articlesComposesModifierCondHa:maj']);
  101. //                $builder->getProcess()->start();
  102.                 //exit;
  103.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  104.             }
  105.         }
  106.         $etiquettes  $repo_commande $em->getRepository(Etiquette::class)->findAll();
  107.         $titre_modal $translator->trans('Voulez-vous générer les mouvements de stock ?');
  108.         return $this->render(
  109.             'GestionComerciale/FabricationSimplifie/additive.reception.html.twig',
  110.             ['pid' => $pid'errors' => $errors'fabrication' => $fabrication'user' => $user'utilisateurs' => $utilisateurs'etiquettes' => $etiquettes]
  111.         );//'form' => $form->createView(),
  112.         //$rendu = $this->renderView('GestionComerciale/FabricationSimplifie/reception.html.twig', array('errors'=>$errors,'fabrication'=>$fabrication,'user'=>$user, 'utilisateurs'=>$utilisateurs, 'etiquettes'=>$etiquettes));//'form' => $form->createView(),
  113.         //return new Response(json_encode(array('rendu'=>$rendu,'valide'=>'0','url'=>'','titre'=>$titre_modal)), 200, array('Content-Type'=>'application/json'));
  114.     }
  115.     /**
  116.      * @Route("/fabrication-simplifie-emplacement/reception/{id}", name="dtc_fabrication_simplifie_reception_emplacement")
  117.      */
  118.     public function receptionnerEmplacementAction(Request $requestFabrication $fabricationEntityManagerInterface $emTranslatorInterface $translator)
  119.     {
  120.         $titre_modal $translator->trans("Ou allez-vous déposer la marchandise fabriquée ?");
  121.         $get         $request->query->all();
  122.         $user        $this->getUser();
  123.         $codeBarre   trim($request->request->get('codeBarre'));
  124.         if ($request->isMethod('post')) {
  125.             if ( ! empty($request->request->get('codeBarre'))) {
  126.                 $niveau      1;
  127.                 $emplacement $em->getRepository(NiveauUn::class)->findOneBy(['codeBarres' => $codeBarre]);
  128.                 if ( ! is_object($emplacement)) {
  129.                     $emplacement $em->getRepository(NiveauDeux::class)->findOneBy(['codeBarres' => $codeBarre]);
  130.                     $niveau++;
  131.                 }
  132.                 if ( ! is_object($emplacement)) {
  133.                     $emplacement $em->getRepository(NiveauTrois::class)->findOneBy(['codeBarres' => $codeBarre]);
  134.                     $niveau++;
  135.                 }
  136.                 if ( ! is_object($emplacement)) {
  137.                     $emplacement $em->getRepository(NiveauQuatre::class)->findOneBy(['codeBarres' => $codeBarre]);
  138.                     $niveau++;
  139.                 }
  140.                 if (is_object($emplacement)) {
  141.                     $donneesEmplacement = [
  142.                         'niveauUn'     => '',
  143.                         'niveauDeux'   => '',
  144.                         'niveauTrois'  => '',
  145.                         'niveauQuatre' => '',
  146.                     ];
  147.                     if ($niveau == 1) {
  148.                         $donneesEmplacement['niveauUn'] = $emplacement->getId();
  149.                     }
  150.                     if ($niveau == 2) {
  151.                         if (is_object($emplacement->getNiveauUn())) {
  152.                             $donneesEmplacement['niveauUn'] = $emplacement->getNiveauUn()->getId();
  153.                         }
  154.                         $donneesEmplacement['niveauDeux'] = $emplacement->getId();
  155.                     }
  156.                     if ($niveau == 3) {
  157.                         if (is_object($emplacement->getNiveauUn())) {
  158.                             $donneesEmplacement['niveauUn'] = $emplacement->getNiveauUn()->getId();
  159.                         }
  160.                         if (is_object($emplacement->getNiveauDeux())) {
  161.                             $donneesEmplacement['niveauDeux'] = $emplacement->getNiveauDeux()->getId();
  162.                         }
  163.                         $donneesEmplacement['niveauTrois'] = $emplacement->getId();
  164.                     }
  165.                     if ($niveau == 4) {
  166.                         if (is_object($emplacement->getNiveauUn())) {
  167.                             $donneesEmplacement['niveauUn'] = $emplacement->getNiveauUn()->getId();
  168.                         }
  169.                         if (is_object($emplacement->getNiveauDeux())) {
  170.                             $donneesEmplacement['niveauDeux'] = $emplacement->getNiveauDeux()->getId();
  171.                         }
  172.                         if (is_object($emplacement->getNiveauTrois())) {
  173.                             $donneesEmplacement['niveauTrois'] = $emplacement->getNiveauTrois()->getId();
  174.                         }
  175.                         $donneesEmplacement['niveauQuatre'] = $emplacement->getId();
  176.                     }
  177.                     return new JsonResponse(
  178.                         [
  179.                             'rendu'       => '',
  180.                             'valide'      => '0',
  181.                             'url'         => '',
  182.                             'titre'       => '',
  183.                             'type'        => 'callBackEmplacementFabrication',
  184.                             'emplacement' => $donneesEmplacement,
  185.                         ]
  186.                     );
  187.                 }
  188.             }
  189.             $this->addFlash('warning''Emplacement non reconnu ('.$request->request->get('codeBarre').').');
  190.         }
  191.         $rendu $this->renderView('GestionComerciale/FabricationSimplifie/reception-emplacement.html.twig', ['fabrication' => $fabrication]);
  192.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  193.     }
  194.     /**
  195.      * @Route("/fabrication-simplifie/fraisage/liste/", name="dtc_fabrication_simplifie_fraisage_liste")
  196.      */
  197.     public function listFabricationMultipleFraisage(Request                $request$fabricationParente ''$fabricationMultiple ''$prestation ''$commandeFournisseur '',
  198.                                                     EntityManagerInterface $em,
  199.                                                     Datatable              $datatableTranslatorInterface $translator
  200.     ) {
  201.         $this->datatableOFM($request$datatable$translatorFabrication::DEDUCTIVE);
  202.         $tableauClassColonne = [];
  203.         $tableauClassColonne   = [];
  204.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [0], "visible" => false"orderable" => false];
  205.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [1], "visible" => true"orderable" => false];
  206.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [2], "visible" => true"orderable" => true];
  207.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [3], "visible" => true"orderable" => true];
  208.         $tableauClassColonne[] = ["className" => "colonne_id""targets" => [4], "visible" => true"orderable" => true];
  209. //        $tableauClassColonne[] = ["className" => "colonne_id", "targets" => [5], "visible" => true, "orderable" => true];
  210. //        $tableauClassColonne[] = ["className" => "colonne_id text-center", "targets" => [6], "visible" => true, "orderable" => true];
  211. //        $tableauClassColonne[] = ["className" => "colonne_id text-center", "targets" => [7], "visible" => true, "orderable" => true];
  212.         $tableauClassColonne[] = ["className" => "colonne_id text-center""targets" => [5], "visible" => true"orderable" => true];
  213.         $tableauClassColonne[] = ["className" => "colonne_id text-left""targets" => [6], "visible" => true"orderable" => true];
  214. //        $tableauClassColonne[] = ["className" => "colonne_id", "targets" => [7], "visible" => true, "orderable" => false];
  215.         $prestationId        $request->query->get('prestationId');
  216.         $ref_bloquante       $request->query->get('ref_bloquante');
  217.         $ref_bloquante_label $request->query->get('ref_bloquante_label');
  218.         $fabricable          $request->query->get('fabricable');
  219.         $type                $request->query->get('type');
  220.         //if($fabricable == 1) $fabricable = 0; else $fabricable = 1;
  221.         $repo_article      $em->getRepository(Article::class);
  222.         $repo_type_article $em->getRepository(Type::class);
  223.         if ($fabricationParente != '' || $fabricationMultiple != '' || $prestation != '' || $commandeFournisseur != '') {
  224.             $template 'GestionComerciale/FabricationSimplifie/lister-datatable.html.twig';
  225.         } else {
  226.             $template 'GestionComerciale/FabricationSimplifie/lister.html.twig';
  227.         }
  228.         return $this->render($template, [
  229.             'tableauClassColonne' => $tableauClassColonne,
  230.             'fabricationParente'  => $fabricationParente,
  231.             'fabricationMultiple' => $fabricationMultiple,
  232.             'typePrestations'     => $repo_article->findBy(['prestation' => 1], ['libelle' => 'ASC']),
  233.             'prestationId'        => $prestationId,
  234.             'prestation'          => $prestation,
  235.             'commandeFournisseur' => $commandeFournisseur,
  236.             'ref_bloquante'       => $ref_bloquante,
  237.             'ref_bloquante_label' => $ref_bloquante_label,
  238.             'fabricable'          => $fabricable,
  239.             'type'                => $type,
  240.             'typesArticle'        => $repo_type_article->findAll(),
  241.         ]);
  242.     }
  243.     /**
  244.      * @Route("/fabrication-simplifie/fraisage/desassemblage/recherche/", name="dtc_fabrication_simplifie_fraisage_disassembled_recherche_etiquette")
  245.      */
  246.     public function searchFromEtiquette(Request $requestFabricationRepository $fabricationRepository
  247.     ) {
  248.         $fabricationType $request->query->getInt('step'1);
  249.         $form            $this->createForm(SearchEtiquetteType::class);
  250.         $form->handleRequest($request);
  251.         if ($form->isSubmitted() && $form->isValid()) {
  252.             $data                  $form->getData();
  253.             $etiqueetteFabrication $data['etiquette'];
  254.             $fabrication           $fabricationRepository->searchFromEtiquette($etiqueetteFabrication, ($fabricationType === 1) ? 1);
  255.             if ($fabrication === null) {
  256.                 $this->addFlash('warning''Aucune fabrication avec cette etiquette');
  257.                 return $this->redirectToRoute('dtc_fabrication_simplifie_disassembled_recherche_etiquette', ['step' => $fabricationType]);
  258.             } else {
  259.                 if ($fabricationType === 1) {
  260.                     return $this->render(
  261.                         'GestionComerciale/FabricationSimplifie/desassemblage.html.twig',
  262.                         [
  263.                             'form'        => $form->createView(),
  264.                             'fabrication' => $fabrication,
  265.                         ]
  266.                     );
  267.                 } else {
  268.                     return $this->redirectToRoute(
  269.                         'dtc_fabrication_simplifie_reception',
  270.                         [
  271.                             'id' => $fabrication->getId(),
  272.                         ]
  273.                     );
  274.                 }
  275.             }
  276.         }
  277.         return $this->render('GestionComerciale/FabricationSimplifie/recherche_etiquette.html.twig', [
  278.             'form' => $form->createView(),
  279.         ]);
  280.     }
  281.     /**
  282.      * @Route("/fabrication-simplifie/fraisage/desassemblage/{id}", name="dtc_fabrication_simplifie_desassemblage_fraisage")
  283.      */
  284.     public function setFabicrationDisassembled(Request $requestFabrication $fabricationEntityManagerInterface $entityManagerFabricationRepository $fabricationRepository)
  285.     {
  286.         $fabrication->setStatutFabrication($entityManager->getReference(StatutFabrication::class, 9));
  287.         $entityManager->flush();
  288.         $this->addFlash('success''Fabrication mis a jour avec succes');
  289.         if ($fabricationRepository->getNbFabricationAdditiveNotDisasembled($fabrication->getFabricationMultiple()->getId()) === 0) {
  290.             $this->addFlash('success''Toutes les fabrication additives sont désassemblées');
  291.             $fabrication->getFabricationMultiple()->setStatutFabricationMultiple($entityManager->getReference(StatutFabrication::class, 8));
  292.             $entityManager->flush();
  293.             return $this->redirectToRoute('dtcfo_homepage', ['ms' => 1]);
  294.         }
  295.         return $this->redirectToRoute('dtc_fabrication_simplifie_fraisage_liste', ['fabricationMultiple' => $fabrication->getFabricationMultiple()->getId()]);
  296.     }
  297. }