src/Controller/GestionComerciale/CommandeFournisseurSimplifieController.php line 42

Open in your IDE?
  1. <?php
  2. namespace App\Controller\GestionComerciale;
  3. use App\Entity\Articles\Article;
  4. use App\Entity\Articles\ConditionAchat;
  5. use App\Entity\Articles\NumeroSerie;
  6. use App\Entity\Etiquettes\Etiquette;
  7. use App\Entity\Fournisseurs\Fournisseur;
  8. use App\Entity\GestionComerciale\ArticleCommande;
  9. use App\Entity\GestionComerciale\Commande;
  10. use App\Entity\GestionComerciale\CommandeFournisseur;
  11. use App\Entity\GestionComerciale\Reception;
  12. use App\Entity\GestionComerciale\StatutCommandeFournisseur;
  13. use App\Entity\Rangements\Emplacement;
  14. use App\Entity\Rangements\NiveauDeux;
  15. use App\Entity\Rangements\NiveauQuatre;
  16. use App\Entity\Rangements\NiveauTrois;
  17. use App\Entity\Rangements\NiveauUn;
  18. use App\Library\Datatable\Util\Datatable;
  19. use App\Service\GestionComerciale\CommandeFournisseurService;
  20. use App\Service\GestionComerciale\EtatCommandeService;
  21. use App\Service\GestionComerciale\NumerotationDocumentService;
  22. use App\Service\Utilisateur\ColonneTableauService;
  23. use Doctrine\ORM\EntityManagerInterface;
  24. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  25. use Symfony\Component\HttpFoundation\Request;
  26. use Symfony\Component\HttpFoundation\JsonResponse;
  27. use Symfony\Component\HttpFoundation\Response;
  28. use Symfony\Component\Routing\Annotation\Route;
  29. use Symfony\Component\Validator\Validator\ValidatorInterface;
  30. use Symfony\Contracts\Translation\TranslatorInterface;
  31. class CommandeFournisseurSimplifieController extends AbstractController
  32. {
  33.     /**
  34.      * @Route("/achat-simplifie/commande", name="dtc_commande_fournisseur_simplifie_liste")
  35.      */
  36.     public function listerAction(Request $request$article ''EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  37.     {
  38.         $statutCommande        $request->query->get('statutCommande');
  39.         $tableau_class_cellule = [];
  40.         $tableau_class_cellule[] = ["orderable" => false"className" => "colonne_id""targets" => [0], "visible" => true];
  41.         $tableau_class_cellule[] = ["orderable" => false"className" => "colonne_id""targets" => [1], "visible" => false];
  42.         $tableau_class_cellule[] = ["orderable" => true"className" => "colonne_id text-center""targets" => [2], "visible" => true];
  43.         $tableau_class_cellule[] = ["orderable" => true"className" => "colonne_id text-center""targets" => [3], "visible" => true];
  44.         $tableau_class_cellule[] = ["orderable" => true"className" => "colonne_id text-center""targets" => [4], "visible" => true];
  45.         $tableau_class_cellule[] = ["orderable" => true"className" => "colonne_id""targets" => [5], "visible" => true];
  46.         $tableau_class_cellule[] = ["orderable" => true"className" => "colonne_id""targets" => [6], "visible" => true"searchable" => true];
  47.         $tableau_class_cellule[] = ["orderable" => true"className" => "colonne_id""targets" => [7], "visible" => true"searchable" => true];
  48.         $this->datatable($request$datatable$translator);
  49.         $param $request->query->all();
  50.         $repo_statut  $em->getRepository(StatutCommandeFournisseur::class);
  51.         $liste_statut $repo_statut->findBy(['id' => [62345]]);
  52.         $affichageParDefaut true;
  53.         foreach ($param as $key => $par) {
  54.             $pos strpos($key'statut_commande_');
  55.             //var_dump($key);
  56.             if ($pos !== false) {
  57.                 $affichageParDefaut false;
  58.                 break;
  59.             }
  60.         }
  61.         $param['affichageParDefaut'] = $affichageParDefaut;
  62.         $repo_fournisseur $em->getRepository(Fournisseur::class);
  63.         $fournisseurs     $repo_fournisseur->findBy([], ['libelle' => 'ASC']);
  64.         return $this->render(
  65.             'GestionComerciale/CommandeFournisseurSimplifie/lister.html.twig',
  66.             [
  67.                 'liste_statut'        => $liste_statut,
  68.                 'parametres'          => $param,
  69.                 "fournisseurs"        => $fournisseurs,
  70.                 'tableauClassColonne' => $tableau_class_cellule,
  71.                 'statutCommande'      => $statutCommande,
  72.             ]
  73.         );
  74.     }
  75.     /**
  76.      * set datatable configs
  77.      *
  78.      * @return \App\Library\Datatable\Util\Datatable
  79.      */
  80.     private function datatable(Request $requestDatatable $datatableTranslatorInterface $translator)
  81.     {
  82.         $param $request->query->all();
  83.         $datatable
  84.             ->setDatatableId('dta-commandes-fournisseur-simplifie')
  85.             ->setEntity(CommandeFournisseur::class, "x")
  86.             ->setFields(
  87.                 [
  88.                     $translator->trans("Actions") => 'x.id',
  89.                     $translator->trans("ID")      => 'x.id',
  90.                     $translator->trans("Date")                      => 'x.date',
  91.                     $translator->trans("Date de réception estimée") => 'x.dateApproximativeReception',
  92.                     $translator->trans("Date réception")            => 'x.id',
  93.                     $translator->trans("Réf")         => 'x.reference',
  94.                     $translator->trans("Fournisseur") => 'f.libelle',
  95.                     $translator->trans("Statut")      => 's.id',
  96.                     "_identifier_" => 'x.id',
  97.                 ]
  98.             )
  99.             ->addJoin('x.statutCommande''s'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  100.             ->addJoin('x.fournisseur''f'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  101.             ->setRenderers(
  102.                 [
  103.                     => [
  104.                         'view' => 'FO/DataTable/heure.html.twig',
  105.                     ],
  106.                     => [
  107.                         'view' => 'FO/DataTable/date.html.twig',
  108.                     ],
  109.                     => [
  110.                         'view' => 'FO/DataTable/date_reception_cmde_fournisseur.html.twig',
  111.                     ],
  112.                     => [
  113.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  114.                         'params' => ['edit_route' => 'dtc_commande_fournisseur_simplifie_reception''nouvelOnglet' => false],
  115.                     ],
  116.                     => [
  117.                         'view' => 'FO/DataTable/statut-commande-fournisseur.html.twig',
  118.                     ],
  119.                     => [
  120.                         'view'   => 'FO/DataTable/actions-interface-simplifie.html.twig',
  121.                         'params' => [
  122.                             'edit_route'         => 'dtc_commande_fournisseur_simplifie_reception',
  123.                             //'supprimer_route'    => 'dtc_commande_fournisseur_supprimer',
  124.                             'objet'              => CommandeFournisseur::class,
  125.                             'deplierFournisseur' => true,
  126.                         ],
  127.                     ],
  128.                 ]
  129.             )
  130.             /*
  131.                 ->setMultiple(
  132.                 array(
  133.                     'delete' => array(
  134.                         'title' => 'Supprimer',
  135.                         'route' => 'dtc_commande_liste_supprimer'
  136.                     ),
  137.                 )
  138.             )
  139.              *
  140.              */
  141.             ->setOrder("x.dateApproximativeReception""asc")
  142.             ->setSearch(true)
  143.             ->setSearchFields([56]);
  144.         $where      '';
  145.         $parameters = [];
  146.         if (is_object($request)) {
  147.             $article $request->query->get('article');
  148.             if ($article != '') {
  149.                 $datatable->addJoin('x.articleCommande''ac'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  150.                           ->addJoin('ac.article''a'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)/*->setWhere(                                                     // set your dql where statement
  151.                                     'a.id = :article',
  152.                                     array('article' => $article)
  153.                                 )*/
  154.                 ;
  155.                 $where                 .= 'a.id = :article';
  156.                 $parameters['article'] = $article;
  157.             }
  158.             /*
  159.             $statutCommande = $request->query->get('statutCommande');
  160.             if ($statutCommande == '' || $statutCommande == '3'){
  161.                 if ($where != '') $where .= ' AND ';
  162.                 $where .= 's.ordre IN (:statutCommande)';
  163.                 $parameters['statutCommande'] = array(5,1);
  164.             } else {
  165.                 if ($where != '') $where .= ' AND ';
  166.                 $where .= 's.ordre IN (:statutCommande)';
  167.                 $parameters['statutCommande'] = array($statutCommande);
  168.             }
  169.             */
  170.         } else {
  171.             $datatable->setMultiple(
  172.                 [
  173.                     'delete' => [
  174.                         'title' => 'Supprimer',
  175.                         'route' => 'dtc_commande_liste_supprimer',
  176.                     ],
  177.                 ]
  178.             );
  179.             //$where .= 's.ordre IN (:statutCommande)';
  180.             //$parameters['statutCommande'] = array(5,1);
  181.         }
  182.         if (array_key_exists('parametres'$param)) {
  183.             if (array_key_exists('fournisseur'$param["parametres"]) and $param["parametres"]["fournisseur"] > 0) {
  184.                 //$datatable->addJoin('x.client', 'client', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  185.                 $parameters["fournisseur"] = $param["parametres"]["fournisseur"];
  186.                 if ($where != "") {
  187.                     $where .= " AND ";
  188.                 }
  189.                 $where .= "f.id = :fournisseur";
  190.             }
  191.             if (array_key_exists('date_debut'$param["parametres"]) and $param["parametres"]["date_debut"] != "") {
  192.                 $param["parametres"]["date_debut"] = \DateTime::createFromFormat('d/m/Y'$param["parametres"]["date_debut"]);
  193.                 $param["parametres"]["date_debut"]->setTime(000000);
  194.                 $parameters["date_debut"] = $param["parametres"]["date_debut"];
  195.                 if ($where != "") {
  196.                     $where .= " AND ";
  197.                 }
  198.                 $where .= "x.date >= :date_debut";
  199.             }
  200.             if (array_key_exists('date_fin'$param["parametres"]) and $param["parametres"]["date_fin"] != "") {
  201.                 $param["parametres"]["date_fin"] = \DateTime::createFromFormat('d/m/Y'$param["parametres"]["date_fin"]);
  202.                 $param["parametres"]["date_fin"]->setTime(235959);
  203.                 $parameters["date_fin"] = $param["parametres"]["date_fin"];
  204.                 if ($where != "") {
  205.                     $where .= " AND ";
  206.                 }
  207.                 $where .= "x.date <= :date_fin";
  208.             }
  209.             foreach ($param['parametres'] as $key => $par) {
  210.                 $pos strpos($key'statut_commande_');
  211.                 if ($pos !== false) {
  212.                     $statutsCommande[] = str_replace('statut_commande_'''$key);
  213.                 }
  214.             }
  215.         }
  216.         if (empty($statutsCommande)) {
  217.             $statutsCommande = [12];
  218.         }
  219.         if (count($statutsCommande)) {
  220.             if ($where != '') {
  221.                 $where .= ' AND ';
  222.             }
  223.             $where                         .= 's.id IN (:statutsCommande)';
  224.             $parameters['statutsCommande'] = $statutsCommande;
  225.         }
  226.         //echo $where;
  227.         //print_r($parameters['statutsCommande']);
  228.         if ($where != '') {
  229.             $datatable->setWhere($where$parameters);
  230.         }
  231.         //$datatable->setSearchFields(array(0,2));
  232.         return $datatable;
  233.     }
  234.     /**
  235.      * @Route("/achat-simplifie/commande/grid", name="dtc_commande_fournisseur_simplifie_liste_grid")
  236.      */
  237.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  238.     {
  239.         return $this->datatable($request$datatable$translator)->execute();
  240.     }
  241.     /**
  242.      * @Route("/achat-simplifie/commande/{id}/reception", name="dtc_commande_fournisseur_simplifie_reception")
  243.      */
  244.     public function receptionAction(Request               $requestCommandeFournisseur $commandeEntityManagerInterface $emTranslatorInterface $translator,
  245.                                     ColonneTableauService $serviceColonneCommandeFournisseurService $commandeFournisseurServiceNumerotationDocumentService $numerotationService,
  246.                                     EtatCommandeService   $etatCommandeService
  247.     ) {
  248.         set_time_limit(600);
  249.         $articles_array_pour_bp_auto = [];
  250.         $repo_article                $em->getRepository(Article::class);
  251.         $repo_article_commande       $em->getRepository(ArticleCommande::class);
  252.         $user                        $this->getUser();
  253.         $commande->setUtilisateur($user);
  254.         //$request = $request;
  255.         $errors "";
  256.         $colspan                                      13;
  257.         $tabColonneUser                               = [];
  258.         $tabColonneUser["id"]                         = 1;
  259.         $tabColonneUser["reference"]                  = 1;
  260.         $tabColonneUser["libelle"]                    = 1;
  261.         $tabColonneUser["referenceF"]                 = 1;
  262.         $tabColonneUser["libelleF"]                   = 1;
  263.         $tabColonneUser["qteStockCommande"]           = 1;
  264.         $tabColonneUser["uniteVente"]                 = 1;
  265.         $tabColonneUser["qte"]                        = 1;
  266.         $tabColonneUser["uniteAchat"]                 = 1;
  267.         $tabColonneUser["ralF"]                       = 1;
  268.         $tabColonneUser["qtéreceptionn"]              = 1;
  269.         $tabColonneUser["prixHT"]                     = 1;
  270.         $tabColonneUser["txRem"]                      = 1;
  271.         $tabColonneUser["txRemSuppl"]                 = 1;
  272.         $tabColonneUser["fraisAnnexes"]               = 1;
  273.         $tabColonneUser["prixAchatUnitaire"]          = 1;
  274.         $tabColonneUser["montantHt"]                  = 1;
  275.         $tabColonneUser["totalHt"]                    = 1;
  276.         $tabColonneUser["CC"]                         = 1;
  277.         $tabColonneUser["qteMiniAchat"]               = 1;
  278.         $tabColonneUser["conditionnement"]            = 1;
  279.         $tabColonneUser["etiquettes"]                 = 1;
  280.         $tabColonneUser['coefficientConditionnement'] = 1;
  281.         // TODO Change this
  282.         $colonneUtilisateur Reception::class; //"DTCGestionComercialeBundle:ReceptionCommandeFournisseur";
  283.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'id') == false) {
  284.             $colspan--;
  285.             $tabColonneUser["id"] = 0;
  286.         }
  287.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'reference') == false) {
  288.             $colspan--;
  289.             $tabColonneUser["reference"] = 0;
  290.         }
  291.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'libelle') == false) {
  292.             $colspan--;
  293.             $tabColonneUser["libelle"] = 0;
  294.         }
  295.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'referenceF') == false) {
  296.             $colspan--;
  297.             $tabColonneUser["referenceF"] = 0;
  298.         }
  299.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'libelleF') == false) {
  300.             $colspan--;
  301.             $tabColonneUser["libelleF"] = 0;
  302.         }
  303.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'qteStockCommande') == false) {
  304.             $colspan--;
  305.             $tabColonneUser["qteStockCommande"] = 0;
  306.         }
  307.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'uniteVente') == false) {
  308.             $colspan--;
  309.             $tabColonneUser["uniteVente"] = 0;
  310.         }
  311.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'qte') == false) {
  312.             $colspan--;
  313.             $tabColonneUser["qte"] = 0;
  314.         }
  315.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'uniteAchat') == false) {
  316.             $colspan--;
  317.             $tabColonneUser["uniteAchat"] = 0;
  318.         }
  319.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'ralF') == false) {
  320.             $colspan--;
  321.             $tabColonneUser["ralF"] = 0;
  322.         }
  323.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'qtéreceptionn') == false) {
  324.             $colspan--;
  325.             $tabColonneUser["qtéreceptionn"] = 0;
  326.         }
  327.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'prixHT') == false) {
  328.             $colspan--;
  329.             $tabColonneUser["prixHT"] = 0;
  330.         }
  331.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'txRem') == false) {
  332.             $colspan--;
  333.             $tabColonneUser["txRem"] = 0;
  334.         }
  335.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'txRemSuppl') == false) {
  336.             $colspan--;
  337.             $tabColonneUser["txRemSuppl"] = 0;
  338.         }
  339.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'fraisAnnexes') == false) {
  340.             $colspan--;
  341.             $tabColonneUser["fraisAnnexes"] = 0;
  342.         }
  343.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'prixAchatUnitaire') == false) {
  344.             $colspan--;
  345.             $tabColonneUser["prixAchatUnitaire"] = 0;
  346.         }
  347.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'montantHt') == false) {
  348.             $colspan--;
  349.             $tabColonneUser["montantHt"] = 0;
  350.         }
  351.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'totalHt') == false) {
  352.             $colspan--;
  353.             $tabColonneUser["totalHt"] = 0;
  354.         }
  355.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'CC') == false) {
  356.             $colspan--;
  357.             $tabColonneUser["CC"] = 0;
  358.         }
  359.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'qteMiniAchat') == false) {
  360.             $colspan--;
  361.             $tabColonneUser["qteMiniAchat"] = 0;
  362.         }
  363.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'conditionnement') == false) {
  364.             $colspan--;
  365.             $tabColonneUser["conditionnement"] = 0;
  366.         }
  367.         if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur'coefficientConditionnement') == false) {
  368.             $colspan--;
  369.             $tabColonneUser["coefficientConditionnement"] = 0;
  370.         }
  371.         if ($request->isMethod('POST')) {
  372.             $prixCalc str_replace(" """$request->request->get('prix'));
  373.             $prixCalc str_replace(chr(194).chr(160), ''$prixCalc);
  374.             $commentaireReception $request->request->get('commentaireReception');
  375.             $articles         = [
  376.                 'ids'                         => $request->request->get('ids'),
  377.                 'commentaire'                 => $request->request->get('commentaire'),
  378.                 'libelles'                    => $request->request->get('libelles'),
  379.                 'tva'                         => $request->request->get('tva'),
  380.                 //'remiseSuppl'=>$request->request->get('remiseSuppl'),
  381.                 'prix'                        => $prixCalc,
  382.                 'qte'                         => $request->request->get('qte'),
  383.                 'rals'                        => $request->request->get('rals'),
  384.                 //'nvellesCond'=>$request->request->get('NvellesCondition'),
  385.                 'conditionsAchat'             => $request->request->get('conditionsAchat'),
  386.                 'etiquettes'                  => $request->request->get('etiquettes'),
  387.                 'remises'                     => $request->request->get('remises'),
  388.                 'remisesSuppl'                => $request->request->get('remisesSuppl'),
  389.                 'receptions'                  => $request->request->get('receptions'),
  390.                 'fabrications'                => $request->request->get('fabrications'),
  391.                 'emplacement'                 => $request->request->get('emplacement'),
  392.                 'nbEmplacement'               => $request->request->get('nbEmplacement'),
  393.                 'fraisAnnexes'                => $request->request->get('fraisAnnexes'),
  394.                 'articlesCommande'            => $request->request->get('articlesCommande'),
  395.                 'articlesCommandeRepris'      => $request->request->get('articlesCommandeRepris'),
  396.                 'coefficientsConditionnement' => $request->request->get('coefficientsConditionnement'),
  397.                 'ecocontribution'             => $request->request->get('ecocontribution'),
  398.                 'emplacementSimplifie'        => $request->request->get('emplacementSimplifie')
  399.                 //'numero_serie'=>$request->request->get('numero_serie'),
  400.                 //'duree_garantie'=>$request->request->get('duree_garantie'),
  401.             ];
  402.             $BL               $request->request->get('BL');
  403.             $dateReceptionTxt $request->request->get('dateReception');
  404.             $dateReception    date_create_from_format('d/m/Y H:i'$dateReceptionTxt);
  405.             if ($BL == '') {
  406.                 $BL $dateReception->format('Ymd-His');
  407.             }
  408.             if (count($articles['ids']) > 0) {
  409.                 foreach ($articles['ids'] as $key => $article) {
  410.                     if ($articles['qte'][$key] > 0) {
  411.                         $articles_array_pour_bp_auto $articles['ids'][$key];
  412.                     }
  413.                     if ($articles['conditionsAchat'][$key] == "") {
  414.                         $id  $articles['ids'][$key];
  415.                         $art $repo_article->find($id);
  416.                         if ($art->getDivers() == 1) {
  417.                             $repo_cond $em->getRepository(ConditionAchat::class);
  418.                             $cond      $repo_cond->findOneBy(['article' => $art]);
  419.                             if (is_object($cond)) {
  420.                                 $articles['conditionsAchat'][$key] = $cond->getId();
  421.                             }
  422.                         }
  423.                     }
  424.                 }
  425.             }
  426.             $valeurs   = ["articles" => $articles'typeDocument' => 'commande''BL' => $BL'dateReception' => $dateReception];
  427.             $reception = new Reception();
  428.             $reception->setCommandeFournisseur($commande);
  429.             $reception->setFraisPortSupplementaire($commande->getFraisPortSupplementaire());
  430.             $reception->setFraisFixe($commande->getFraisFixe());
  431.             $reception->setFraisApproche($commande->getFraisApproche());
  432.             $reception->setCommentaire($commentaireReception);
  433.             $reception->setFournisseur($commande->getFournisseur());
  434.             $reception->setBonLivraison($BL);
  435.             if (is_object($dateReception)) {
  436.                 $reception->setDate($dateReception);
  437.             }
  438.             $reception->setReference($numerotationService->generer($reception));
  439.             $em->persist($reception);
  440.             //les numéros de série
  441.             $numeraux_serie  $request->request->get('numero_serie');
  442.             $durees_garantie $request->request->get('duree_garantie');
  443.             if (is_array($numeraux_serie) && count($numeraux_serie) > 0) {
  444.                 foreach ($numeraux_serie as $articleCommandeId => $numerauxByArticle) {
  445.                     foreach ($numerauxByArticle as $numero_serie) {
  446.                         if ($numero_serie != '') {
  447.                             $ac          $repo_article_commande->find($articleCommandeId);
  448.                             $duree       $durees_garantie[$articleCommandeId];
  449.                             $numeroSerie = new NumeroSerie();
  450.                             $numeroSerie->setDureeGarantie($duree);
  451.                             if (is_object($ac)) {
  452.                                 $numeroSerie->setArticleCommande($ac);
  453.                             }
  454.                             $numeroSerie->setNumero($numero_serie);
  455.                             $em->persist($numeroSerie);
  456.                         }
  457.                     }
  458.                 }
  459.             }
  460.             $em->flush();
  461.             $commandeFournisseurService->creerMvtStock($commande$valeurs$reception);
  462.             $message '';
  463.             if (count($articles['ids']) > 0) {
  464.                 foreach ($articles['ids'] as $key => $article) {
  465.                     $conditionAchat $articles['conditionsAchat'][$key];
  466.                     $actionAmener $request->request->get('condAchat_'.$conditionAchat);
  467.                     $message      .= $conditionAchat.' - '.$actionAmener.' - ';
  468.                     if ($actionAmener != 1) {
  469.                         $donnees['prix']         = $articles['prix'][$key];
  470.                         $donnees['fraisAnnexes'] = $articles['fraisAnnexes'][$key];
  471.                         $message                 .= $donnees['prix'];
  472.                         $commandeFournisseurService->creerOuMajConditionAchat($conditionAchat$actionAmener$donnees);
  473.                     }
  474.                     $message .= ' / ';
  475.                 }
  476.             }
  477.             $repo_commande $em->getRepository(Commande::class);
  478.             if (is_array($articles_array_pour_bp_auto) && count($articles_array_pour_bp_auto) > 0) {
  479.                 $commandesEnCours $repo_commande->listeCommandeEnCoursPourReception($articles_array_pour_bp_auto);
  480.                 foreach ($commandesEnCours as $c) {
  481.                     $etatCommandeService->calculerEtatCommande($c$creer_bon false);
  482.                 }
  483.             }
  484.             $route   $this->generateUrl('dtc_commande_fournisseur_simplifie_liste', []);
  485.             $message '<br/>Réception de la marchandise réalisée 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>';
  486.             $this->addFlash('notice'$translator->trans($message));
  487.             $url $this->generateUrl('dtcfo_interface_simplifie_validation', []);
  488.             $commandeFournisseurService->creerHistorique($commande3);
  489.             return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  490.         }
  491.         $etiquettes $repo_commande $em->getRepository(Etiquette::class)->findAll();
  492.         return $this->render('GestionComerciale/CommandeFournisseurSimplifie/reception.html.twig', [
  493.             'etiquettes'     => $etiquettes,
  494.             'errors'         => $errors,
  495.             'commande'       => $commande,
  496.             'tabColonneUser' => $tabColonneUser,
  497.             'modalWidth'     => 800,
  498.         ]);
  499.     }
  500.     /**
  501.      * @Route("", name="")
  502.      */
  503.     public function receptionnerEmplacementAction(Request $requestArticle $article$idArticleCommandeEntityManagerInterface $emTranslatorInterface $translator
  504.     ) {
  505.         $titre_modal $translator->trans("Nouvel emplacement");
  506.         $get         $request->query->all();
  507.         $user        $this->getUser();
  508.         $codeBarre   trim($request->request->get('codeBarre'));
  509.         $codeBarreId trim($request->request->get('codeBarreId'));
  510.         if ($request->isMethod('post')) {
  511.             if ( ! empty($codeBarreId) and != 1) {
  512.                 $emplacement_article $em->getRepository(Emplacement::class)->find($codeBarreId);
  513.                 $donneesEmplacement = [
  514.                     'niveauUn'     => '',
  515.                     'niveauDeux'   => '',
  516.                     'niveauTrois'  => '',
  517.                     'niveauQuatre' => '',
  518.                 ];
  519.                 if (is_object($emplacement_article)) {
  520.                     if (is_object($emplacement_article->getNiveauQuatre())) {
  521.                         $donneesEmplacement['niveauQuatre'] = $emplacement_article->getNiveauQuatre()->getId();
  522.                     }
  523.                     if (is_object($emplacement_article->getNiveauTrois())) {
  524.                         $donneesEmplacement['niveauTrois'] = $emplacement_article->getNiveauTrois()->getId();
  525.                     }
  526.                     if (is_object($emplacement_article->getNiveauDeux())) {
  527.                         $donneesEmplacement['niveauDeux'] = $emplacement_article->getNiveauDeux()->getId();
  528.                     }
  529.                     if (is_object($emplacement_article->getNiveauUn())) {
  530.                         $donneesEmplacement['niveauUn'] = $emplacement_article->getNiveauUn()->getId();
  531.                     }
  532.                 }
  533.                 return new Response(
  534.                     json_encode(
  535.                         [
  536.                             'rendu'       => '',
  537.                             'valide'      => '0',
  538.                             'url'         => '',
  539.                             'titre'       => '',
  540.                             'type'        => 'callBackEmplacementCommandeFournisseur',
  541.                             'emplacement' => $donneesEmplacement,
  542.                         ]
  543.                     ),
  544.                     200,
  545.                     ['Content-Type' => 'application/json']
  546.                 );
  547.             } elseif ( ! empty($request->request->get('codeBarre'))) {
  548.                 $niveau      1;
  549.                 $emplacement $em->getRepository(NiveauUn::class)->findOneBy(['codeBarres' => $codeBarre]);
  550.                 if ( ! is_object($emplacement)) {
  551.                     $emplacement $em->getRepository(NiveauDeux::class)->findOneBy(['codeBarres' => $codeBarre]);
  552.                     $niveau++;
  553.                 }
  554.                 if ( ! is_object($emplacement)) {
  555.                     $emplacement $em->getRepository(NiveauTrois::class)->findOneBy(['codeBarres' => $codeBarre]);
  556.                     $niveau++;
  557.                 }
  558.                 if ( ! is_object($emplacement)) {
  559.                     $emplacement $em->getRepository(NiveauQuatre::class)->findOneBy(['codeBarres' => $codeBarre]);
  560.                     $niveau++;
  561.                 }
  562.                 if (is_object($emplacement)) {
  563.                     $donneesEmplacement = [
  564.                         'niveauUn'     => null,
  565.                         'niveauDeux'   => null,
  566.                         'niveauTrois'  => null,
  567.                         'niveauQuatre' => null,
  568.                     ];
  569.                     if ($niveau == 1) {
  570.                         $donneesEmplacement['niveauUn'] = $emplacement;
  571.                     }
  572.                     if ($niveau == 2) {
  573.                         if (is_object($emplacement->getNiveauUn())) {
  574.                             $donneesEmplacement['niveauUn'] = $emplacement->getNiveauUn()->getId();
  575.                         }
  576.                         $donneesEmplacement['niveauDeux'] = $emplacement;
  577.                     }
  578.                     if ($niveau == 3) {
  579.                         if (is_object($emplacement->getNiveauUn())) {
  580.                             $donneesEmplacement['niveauUn'] = $emplacement->getNiveauUn()->getId();
  581.                         }
  582.                         if (is_object($emplacement->getNiveauDeux())) {
  583.                             $donneesEmplacement['niveauDeux'] = $emplacement->getNiveauDeux()->getId();
  584.                         }
  585.                         $donneesEmplacement['niveauTrois'] = $emplacement;
  586.                     }
  587.                     if ($niveau == 4) {
  588.                         if (is_object($emplacement->getNiveauUn())) {
  589.                             $donneesEmplacement['niveauUn'] = $emplacement->getNiveauUn()->getId();
  590.                         }
  591.                         if (is_object($emplacement->getNiveauDeux())) {
  592.                             $donneesEmplacement['niveauDeux'] = $emplacement->getNiveauDeux()->getId();
  593.                         }
  594.                         if (is_object($emplacement->getNiveauTrois())) {
  595.                             $donneesEmplacement['niveauTrois'] = $emplacement->getNiveauTrois()->getId();
  596.                         }
  597.                         $donneesEmplacement['niveauQuatre'] = $emplacement;
  598.                     }
  599.                     $emplacement_obj = new Emplacement();
  600.                     $emplacement_obj->setArticle($article);
  601.                     $emplacement_obj->setVisibilite(true);
  602.                     $emplacement_obj->setStock(0);
  603.                     $emplacement_obj->setStockReserve(0);
  604.                     $emplacement_obj->setNiveauUn($donneesEmplacement['niveauUn']);
  605.                     $emplacement_obj->setNiveauDeux($donneesEmplacement['niveauDeux']);
  606.                     $emplacement_obj->setNiveauTrois($donneesEmplacement['niveauTrois']);
  607.                     $emplacement_obj->setNiveauQuatre($donneesEmplacement['niveauQuatre']);
  608.                     $titreEmplacement "";
  609.                     if (is_object($emplacement_obj->getNiveauUn())) {
  610.                         $titreEmplacement .= " ".$emplacement_obj->getNiveauUn()->getLibelle();
  611.                     }
  612.                     if (is_object($emplacement_obj->getNiveauDeux())) {
  613.                         $titreEmplacement .= " ".$emplacement_obj->getNiveauDeux()->getLibelle();
  614.                     }
  615.                     if (is_object($emplacement_obj->getNiveauTrois())) {
  616.                         $titreEmplacement .= " ".$emplacement_obj->getNiveauTrois()->getLibelle();
  617.                     }
  618.                     if (is_object($emplacement_obj->getNiveauQuatre())) {
  619.                         $titreEmplacement .= " ".$emplacement_obj->getNiveauQuatre()->getLibelle();
  620.                     }
  621.                     $emplacement_obj->setLibelle($titreEmplacement);
  622.                     $em->persist($emplacement_obj);
  623.                     $em->flush();
  624.                     $em->refresh($emplacement_obj);
  625.                     return new Response(
  626.                         json_encode(
  627.                             [
  628.                                 "idArticleCommande"  => $idArticleCommande,
  629.                                 'libelleEmplacement' => $emplacement_obj->getLibelle(),
  630.                                 'idEmplacement'      => $emplacement_obj->getId(),
  631.                                 'rendu'              => '',
  632.                                 'valide'             => '0',
  633.                                 'url'                => '',
  634.                                 'titre'              => '',
  635.                                 'type'               => 'callBackEmplacementCommandeFournisseur',
  636.                                 'emplacement'        => $donneesEmplacement,
  637.                             ]
  638.                         ),
  639.                         200,
  640.                         ['Content-Type' => 'application/json']
  641.                     );
  642.                 }
  643.             }
  644.             $this->addFlash('warning''Emplacement non reconnu ('.$request->request->get('codeBarre').').');
  645.         }
  646.         $rendu $this->renderView('GestionComerciale/CommandeFournisseurSimplifie/reception-emplacement.html.twig', ['article' => $article]);
  647.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  648.     }
  649. }