src/Controller/GestionComerciale/RetourFournisseurController.php line 588

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\MouvementStock;
  6. use App\Entity\Articles\RaisonMouvementStock;
  7. use App\Entity\FO\Societe;
  8. use App\Entity\GestionComerciale\ArticleCommande;
  9. use App\Entity\GestionComerciale\CommandeFournisseur;
  10. use App\Entity\GestionComerciale\RetourFournisseur;
  11. use App\Entity\GestionComerciale\RetourFournisseurArticleCommande;
  12. use App\Form\GestionComerciale\RetourFournisseurType;
  13. use App\Form\GestionComerciale\SupprimerRetourFournisseurType;
  14. use App\Library\Datatable\Util\Datatable;
  15. use App\Security\Voter\EntityVoter;
  16. use App\Service\Articles\MouvementStockService;
  17. use Doctrine\ORM\EntityManagerInterface;
  18. use Knp\Snappy\Pdf;
  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\Routing\Annotation\Route;
  24. use Symfony\Component\Validator\Validator\ValidatorInterface;
  25. use Symfony\Contracts\Translation\TranslatorInterface;
  26. class RetourFournisseurController extends AbstractController
  27. {
  28.     /**
  29.      * @Route("/retour-fournisseur/nouveau/{id}/{type}", name="dtc_retour_fournisseur_ajouter")
  30.      */
  31.     public function ajouterAction(Request            $request$id$type ""EntityManagerInterface $emMouvementStockService $mvtStockServiceTranslatorInterface $translator,
  32.                                   ValidatorInterface $validator
  33.     ) {
  34.         $titre_modal       $translator->trans("Nouveau retour");
  35.         $page              $request->query->get('page');
  36.         $retourFournisseur = new RetourFournisseur();
  37.         $user              $this->getUser();
  38.         $retourFournisseur->setUtilisateur($user);
  39.         $get $request->query->all();
  40.         $repo_objet $em->getRepository(CommandeFournisseur::class);
  41.         $objet      $repo_objet->find($id);
  42.         $retourFournisseur->setLibelle("Retour fournisseur : ".$objet->getReference());
  43.         $form   $this->createForm(RetourFournisseurType::class, $retourFournisseur);
  44.         $errors "";
  45.         $form->handleRequest($request);
  46.         $articleCommande = [];
  47.         if (array_key_exists('articles'$get) && count($get["articles"] > 0)) {
  48.             $repo_article_commande $em->getRepository(ArticleCommande::class);
  49.             foreach ($get["articles"] as $ac) {
  50.                 $ac_obj $repo_article_commande->find($ac);
  51.                 $retourFournisseurArticleCommande = new RetourFournisseurArticleCommande();
  52.                 $retourFournisseurArticleCommande->setArticleCommande($ac_obj);
  53.                 $retourFournisseurArticleCommande->setRetourFournisseur($retourFournisseur);
  54.                 $retourFournisseurArticleCommande->setQuantite($ac_obj->getQuantite());
  55.                 $articleCommande[] = $retourFournisseurArticleCommande;
  56.                 /*
  57.                 if(is_object($ac_obj) && !is_object($ac_obj->getRetourFournisseur())) {
  58.                     $articleCommande[] = $ac_obj;
  59.                 }
  60.                 */
  61.             }
  62.         }
  63.         if ($form->isSubmitted()) {
  64.             $post $request->request->all();
  65.             if ($form->isValid()) {
  66.                 $post $request->request->all();
  67.                 if ($type == 'commandeFournisseur') {
  68.                     $repo_objet $em->getRepository(CommandeFournisseur::class);
  69.                     $objet      $repo_objet->find($id);
  70.                     $retourFournisseur->setCommandeFournisseur($objet);
  71.                     $retourFournisseur->setFournisseur(null);
  72.                     if (is_object($objet->getFournisseur())) {
  73.                         $retourFournisseur->setFournisseur($objet->getFournisseur());
  74.                     }
  75.                     //print_r($post);
  76.                     $raison_regulation $em->getRepository(RaisonMouvementStock::class)->find(14);
  77.                     $compteur_boucle 0;
  78.                     if (count($articleCommande) > 0) {
  79.                         foreach ($articleCommande as $ac) {
  80.                             if (isset($post["articleCommande"]) && in_array($ac->getArticleCommande()->getId(), $post["articleCommande"])) {
  81.                                 $retourFournisseurArticleCommande = new RetourFournisseurArticleCommande();
  82.                                 $retourFournisseurArticleCommande->setRetourFournisseur($retourFournisseur);
  83.                                 $retourFournisseurArticleCommande->setArticleCommande($ac->getArticleCommande());
  84.                                 //$retourFournisseurArticleCommande->setQuantite($post["qte"][$compteur_boucle]);
  85.                                 $retourFournisseurArticleCommande->setQuantite($post["qte_ac_".$ac->getArticleCommande()->getId()]);
  86.                                 $em->persist($retourFournisseurArticleCommande);
  87.                                 if (== 1) {
  88.                                     $article $em->getRepository(Article::class)->find($ac->getArticleCommande()->getArticle()->getId());
  89.                                     $ms      = new MouvementStock();
  90.                                     $ms->setArticle($article);
  91.                                     $ms->setUtilisateur($user);
  92.                                     //$ms->setQuantite($post["qte"][$compteur_boucle]);
  93.                                     $ms->setQuantite($post["qte_ac_".$ac->getArticleCommande()->getId()]);
  94.                                     $ms->setCommentaire("Régulation suite retour fournisseur commande : ".$objet->getReference());
  95.                                     $ms->setRaisonMouvementStock($raison_regulation);
  96.                                     $dernierMouvement     $em->getRepository(MouvementStock::class)->findOneBy(['article' => $article], ['id' => 'DESC']);
  97.                                     $dernierMouvementDate $em->getRepository(MouvementStock::class)->getDernierMouvementDateHeure($article->getId(), $ms->getDateMvt());
  98.                                     $dernierMouvement $em->getRepository(MouvementStock::class)->find($dernierMouvementDate["id"]);
  99.                                     if (is_object($dernierMouvement)) {
  100.                                         //$ms->setPrixAchat($dernierMouvement->getPrixAchat());
  101.                                         $prixRegulation 0;
  102.                                         if ($dernierMouvement->getCpump() != null && $dernierMouvement->getCpump() != "") {
  103.                                             $prixRegulation $dernierMouvement->getCpump();
  104.                                         } elseif ($dernierMouvement->getAnnexe() != null && $dernierMouvement->getAnnexe() != "") {
  105.                                             $prixRegulation $dernierMouvement->getAnnexe();
  106.                                         } else {
  107.                                             $repo_condha $em->getRepository(ConditionAchat::class);
  108.                                             $condHa      $repo_condha->findOneBy(["article" => $article"defaut" => 1]);
  109.                                             if (is_object($condHa)) {
  110.                                                 $devise null;
  111.                                                 $prix   $condHa->getPrixAchatNet();
  112.                                                 if ($condHa->getCoefficientConditionnement() != 0) {
  113.                                                     $prix $prix $condHa->getCoefficientConditionnement();
  114.                                                 }
  115.                                                 $tauxChange  1;
  116.                                                 $fournisseur $condHa->getFournisseur();
  117.                                                 if (is_object($fournisseur)) {
  118.                                                     $devise $fournisseur->getDevise();
  119.                                                 }
  120.                                                 if (is_object($devise) && $devise->getTauxChange() != 0) {
  121.                                                     $tauxChange $devise->getTauxChange();
  122.                                                 }
  123.                                                 $prix           $prix $tauxChange;
  124.                                                 $prixRegulation $prix;
  125.                                             } else {
  126.                                                 $devise null;
  127.                                                 $condHa $repo_condha->findOneBy(["article" => $article]);
  128.                                                 if (is_object($condHa)) {
  129.                                                     $prix $condHa->getPrixAchatNet();
  130.                                                     if ($condHa->getCoefficientConditionnement() != 0) {
  131.                                                         $prix $prix $condHa->getCoefficientConditionnement();
  132.                                                     }
  133.                                                     $tauxChange  1;
  134.                                                     $fournisseur $condHa->getFournisseur();
  135.                                                     if (is_object($fournisseur)) {
  136.                                                         $devise $fournisseur->getDevise();
  137.                                                     }
  138.                                                     if (is_object($devise) && $devise->getTauxChange() != 0) {
  139.                                                         $tauxChange $devise->getTauxChange();
  140.                                                     }
  141.                                                     $prix $prix $tauxChange;
  142.                                                     $prixRegulation $prix;
  143.                                                 }
  144.                                             }
  145.                                         }
  146.                                         $ms->setPrixAchat($prixRegulation);
  147.                                         $ms->setPrixSansRemise($prixRegulation);
  148.                                     }
  149.                                     $em->persist($retourFournisseur);
  150.                                     $em->flush();
  151.                                     $ms->setUtilisateur($user);
  152.                                     $mvtStockService->sauvegarder($ms$article"regulation");
  153.                                 }
  154.                                 $compteur_boucle++;
  155.                             }
  156.                         }
  157.                     }
  158.                     $url $this->generateUrl('dtc_commande_fournisseur_modifier', ['id' => $objet->getId(), 'tab' => 'retours']);
  159.                 }
  160.                 $em->persist($retourFournisseur);
  161.                 $em->flush();
  162.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  163.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]);
  164.                 } else {
  165.                     $this->addFlash('notice'$translator->trans('Retour fournisseur ajouté avec succès !'));
  166.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url], 200, ['Content-Type' => 'application/json']);
  167.                 }
  168.             } else {
  169.                 $errors $validator->validate($retourFournisseur);
  170.                 $rendu  $this->renderView(
  171.                     'GestionComerciale/RetourFournisseur/ajouter.html.twig',
  172.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'articleCommande' => $articleCommande]
  173.                 );
  174.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  175.             }
  176.         }
  177.         $rendu $this->renderView(
  178.             'GestionComerciale/RetourFournisseur/ajouter.html.twig',
  179.             ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'articleCommande' => $articleCommande]
  180.         );
  181.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  182.     }
  183.     /**
  184.      * @Route("/retour-fournisseur/modifier/{objet}/{id}/{type}", name="dtc_retour_fournisseur_modifier")
  185.      */
  186.     public function modifierAction(Request             $requestRetourFournisseur $objet$id$typeEntityManagerInterface $em
  187.                                    TranslatorInterface $translatorValidatorInterface $validator
  188.     ) {
  189.         $retourFournisseur $objet;
  190.         $titre_modal       $translator->trans("Modifier retour fournisseur");
  191.         $get               $request->query->all();
  192.         $user              $this->getUser();
  193.         $retourFournisseur->setUtilisateur($user);
  194.         $form   $this->createForm(RetourFournisseurType::class, $retourFournisseur);
  195.         $errors "";
  196.         $form->handleRequest($request);
  197.         $post $request->request->all();
  198.         $repo_retour_fournisseur_article_commande $em->getRepository(RetourFournisseurArticleCommande::class);
  199.         $retourFournisseurArticleCommande $repo_retour_fournisseur_article_commande->findBy(["retourFournisseur" => $retourFournisseur]);
  200.         $articleCommande                  $retourFournisseurArticleCommande;
  201.         if ($form->isSubmitted()) {
  202.             $droit $this->isGranted(EntityVoter::UPDATERetourFournisseur::class);
  203.             if ( ! $droit) {
  204.                 $rendu $this->renderView(
  205.                     'GestionComerciale/RetourFournisseur/ajouter.html.twig',
  206.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]
  207.                 );
  208.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  209.             }
  210.             if ($form->isValid()) {
  211.                 if ($type == 'commandeFournisseur') {
  212.                     $repo_objet $em->getRepository(CommandeFournisseur::class);
  213.                     $objet      $repo_objet->find($id);
  214.                     $retourFournisseur->setCommandeFournisseur($objet);
  215.                     $url $this->generateUrl('dtc_commande_fournisseur_modifier', ['id' => $objet->getId(), 'tab' => 'retours']);
  216.                 }
  217.                 //print_r($post["articleCommande"]);
  218.                 $compteur_boucle 0;
  219.                 if (count($articleCommande) > 0) {
  220.                     foreach ($articleCommande as $ac) {
  221.                         if (isset($post["articleCommande"]) && in_array($ac->getArticleCommande()->getId(), $post["articleCommande"])) {
  222.                             //echo "<div>A ==> ".$ac->getArticleCommande()->getId()."</div>";
  223.                             //$ac->setQuantite($post["qte"][$compteur_boucle]);
  224.                             $ac->setQuantite($post["qte_ac_".$ac->getArticleCommande()->getId()]);
  225.                             $em->persist($ac);
  226.                         } else {
  227.                             //echo "<div>B</div>";
  228.                             $em->remove($ac);
  229.                         }
  230.                         $compteur_boucle++;
  231.                     }
  232.                 }
  233.                 $em->persist($retourFournisseur);
  234.                 $em->flush();
  235.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  236.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]);
  237.                 } else {
  238.                     $this->addFlash('notice'$translator->trans('Retour fournisseur modifié avec succès !'));
  239.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  240.                 }
  241.             } else {
  242.                 $errors $validator->validate($retourFournisseur);
  243.                 $rendu  $this->renderView(
  244.                     'GestionComerciale/RetourFournisseur/ajouter.html.twig',
  245.                     [
  246.                         'objet'             => $objet,
  247.                         'form'              => $form->createView(),
  248.                         'errors'            => $errors,
  249.                         'id'                => $id,
  250.                         'type'              => $type,
  251.                         'objet'             => $objet,
  252.                         'articleCommande'   => $articleCommande,
  253.                         'retourFournisseur' => $retourFournisseur,
  254.                     ]
  255.                 );
  256.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  257.             }
  258.         }
  259.         $rendu $this->renderView(
  260.             'GestionComerciale/RetourFournisseur/ajouter.html.twig',
  261.             [
  262.                 'objet'             => $objet,
  263.                 'form'              => $form->createView(),
  264.                 'errors'            => $errors,
  265.                 'id'                => $id,
  266.                 'type'              => $type,
  267.                 'objet'             => $objet,
  268.                 'articleCommande'   => $articleCommande,
  269.                 'retourFournisseur' => $retourFournisseur,
  270.             ]
  271.         );
  272.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  273.     }
  274.     /**
  275.      * @Route("/retour-fournisseur/supprimer/{objet}/{id}/{type}", name="dtc_retour_fournisseur_supprimer")
  276.      */
  277.     public function supprimerAction(Request             $requestRetourFournisseur $objet$id$typeEntityManagerInterface $emMouvementStockService $mvtStockService,
  278.                                     TranslatorInterface $translatorValidatorInterface $validator
  279.     ) {
  280.         $retourFournisseur $objet;
  281.         $titre_modal       $translator->trans("Demande de confirmation");
  282.         $user              $this->getUser();
  283.         $get               $request->query->all();
  284.         $form              $this->createForm(SupprimerRetourFournisseurType::class, $retourFournisseur);
  285.         $errors            "";
  286.         $form->handleRequest($request);
  287.         if ($form->isSubmitted()) {
  288.             if ($form->isValid()) {
  289.                 $raison_regulation $em->getRepository(RaisonMouvementStock::class)->find(13);
  290.                 if ($type == 'commandeFournisseur') {
  291.                     $repo_article_commande   $em->getRepository(ArticleCommande::class);
  292.                     $article_commande_litige $repo_article_commande->findBy(["litige" => $retourFournisseur]);
  293.                     if (!= and count($article_commande_litige) > 0) {
  294.                         foreach ($article_commande_litige as $acl) {
  295.                             $acl->setRetourFournisseur(null);
  296.                             $em->persist($acl);
  297.                         }
  298.                     }
  299.                     $url $this->generateUrl('dtc_commande_fournisseur_modifier', ['id' => $id'tab' => 'retours']);
  300.                 }
  301.                 $repo_retour_fournisseur_article_commande $em->getRepository(RetourFournisseurArticleCommande::class);
  302.                 $article_commande_litige $repo_retour_fournisseur_article_commande->findBy(["retourFournisseur" => $retourFournisseur]);
  303.                 if (count($article_commande_litige) > 0) {
  304.                     foreach ($article_commande_litige as $ac) {
  305.                         $article $em->getRepository(Article::class)->find($ac->getArticleCommande()->getArticle()->getId());
  306.                         $ms      = new MouvementStock;
  307.                         $ms->setArticle($article);
  308.                         $ms->setUtilisateur($user);
  309.                         $ms->setQuantite($ac->getQuantite());
  310.                         $ms->setCommentaire("Régulation suite suppression retour fournisseur commande : ".$objet->getCommandeFournisseur()->getReference());
  311.                         $ms->setRaisonMouvementStock($raison_regulation);
  312.                         $dernierMouvement     $em->getRepository(MouvementStock::class)->findOneBy(['article' => $article], ['id' => 'DESC']);
  313.                         $dernierMouvementDate $em->getRepository(MouvementStock::class)->getDernierMouvementDateHeure($article->getId(), $ms->getDateMvt());
  314.                         $dernierMouvement $em->getRepository(MouvementStock::class)->find($dernierMouvementDate["id"]);
  315.                         if (is_object($dernierMouvement)) {
  316.                             //$ms->setPrixAchat($dernierMouvement->getPrixAchat());
  317.                             $prixRegulation 0;
  318.                             if ($dernierMouvement->getCpump() != null && $dernierMouvement->getCpump() != "") {
  319.                                 $prixRegulation $dernierMouvement->getCpump();
  320.                             } elseif ($dernierMouvement->getAnnexe() != null && $dernierMouvement->getAnnexe() != "") {
  321.                                 $prixRegulation $dernierMouvement->getAnnexe();
  322.                             } else {
  323.                                 $repo_condha $em->getRepository(ConditionAchat::class);
  324.                                 $condHa      $repo_condha->findOneBy(["article" => $article"defaut" => 1]);
  325.                                 if (is_object($condHa)) {
  326.                                     $devise null;
  327.                                     $prix   $condHa->getPrixAchatNet();
  328.                                     if ($condHa->getCoefficientConditionnement() != 0) {
  329.                                         $prix $prix $condHa->getCoefficientConditionnement();
  330.                                     }
  331.                                     $tauxChange  1;
  332.                                     $fournisseur $condHa->getFournisseur();
  333.                                     if (is_object($fournisseur)) {
  334.                                         $devise $fournisseur->getDevise();
  335.                                     }
  336.                                     if (is_object($devise) && $devise->getTauxChange() != 0) {
  337.                                         $tauxChange $devise->getTauxChange();
  338.                                     }
  339.                                     $prix           $prix $tauxChange;
  340.                                     $prixRegulation $prix;
  341.                                 } else {
  342.                                     $devise null;
  343.                                     $condHa $repo_condha->findOneBy(["article" => $article]);
  344.                                     if (is_object($condHa)) {
  345.                                         $prix $condHa->getPrixAchatNet();
  346.                                         if ($condHa->getCoefficientConditionnement() != 0) {
  347.                                             $prix $prix $condHa->getCoefficientConditionnement();
  348.                                         }
  349.                                         $tauxChange  1;
  350.                                         $fournisseur $condHa->getFournisseur();
  351.                                         if (is_object($fournisseur)) {
  352.                                             $devise $fournisseur->getDevise();
  353.                                         }
  354.                                         if (is_object($devise) && $devise->getTauxChange() != 0) {
  355.                                             $tauxChange $devise->getTauxChange();
  356.                                         }
  357.                                         $prix $prix $tauxChange;
  358.                                         $prixRegulation $prix;
  359.                                     }
  360.                                 }
  361.                             }
  362.                             $ms->setPrixAchat($prixRegulation);
  363.                             $ms->setPrixSansRemise($prixRegulation);
  364.                         }
  365.                         $em->persist($retourFournisseur);
  366.                         $em->flush();
  367.                         $ms->setUtilisateur($user);
  368.                         $mvtStockService->sauvegarder($ms$article"regulation");
  369.                     }
  370.                 }
  371.                 $em->remove($retourFournisseur);
  372.                 $em->flush();
  373.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  374.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]);
  375.                 } else {
  376.                     $this->addFlash('notice'$translator->trans('RetourFournisseur supprimé avec succès !'));
  377.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  378.                 }
  379.             } else {
  380.                 $errors $validator->validate($retourFournisseur);
  381.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  382.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  383.             }
  384.         }
  385.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  386.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  387.     }
  388.     /**
  389.      * @Route("", name="")
  390.      */
  391.     public function listerAction(Request $request$id$type ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  392.     {
  393.         $visibilite_colonne_commande_client      true;
  394.         $visibilite_colonne_client               true;
  395.         $visibilite_colonne_commande_fournisseur true;
  396.         $visibilite_colonne_fournisseur          true;
  397.         if ($type == 'commandeFournisseur') {
  398.             $repo_objet $em->getRepository(CommandeFournisseur::class);
  399.             $objet      $repo_objet->find($id);
  400.             $visibilite_colonne_commande_client      false;
  401.             $visibilite_colonne_client               false;
  402.             $visibilite_colonne_commande_fournisseur false;
  403.             $visibilite_colonne_fournisseur          false;
  404.         }
  405.         $tableau_class_cellule = [];
  406.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-center""targets" => [0], "visible" => true"orderable" => true"searchable" => true];
  407.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [1], "visible" => true"orderable" => true"searchable" => true];
  408.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [2], "visible" => true"orderable" => true"searchable" => true];
  409.         $tableau_class_cellule[] = ["orderable" => false"className" => "colonne_id""targets" => [3], "visible" => true];
  410.         $this->datatable($datatable$translator$objet$type);
  411.         return $this->render('GestionComerciale/RetourFournisseur/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type]);
  412.     }
  413.     /**
  414.      * set datatable configs
  415.      *
  416.      * @return \App\Library\Datatable\Util\Datatable
  417.      */
  418.     private function datatable(Datatable $datatableTranslatorInterface $translator$objet ""$type "")
  419.     {
  420.         $type_jointure    'x.'.$type;
  421.         $where            "";
  422.         $parametres_where = [];
  423.         if ($type != "") {
  424.             $where            $type_jointure.' = :objet';
  425.             $parametres_where = ['objet' => $objet];
  426.         }
  427.         $datatable->setDatatableId('dta-retours-fournisseur')
  428.                   ->setEntity(RetourFournisseur::class, "x")
  429.                   ->setFields(
  430.                       [
  431.                           //$translator->trans("ID") =>  'x.id',
  432.                           $translator->trans("Date")        => 'x.date',
  433.                           $translator->trans("Fournisseur") => 'f.reference',
  434.                           $translator->trans("Référence")   => 'x.reference',
  435.                           $translator->trans("Actions")     => 'x.id',
  436.                           "_identifier_"                    => 'x.id',
  437.                       ]
  438.                   )
  439.                   ->addJoin('x.commandeFournisseur''cf'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  440.                   ->addJoin('x.fournisseur''f'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  441.                   ->setRenderers(
  442.                       [
  443.                           => [
  444.                               'view'   => 'FO/DataTable/date.html.twig',
  445.                               'params' => [],
  446.                           ],
  447.                           => [
  448.                               'view'   => 'FO/DataTable/actions_modal.html.twig',
  449.                               'params' => [
  450.                                   'pdf_route'                  => 'dtc_retour_fournisseur_pdf',
  451.                                   'edit_route'                 => 'dtc_retour_fournisseur_modifier',
  452.                                   'supprimer_route'            => 'dtc_retour_fournisseur_supprimer',
  453.                                   'id'                         => $objet->getId(),
  454.                                   'type'                       => $type,
  455.                                   'entite'                     => 'adresse',
  456.                                   'objet'                      => RetourFournisseur::class,
  457.                                   'table'                      => "dta-retours-fournisseur",
  458.                                   'deplier_retour_fournisseur' => true,
  459.                               ],
  460.                           ],
  461.                       ]
  462.                   )
  463.                   ->setOrder("x.id""desc")
  464.                   ->setSearch(true)
  465.                   ->setSearchFields([1]);
  466.         if ($where != "") {
  467.             $datatable->setWhere($where$parametres_where);
  468.         }
  469.         return $datatable;
  470.     }
  471.     /**
  472.      * @Route("/retour-fournisseur/grid/{id}/{type}", name="dtc_retour_fournisseur_liste_grid")
  473.      */
  474.     public function gridAction(Request $request$id ""$type ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  475.     {
  476.         if ($type == 'commandeFournisseur') {
  477.             $repo_objet $em->getRepository(CommandeFournisseur::class);
  478.             $objet      $repo_objet->find($id);
  479.         }
  480.         return $this->datatable($datatable$translator$objet$type)->execute();
  481.     }
  482.     /**
  483.      * @Route("/retour-fournisseur/statut/{id}", name="dtc_retour_fournisseur_statut")
  484.      */
  485.     public function changeStatutAction(Request $requestRetourFournisseur $retourFournisseurEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  486.     {
  487.         if ($retourFournisseur->getStatut() == 1) {
  488.             $retourFournisseur->setStatut(0);
  489.         } else {
  490.             $retourFournisseur->setStatut(1);
  491.         }
  492.         $em->persist($retourFournisseur);
  493.         $em->flush();
  494.         $em->refresh($retourFournisseur);
  495.         $headers = [
  496.             'Content-Type'                 => 'application/json',
  497.             'Access-Control-Allow-Origin'  => '*',
  498.             'Access-Control-Allow-Methods' => 'POST',
  499.         ];
  500.         return new JsonResponse(['data' => '1']);
  501.     }
  502.     /**
  503.      * @Route("/retour-fournisseur/ajax/detail/{id}", name="dtc_retour_fournisseur_detail_ajax")
  504.      */
  505.     public function detailRetourFournisseurAction(Request $requestRetourFournisseur $retourFournisseurEntityManagerInterface $em)
  506.     {
  507.         $repo_retour_fournisseur_article_commande $em->getRepository(RetourFournisseurArticleCommande::class);
  508.         $retourFournisseurArticleCommande         $repo_retour_fournisseur_article_commande->findBy(["retourFournisseur" => $retourFournisseur]);
  509.         $rendu                                    $this->renderView(
  510.             'GestionComerciale/RetourFournisseur/detail_datatable.html.twig',
  511.             [
  512.                 'retourFournisseur'                => $retourFournisseur,
  513.                 'retourFournisseurArticleCommande' => $retourFournisseurArticleCommande,
  514.             ]
  515.         );
  516.         return new JsonResponse(['rendu' => $rendu,]);
  517.     }
  518.     /**
  519.      * @Route("/retour-fournisseur/pdf/{id}", name="dtc_retour_fournisseur_pdf")
  520.      */
  521.     public function pdfRetourFournisseurAction(Request $requestRetourFournisseur $retourFournisseur$retour trueEntityManagerInterface $emPdf $snappy)
  522.     {
  523.         $societe    $em->getRepository(Societe::class)->find(1);
  524.         $date_Y     date("Y");
  525.         $date_M     date("m");
  526.         $date_D     date("d");
  527.         $date       $date_Y.'/'.$date_M.'/'.$date_D;
  528.         $chemin_pdf 'PDF/RETOURS/'.$date.'/RETOURS-'.$retourFournisseur->getId().'.pdf';
  529.         $repo_article_commande                    $em->getRepository(ArticleCommande::class);
  530.         $repo_retour_fournisseur_article_commande $em->getRepository(RetourFournisseurArticleCommande::class);
  531.         $retourFournisseurArticleCommande         $repo_retour_fournisseur_article_commande->findBy(["retourFournisseur" => $retourFournisseur]);
  532.         if (file_exists($chemin_pdf)) {
  533.             unlink($chemin_pdf);
  534.         }
  535.         //$footer = $this->renderView('FO/PDF/footer_pagination_pdf.html.twig', array('societe'  => $societe));
  536.         //$header = $this->renderView('FO/PDF/header_bpa_pdf.html.twig', array('societe'  => $societe,'retourFournisseur'  => $retourFournisseur));
  537.         $footer $this->renderView('FO/PDF/footer_pagination_pdf.html.twig', ['societe' => $societe]);
  538.         $header $this->renderView(
  539.             'FO/PDF/header_retour_commande_fournisseur_pdf.html.twig',
  540.             ['societe' => $societe'retourFournisseur' => $retourFournisseur'commande' => $retourFournisseur->getCommandeFournisseur()]
  541.         );
  542.         $snappy->setOption('header-html'$header);
  543.         $snappy->setOption('footer-html'$footer);
  544.         $snappy->setOption('margin-bottom'"10");
  545.         $snappy->generateFromHtml(
  546.             $this->renderView(
  547.                 'GestionComerciale/RetourFournisseur/template_pdf.html.twig',
  548.                 [
  549.                     'retourFournisseur'                => $retourFournisseur,
  550.                     'retourFournisseurArticleCommande' => $retourFournisseurArticleCommande,
  551.                     'societe'                          => $societe,
  552.                 ]
  553.             ),
  554.             $chemin_pdf
  555.         );
  556.         if ($retour == true) {
  557.             return $this->render('FO/PDF/conteneur_pdf.html.twig', ['objet' => $retourFournisseur'chemin_pdf' => '/'.$chemin_pdf]);
  558.         }
  559.     }
  560. }