src/Controller/GestionComerciale/ReceptionController.php line 169

Open in your IDE?
  1. <?php
  2. namespace App\Controller\GestionComerciale;
  3. use App\Entity\Articles\MouvementStock;
  4. use App\Entity\Etiquettes\Etiquette;
  5. use App\Entity\GestionComerciale\ArticleCommande;
  6. use App\Entity\GestionComerciale\CommandeFournisseur;
  7. use App\Entity\GestionComerciale\Reception;
  8. use App\Entity\Taxes\Taxe;
  9. use App\Library\Datatable\Util\Datatable;
  10. use App\Security\Voter\EntityVoter;
  11. use App\Service\Fournisseurs\FournisseurService;
  12. use App\Service\GestionComerciale\CommandeFournisseurService;
  13. use App\Service\Utilisateur\ColonneTableauService;
  14. use Doctrine\ORM\EntityManagerInterface;
  15. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpFoundation\JsonResponse;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. use Symfony\Component\Validator\Validator\ValidatorInterface;
  21. use Symfony\Contracts\Translation\TranslatorInterface;
  22. class ReceptionController extends AbstractController
  23. {
  24.     /**
  25.      * @Route("/vente/reception/supprimer/multiple", name="dtc_reception_liste_supprimer")
  26.      */
  27.     public function supprimerMultipleAction(Request $requestEntityManagerInterface $em)
  28.     {
  29.         $url $this->generateUrl('dtc_reception_liste', []);
  30.         return new JsonResponse(['url' => $url'valide' => '1']);
  31.         $data $request->get('dataTables');
  32.         $ids  $data['actions'];
  33.         $repo $em->getRepository(Reception::class);
  34.         for ($i 0$i count($ids); $i++) {
  35.             $v $repo->find($ids[$i]);
  36.             if (is_object($v)) {
  37.                 $em->remove($v);
  38.             }
  39.         }
  40.         $em->flush();
  41.         $this->addFlash('notice'$translator->trans('Réceptions supprimées avec succès !'));
  42.         $url $this->generateUrl('dtc_reception_liste', []);
  43.         return new JsonResponse(['url' => $url'valide' => '1']);
  44.     }
  45.     /**
  46.      * @Route("/vente/reception/supprimer/{id}", name="dtc_reception_supprimer")
  47.      */
  48.     public function supprimerAction(Request $requestReception $receptionEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  49.     {
  50.         $titre_modal $translator->trans("Demande de confirmation");
  51.         $user        $this->getUser();
  52.         $form   $this->createForm(SupprimerReceptionType$reception);
  53.         $errors "";
  54.         $form->handleRequest($request);
  55.         if ($form->isSubmitted()) {
  56.             if ($form->isValid()) {
  57.                 $em->remove($reception);
  58.                 $em->flush();
  59.                 $this->addFlash(
  60.                     'notice',
  61.                     $translator->trans('Réception supprimée avec succès !')
  62.                 );
  63.                 $url $this->generateUrl('dtc_reception_liste', []);
  64.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  65.             } else {
  66.                 $errors $validator->validate($reception);
  67.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $reception->getId(), 'type' => '']);
  68.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  69.             }
  70.         }
  71.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'id' => $reception->getId(), 'type' => '''errors' => $errors]);
  72.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  73.     }
  74.     /**
  75.      * @Route("/vente/reception/modifier/{id}", name="dtc_reception_modifier")
  76.      */
  77.     public function modifierAction(Request $requestReception $receptionEntityManagerInterface $emTranslatorInterface $translatorCommandeFournisseurService $commandeService)
  78.     {
  79.         $titre_modal "Modifier une réception : ".$reception->getReference();
  80.         $user $this->getUser();
  81.         $etiquettes $em->getRepository(Etiquette::class)->findAll();
  82.         if ($request->isMethod('POST')) {
  83.             $valeurs $request->request->all();
  84.             $commandeService->modifierReception($reception$valeurs);
  85.             $this->addFlash('notice'$translator->trans('Mouvements de stock modifié avec succès !'));
  86.             $url $this->generateUrl('dtc_commande_fournisseur_modifier', ["id" => $reception->getCommandeFournisseur()->getId(), "tab" => "receptions"]);
  87.             return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  88.         }
  89.         //$rendu = $this->renderView('DTCGestionComercialeBundle:Reception:modifier_modal.html', array('form' => $form->createView(),'errors'=>$errors,'errorsSup'=>$errorsSup,'client'=>$client));
  90.         $rendu $this->renderView('GestionComerciale/Reception/modifier_modal.html.twig', ["reception" => $reception'etiquettes' => $etiquettes]);
  91.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  92.     }
  93.     /**
  94.      * @Route("", name="")
  95.      */
  96.     public function ___modifierAction(Request            $requestReception $receptionEntityManagerInterface $emTranslatorInterface $translator,
  97.                                       ValidatorInterface $validator
  98.     ) {
  99.         $user $this->getUser();
  100.         $reception->setUtilisateur($user);
  101.         $form   $this->createForm(ReceptionType$reception);
  102.         $errors "";
  103.         $form->handleRequest($request);
  104.         if ($form->isSubmitted()) {
  105.             $droit $this->isGranted(EntityVoter::UPDATEReception::class);
  106.             if ( ! $droit) {
  107.                 return $this->redirectToRoute('dtc_reception_modifier', ["id" => $reception->getId()]);
  108.             }
  109.             if ($form->isValid()) {
  110.                 $em->persist($reception);
  111.                 $em->flush();
  112.                 $this->addFlash(
  113.                     'notice',
  114.                     $translator->trans('Réception sauvegardée avec succès !')
  115.                 );
  116.             } else {
  117.                 $errors $validator->validate($reception);
  118.             }
  119.         }
  120.         return $this->render('GestionComerciale/Reception/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'modeReglement' => $reception]);
  121.     }
  122.     /**
  123.      * @Route("/vente/reception", name="dtc_reception_liste")
  124.      */
  125.     public function listerAction(Request   $request$commandeFournisseurId ''$aFacturer 1EntityManagerInterface $emColonneTableauService $serviceColonneTableau,
  126.                                  Datatable $datatableTranslatorInterface $translator)
  127.     {
  128.         if ($commandeFournisseurId != '') {
  129.             //$tableau_class_cellule[]=array("className"=>"colonne_id","targets"=>array(0),"visible"=>true,"orderable"=>false);
  130.             $tableau_class_cellule[] = [
  131.                 "className" => "visible_export colonne_id ",
  132.                 "targets"   => [0],
  133.                 "visible"   => false,
  134.             ];//$serviceColonneTableau->getColonneUtilisateur(Reception::class,"id"));
  135.             $tableau_class_cellule[] = [
  136.                 "className" => "visible_export colonne_id text-center",
  137.                 "targets"   => [1],
  138.                 "visible"   => true,
  139.             ];//$serviceColonneTableau->getColonneUtilisateur(Reception::class,"date"));
  140.             $tableau_class_cellule[] = [
  141.                 "className" => "visible_export colonne_id",
  142.                 "targets"   => [2],
  143.                 "visible"   => true,
  144.             ];//$serviceColonneTableau->getColonneUtilisateur(Reception::class,"reference"));
  145.             $tableau_class_cellule[] = [
  146.                 "className" => "visible_export colonne_id",
  147.                 "targets"   => [3],
  148.                 "visible"   => true,
  149.             ];//$serviceColonneTableau->getColonneUtilisateur(Reception::class,"cmdeFour"));
  150.             $tableau_class_cellule[] = [
  151.                 "className" => "visible_export colonne_id",
  152.                 "targets"   => [4],
  153.                 "visible"   => true,
  154.             ];//$serviceColonneTableau->getColonneUtilisateur(Reception::class,"fournisseur"));
  155.             $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [5], "visible" => true];
  156.             $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [6], "visible" => true];
  157.             $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-right""targets" => [7], "visible" => true];
  158.             $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-right""orderable" => false"targets" => [8], "visible" => true];
  159.             //$tableau_class_cellule[]=array("orderable"=>false,"className"=>"colonne_id","targets"=>array(9),"visible"=>true);
  160.         } else {
  161.             $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [0], "visible" => true"orderable" => false];
  162.             $tableau_class_cellule[] = [
  163.                 "className" => "visible_export colonne_id",
  164.                 "targets"   => [1],
  165.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(Reception::class, "id"),
  166.             ];
  167.             $tableau_class_cellule[] = [
  168.                 "className" => "visible_export colonne_id text-center",
  169.                 "targets"   => [2],
  170.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(Reception::class, "date"),
  171.             ];
  172.             $tableau_class_cellule[] = [
  173.                 "className" => "visible_export colonne_id",
  174.                 "targets"   => [3],
  175.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(Reception::class, "reference"),
  176.             ];
  177.             $tableau_class_cellule[] = [
  178.                 "className" => "visible_export colonne_id",
  179.                 "targets"   => [4],
  180.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(Reception::class, "numBL"),
  181.             ];
  182.             $tableau_class_cellule[] = [
  183.                 "className" => "visible_export colonne_id",
  184.                 "targets"   => [5],
  185.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(Reception::class, "cmdeFour"),
  186.             ];
  187.             $tableau_class_cellule[] = [
  188.                 "className" => "visible_export colonne_id",
  189.                 "targets"   => [6],
  190.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(Reception::class, "fournisseur"),
  191.             ];
  192.             $tableau_class_cellule[] = [
  193.                 "className" => "visible_export colonne_id",
  194.                 "targets"   => [7],
  195.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(Reception::class, "utilisateur"),
  196.             ];
  197.             $tableau_class_cellule[] = [
  198.                 "className" => "visible_export colonne_id text-right",
  199.                 "orderable" => false,
  200.                 "targets"   => [8],
  201.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(Reception::class, "totalHt"),
  202.             ];
  203.             $tableau_class_cellule[] = ["orderable" => false"className" => "colonne_id""targets" => [9], "visible" => true];
  204.         }
  205.         $this->datatable($request$datatable$translator''$commandeFournisseurId$aFacturer);
  206.         $param $request->query->all();
  207.         /*
  208.         $em = $em;
  209.         $repo_fournisseur = $em->getRepository('DTCFournisseursBundle:Fournisseur');
  210.      $fournisseurs = $repo_fournisseur->findBy(array(), array('libelle' => 'ASC'));
  211.               *
  212.               */
  213.         if ($commandeFournisseurId == '') {
  214.             $receptions = [];
  215.             $mvtsStock $em->getRepository(MouvementStock::class)->findBy([
  216.                                                                                'aFacturer'            => $aFacturer,
  217.                                                                                'factureFournisseur'   => null,
  218.                                                                                'raisonMouvementStock' => [332//Achat
  219.                                                                            ]);
  220.             foreach ($mvtsStock as $mvtStock) {
  221.                 if (is_object($mvtStock->getReception())) {
  222.                     $receptions[$mvtStock->getId()] = $mvtStock->getReception();
  223.                 }
  224.             }
  225.             return $this->render(
  226.                 'GestionComerciale/Reception/lister.html.twig',
  227.                 ['parametres' => $param'tableauClassColonne' => $tableau_class_cellule'receptions' => $receptions'mvtsStock' => $mvtsStock]
  228.             );//,"fournisseurs"=>$fournisseurs
  229.         } else {
  230.             $receptions = [];
  231.             $mvtsStock  $em->getRepository(MouvementStock::class)->findBy([
  232.                                                                                 //'aFacturer'=>1,
  233.                                                                                 //'factureFournisseur' => null,
  234.                                                                                 //'raisonMouvementStock' => 3 //Achat
  235.                                                                                 'commandeFournisseur' => $commandeFournisseurId,
  236.                                                                             ]);
  237.             foreach ($mvtsStock as $mvtStock) {
  238.                 if (is_object($mvtStock->getReception())) {
  239.                     $receptions[$mvtStock->getId()] = $mvtStock->getReception();
  240.                 }
  241.             }
  242.             return $this->render(
  243.                 'GestionComerciale/Reception/listerByCF.html.twig',
  244.                 [
  245.                     'commandeFournisseurId' => $commandeFournisseurId,
  246.                     'tableauClassColonne'   => $tableau_class_cellule,
  247.                     'receptions'            => $receptions,
  248.                     'mvtsStock'             => $mvtsStock,
  249.                 ]
  250.             );
  251.         }
  252.     }
  253.     /**
  254.      * set datatable configs
  255.      *
  256.      * @return \App\Library\Datatable\Util\Datatable
  257.      */
  258.     private function datatable(Request $requestDatatable $datatableTranslatorInterface $translator$fournisseurId ''$commandeFournisseurId ''$aFacturer 1)
  259.     {
  260.         $param $request->query->all();
  261.         $datatable->setEntity(Reception::class, "x")
  262.                   ->setFields(
  263.                       [
  264.                           $translator->trans("ID")                   => 'x.id',
  265.                           $translator->trans("Date")                 => 'x.date',
  266.                           $translator->trans("Référence")            => 'x.reference',
  267.                           $translator->trans("N° de BL")             => 'x.bonLivraison',
  268.                           $translator->trans("Commande fournisseur") => 'cf.reference',
  269.                           'Fournisseur'                              => 'f.libelle',
  270.                           'Receptionneur'                            => 'u.nom',
  271.                           'Total HT'                                 => 'x.id',
  272.                           $translator->trans("Actions")              => 'x.id',
  273.                           //"f" => 'f.id',
  274.                           //"fe" => 'fe.id',
  275.                           "_identifier_"                             => 'x.id',
  276.                       ]
  277.                   )
  278.                   ->addJoin('x.commandeFournisseur''cf'\Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
  279.                   ->addJoin('cf.fournisseur''f'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  280.                   ->addJoin('f.parent''fe'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  281.             //->addJoin('x.mouvementsStock', 'mvts', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  282.                   ->addJoin('x.utilisateur''u'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  283.                   ->setRenderers(
  284.                       [
  285.                           /*0 => array(
  286.                           'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
  287.                            'params' => array(
  288.                                       'edit_route'    => 'dtc_reception_modifier'
  289.                                   ),
  290.                           ),
  291.                                                            *
  292.                                                            */
  293.                           => ['view' => 'FO/DataTable/heure.html.twig'],
  294.                           => ['view' => 'FO/DataTable/reception.html.twig'],
  295.                           => [
  296.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  297.                               'params' => [
  298.                                   'edit_route'   => 'dtc_commande_fournisseur_modifier',
  299.                                   'typeDocument' => 'commandeFournisseur',
  300.                               ],
  301.                           ],
  302.                           => [
  303.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  304.                               'params' => [
  305.                                   'edit_route'   => 'dtc_fournisseur_modifier',
  306.                                   'typeDocument' => 'fournisseur',
  307.                               ],
  308.                           ],
  309.                           => ['view' => 'FO/DataTable/utilisateur.html.twig'],
  310.                           => ['view' => 'FO/DataTable/total_ht_reception.html.twig'],
  311.                           => [
  312.                               'view'   => 'FO/DataTable/actions.html.twig',
  313.                               'params' => [
  314.                                   'edit_route_modal' => 'dtc_reception_modifier',
  315.                                   //'edit_route'    => 'dtc_reception_modifier',
  316.                                   //'dupliquer_route'    => 'dtc_reception_dupliquer',
  317.                                   //'supprimer_route'    => 'dtc_reception_supprimer',
  318.                                   'objet'            => Reception::class,
  319.                                   'deplierReception' => true,
  320.                               ],
  321.                           ],
  322.                       ]
  323.                   )
  324.             //->setGroupBy("mvts.reception")
  325.                   ->setOrder("x.id""desc")
  326.             //->setWhere("mvts.factureFournisseur = :factureFournisseur", array('factureFournisseur'=>null))
  327.                   ->setSearch(true)
  328.                   ->setSearchFields([2345]);
  329.         if (($fournisseurId == '' || == 1) && $commandeFournisseurId == '') {
  330.             $datatable->setMultiple(
  331.                 [
  332.                     'facturer' => [
  333.                         'title' => 'Facturer'.$commandeFournisseurId,
  334.                         'route' => 'dtc_facturer_fournisseur' // path to multiple delete route
  335.                     ],
  336.                 ]
  337.             );
  338.         }
  339.         // ->setWhere("x.aFacturer = :aFacturer", array('aFacturer'=>1))
  340.         if ($aFacturer == 1) {
  341.             $where      'x.aFacturer = :aFacturer';
  342.             $parameters = ["aFacturer" => $aFacturer];
  343.         } else {
  344.             $where      "";
  345.             $parameters = [];
  346.         }
  347.         if (array_key_exists('parametres'$param)) {
  348.             if (array_key_exists('fournisseur'$param["parametres"]) and $param["parametres"]["fournisseur"] > 0) {
  349.                 $parameters["fournisseur"] = $param["parametres"]["fournisseur"];
  350.                 if ($where != "") {
  351.                     $where .= " AND ";
  352.                 }
  353.                 $where .= "(f.id = :fournisseur or fe.id = :fournisseur) ";
  354.             }
  355.             if (array_key_exists('date_debut'$param["parametres"]) and $param["parametres"]["date_debut"] != "") {
  356.                 $param["parametres"]["date_debut"] = \DateTime::createFromFormat('d/m/Y'$param["parametres"]["date_debut"]);
  357.                 $param["parametres"]["date_debut"]->setTime(000000);
  358.                 $parameters["date_debut"] = $param["parametres"]["date_debut"];
  359.                 if ($where != "") {
  360.                     $where .= " AND ";
  361.                 }
  362.                 $where .= "x.date >= :date_debut";
  363.             }
  364.             if (array_key_exists('date_fin'$param["parametres"]) and $param["parametres"]["date_fin"] != "") {
  365.                 $param["parametres"]["date_fin"] = \DateTime::createFromFormat('d/m/Y'$param["parametres"]["date_fin"]);
  366.                 $param["parametres"]["date_fin"]->setTime(235959);
  367.                 $parameters["date_fin"] = $param["parametres"]["date_fin"];
  368.                 if ($where != "") {
  369.                     $where .= " AND ";
  370.                 }
  371.                 $where .= "x.date <= :date_fin";
  372.             }
  373.         }
  374.         if ($commandeFournisseurId != '') {
  375.             if ($where != "") {
  376.                 $where .= " AND ";
  377.             }
  378.             $parameters["commandeFournisseurId"] = $commandeFournisseurId;
  379.             $where                               .= "x.commandeFournisseur = :commandeFournisseurId";
  380.         }
  381.         if ($where != "") {
  382.             $datatable->setWhere($where$parameters);
  383.         }
  384.         return $datatable;
  385.     }
  386.     /**
  387.      * @Route("/vente/reception/grid", name="dtc_reception_liste_grid")
  388.      */
  389.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  390.     {
  391.         $fournisseurId         $request->query->get('fournisseurId');
  392.         $commandeFournisseurId $request->query->get('commandeFournisseurId');
  393.         $aFacturer             $request->query->get('aFacturer');
  394.         if ($aFacturer == "") {
  395.             $aFacturer "1";
  396.         }
  397.         return $this->datatable($request$datatable$translator$fournisseurId$commandeFournisseurId$aFacturer)->execute();
  398.     }
  399.     /**
  400.      * @Route("/achat/facture/ajouter-receptions/{id}", name="dtc_facture_fournisseur_ajouter_receptions")
  401.      */
  402.     public function ajouterReceptionsSurFactureFournisseurAction(Request                    $request$idEntityManagerInterface $emFournisseurService $fournisseurService,
  403.                                                                  CommandeFournisseurService $commandeServiceTranslatorInterface $translator
  404.     ) {
  405.         $factureFournisseur $em->getRepository(CommandeFournisseur::class)->find($id);
  406.         $titre_modal $translator->trans("Ajouter des produits réceptionnés");
  407.         $ids $request->request->get('mouvementsStock');
  408.         if ($ids != '') {
  409.             $mvtsStock             = [];
  410.             $fournisseur           $factureFournisseur->getFournisseur();
  411.             $acs                   '';
  412.             $repo_mvt_stock        $em->getRepository(MouvementStock::class);
  413.             $repo_article_commande $em->getRepository(ArticleCommande::class);
  414.             $repo_taxe             $em->getRepository(Taxe::class);
  415.             $taxes                 $repo_taxe->findAll();
  416.             $acsAmodifier = [];
  417.             $infos        '';
  418.             foreach ($ids as $id) {
  419.                 $mvtStock $repo_mvt_stock->find($id);
  420.                 if (is_object($mvtStock)) {
  421.                     //Vérifier si l'article est déjà sur la facture et au meme prix.
  422.                     $ac    $repo_article_commande->findOneBy([
  423.                                                                    'commandeFournisseur' => $factureFournisseur->getId(),
  424.                                                                    'article'             => $mvtStock->getArticle()->getId(),
  425.                                                                    //'prixBase'=>$mvtStock->getPrixAchat()
  426.                                                                    'prixBase'            => $mvtStock->getPrixSansRemise() * $mvtStock->getConditionAchat()->getCoefficientConditionnement(),
  427.                                                                ]);
  428.                     $infos $mvtStock->getCommandeFournisseur()->getId().' / '.$mvtStock->getArticle()->getId().' / '.$mvtStock->getPrixAchat();
  429.                     if (== && is_object($ac)) {
  430.                         $infos .= ' / objet trouvé';
  431.                         //modifier la quantite sur le front-office
  432.                         //ajouter le mouvement de stock à l'articleCommande
  433.                         $key $mvtStock->getArticle()->getId();
  434.                         if (array_key_exists($key$acsAmodifier)) {
  435.                             $acsAmodifier[$key]['quantite'] += floatval($mvtStock->getQuantite());
  436.                         } else {
  437.                             $acsAmodifier[$key]['quantite'] = floatval($mvtStock->getQuantite());
  438.                         }
  439.                         $acsAmodifier[$key]['mouvementStock'][] = $mvtStock;
  440.                         $ac->addMouvementsStock($mvtStock);
  441.                         $ac->addMouvementsStockFF($mvtStock);
  442.                         $mvtStock->setAFacturer(false);
  443.                         $em->persist($ac);
  444.                         $em->persist($mvtStock);
  445.                     } else {
  446.                         $mvtsStock[]                     = $mvtStock;
  447.                         $a                               = [];
  448.                         $a['mouvementStock']             = $mvtStock;
  449.                         $a['article']                    = $mvtStock->getArticle();
  450.                         $a['commandeFournisseur']        = $mvtStock->getCommandeFournisseur()->getId();
  451.                         $a['conditionAchat']             = $mvtStock->getConditionAchat();
  452.                         $a['coefficientConditionnement'] = $mvtStock->getConditionAchat()->getCoefficientConditionnement();
  453.                         $a['majCondAchat']               = '';
  454.                         $a['fraisAnnexes']               = $mvtStock->getFraisAnnexes();
  455.                         if ($mvtStock->getLibelle() != '') {
  456.                             $a['libelle'] = $mvtStock->getLibelle();
  457.                         } else {
  458.                             $a['libelle'] = $mvtStock->getArticle()->getLibelle();
  459.                         }
  460.                         $a['quantite']    = $mvtStock->getQuantite();
  461.                         $a['ral']         = "0";
  462.                         $a['commentaire'] = "";
  463.                         /*
  464.                         $ac = $mvtStock->getArticleCommande();
  465.                         if(is_object($ac)){
  466.                             $a['remise'] = $ac->getRemise();
  467.                             $a['remiseSupplementaire']= $ac->getRemiseSupplementaire();
  468.                         } else {
  469.                             $a['remise'] = '';
  470.                             $a['remiseSupplementaire']= '';
  471.                         }
  472.                          *
  473.                          */
  474.                         $a['remise']               = $mvtStock->getRemise();
  475.                         $a['remiseSupplementaire'] = $mvtStock->getRemiseSuppl();
  476.                         $a['totalHt'] = floatval($mvtStock->getPrixAchat()) * floatval($mvtStock->getQuantite());
  477.                         //$a['prixBase'] = $mvtStock->getPrixAchat();
  478.                         $a['prixBase'] = $mvtStock->getPrixSansRemise() * $mvtStock->getConditionAchat()->getCoefficientConditionnement();
  479.                         $articleCommande = new ArticleCommande;
  480.                         $articleCommande->setQuantite($a['quantite']);
  481.                         $articleCommande->setPrixBase($a['prixBase']);
  482.                         $articleCommande->setRemise($a['remise']);
  483.                         $articleCommande->setRemiseSupplementaire($a['remiseSupplementaire']);
  484.                         $articleCommande->setFraisAnnexes($a['fraisAnnexes']);
  485.                         $articleCommande->setLibelle($a['libelle']);
  486.                         $articleCommande->setArticle($a['article']);
  487.                         //$articleCommande->setTvaAchat($article['tva']);
  488.                         //$articleCommande->setTvaVente($article['tva']);
  489.                         $articleCommande->setConditionAchat($a['conditionAchat']);
  490.                         $articleCommande->setCoefficientConditionnement($a['coefficientConditionnement']);
  491.                         $articleCommande->addMouvementsStockFF($mvtStock);
  492.                         $articleCommande->addMouvementsStock($mvtStock);
  493.                         $articleCommandeCf $mvtStock->getArticleCommandeCf();
  494.                         if (is_object($articleCommandeCf)) {
  495.                             $articleCommande->setAjouterFraisPrixAchat($articleCommandeCf->getAjouterFraisPrixAchat());
  496.                         }
  497.                         $taxe $repo_taxe->find(5);
  498.                         if (is_object($mvtStock->getArticle()) && is_object($mvtStock->getCommandeFournisseur()->getFournisseur())) {
  499.                             $taxe $fournisseurService->getTaxe($mvtStock->getCommandeFournisseur()->getFournisseur(), $mvtStock->getArticle());
  500.                         }
  501.                         if (is_object($taxe)) {
  502.                             $a['tva']  = $taxe->getTaux();
  503.                             $a['taxe'] = $taxe;
  504.                             $articleCommande->setTva($taxe->getTaux());
  505.                             $articleCommande->setTaxe($taxe);
  506.                         }
  507.                         $articleCommande->setCommandeFournisseur($factureFournisseur);
  508.                         $mvtStock->setAFacturer(false);
  509.                         $em->persist($mvtStock);
  510.                         $em->persist($articleCommande);
  511.                         $em->flush();
  512.                         /*
  513.                         $factureFournisseur->addArticleCommande($articleCommande);
  514.                         $em->persist($factureFournisseur);
  515.                         *
  516.                         */
  517.                         $acs .= $this->renderView(
  518.                             'GestionComerciale/ArticleCommande/template_tr_facture_fournisseur.html.twig',
  519.                             ['a' => $articleCommande'boucle' => "0"'fournisseur' => $fournisseur'estAnnulable' => 1'taxes' => $taxes]
  520.                         );
  521.                     }
  522.                 }
  523.             }
  524.             /*
  525.             $rendu = $this->renderView('GestionComerciale/Reception/ajouter-ac-facture-fournisseur.html.twig',array('mvtsStock'=>$mvtsStock, 'acs'=>$acs, 'acsAmodifier'=>$acsAmodifier, 'infos'=>$infos));
  526.             return new Response(json_encode(array('rendu'=>$rendu,'valide'=>'0','url'=>'','titre'=>$titre_modal)), 200, array('Content-Type'=>'application/json'));
  527.             */
  528.             $commandeService->sauvegarderFacture($factureFournisseur, [], falsetrue);
  529.             $url $this->generateUrl('dtc_facture_fournisseur_modifier', ['id' => $factureFournisseur->getId()]);
  530.             return new JsonResponse(['rendu' => '''valide' => '1''url' => $url], 200, ['Content-Type' => 'application/json']);
  531.         }
  532.         $fournisseurId $factureFournisseur->getFournisseur()->getId();
  533.         $receptionsAfacturer $em->getRepository(Reception::class)->findBy([
  534.                                                                                 'fournisseur' => $fournisseurId,
  535.                                                                                 'aFacturer'   => 1,
  536.                                                                             ]);
  537.         //$rendu = $this->renderView('GestionComerciale/Reception/lister-modal.html.twig',array('tableauClassColonne'=>$tableau_class_cellule, 'receptions'=>$receptionsAfacturer, 'ids'=>$ids, 'fournisseurId'=>$fournisseurId));
  538.         $rendu $this->renderView('GestionComerciale/Reception/lister-modal.html.twig', ['receptions' => $receptionsAfacturer'ids' => $ids'fournisseurId' => $fournisseurId]);
  539.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  540.     }
  541.     /**
  542.      * @Route("/receptions/charger-tableau/{id}", name="dtc_receptions_charger_tableau")
  543.      */
  544.     public function chargerTableauAction(Request $requestCommandeFournisseur $commande)
  545.     {
  546.         $rendu $this->renderView('GestionComerciale/Reception/charger-tableau.html.twig', ['commande' => $commande]);
  547.         return new JsonResponse(['rendu' => $rendu]);
  548.     }
  549. }