src/Controller/GestionComerciale/BonLivraisonController.php line 968

Open in your IDE?
  1. <?php
  2. namespace App\Controller\GestionComerciale;
  3. use App\Entity\Clients\Client;
  4. use App\Entity\FO\Societe;
  5. use App\Entity\GestionComerciale\ArticleCommande;
  6. use App\Entity\GestionComerciale\BonLivraison;
  7. use App\Entity\GestionComerciale\BonPreparation;
  8. use App\Entity\GestionComerciale\Commande;
  9. use App\Entity\GestionComerciale\StatutCommande;
  10. use App\Model\GestionCommerciale\TypeDocumentCommercial;
  11. use App\Form\GestionComerciale\BonPreparationType;
  12. use App\Form\GestionComerciale\CommandeType;
  13. use App\Library\Datatable\Util\Datatable;
  14. use App\Security\Voter\EntityVoter;
  15. use App\Service\Etiquettes\TNTService;
  16. use App\Service\GestionComerciale\AcompteService;
  17. use App\Service\GestionComerciale\BonLivraisonService;
  18. use App\Service\GestionComerciale\CommandeService;
  19. use App\Service\Utilisateur\ColonneTableauService;
  20. use Doctrine\ORM\EntityManagerInterface;
  21. use Knp\Snappy\Pdf;
  22. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  23. use Symfony\Component\HttpFoundation\Request;
  24. use Symfony\Component\HttpFoundation\JsonResponse;
  25. use Symfony\Component\HttpFoundation\Response;
  26. use Symfony\Component\Routing\Annotation\Route;
  27. use Symfony\Component\Validator\Validator\ValidatorInterface;
  28. use Symfony\Contracts\Translation\TranslatorInterface;
  29. class BonLivraisonController extends AbstractController
  30. {
  31.     /**
  32.      * @Route("/vente/bons-livraison/nouveau/{id}/{type}", name="dtc_bon_livraison_ajouter")
  33.      */
  34.     public function ajouterAction(Request            $request$id$type ""EntityManagerInterface $emBonLivraisonService $bonLivraisonServiceTranslatorInterface $translator,
  35.                                   ValidatorInterface $validator
  36.     ) {
  37.         $titre_modal $translator->trans("Nouveau bon de livraison");
  38.         $repo_objet  $em->getRepository(Commande::class);
  39.         $objet       $repo_objet->find($id);
  40.         $bonLiv = clone $objet;
  41.         $bonLiv->setDateBon(new \Datetime);
  42.         $bonLiv->setDate(new \Datetime);
  43.         $user $this->getUser();
  44.         //$bonLiv->setUtilisateur($user);
  45.         if (is_object($bonLiv->getUtilisateur()) && ! empty($this->getParameter('utilisateur_site_internet')) && $bonLiv->getUtilisateur()->getId(
  46.             ) == $this->getParameter('utilisateur_site_internet')) {
  47.         } else {
  48.             //$bonLiv->setUtilisateur($user);
  49.         }
  50.         $form   $this->createForm(BonPreparationType::class, $bonLiv);
  51.         $errors "";
  52.         $form->handleRequest($request);
  53.         $idsArticleCommande $request->query->get('choixArticles');
  54.         $repo_objet         $em->getRepository(Commande::class);
  55.         $objet              $repo_objet->find($id);
  56.         $bonLiv->setBp($objet);
  57.         $bonLiv->setCommande($objet->getCommande());
  58.         $link            $this->generateUrl('dtc_bon_livraison_ajouter', ['id' => $objet->getId(), 'type' => 'commande']);
  59.         $articleCommande $em->getRepository(ArticleCommande::class)->listeArticleCommandeSelectionne($idsArticleCommande);
  60.         if ($form->isSubmitted()) {
  61.             if ($form->isValid()) {
  62.                 //$url = $this->generateUrl('dtc_commande_modifier', array('id' => $objet->getId(),'tab'=>'bonpreparations'));
  63.                 /*
  64.                 $articles = array('idArticleCommande'=>$request->request->get('idArticleCommande'),'quantiteInit'=>$request->request->get('quantiteInit'),'quantite'=>$request->request->get('quantite'));
  65.                 $valeurs = array("articles"=>$articles);
  66.                 $bonLivraisonService->sauvegarder($bonLiv,$valeurs);
  67.                 */
  68.                 $em->persist($bonLiv);
  69.                 $em->flush();
  70.                 $em->refresh($bonLiv);
  71.                 $operation $request->request->get('operation');
  72.                 $articles  = [
  73.                     'valider'                  => $request->request->get('valider'),
  74.                     'ids'                      => $request->request->get('ids'),
  75.                     'idArticleCommande'        => $request->request->get('idArticleCommande'),
  76.                     'idArticleCommandeOrigine' => $request->request->get('idArticleCommandeOrigine'),
  77.                     'montantRemise'            => $request->request->get('montantRemise'),
  78.                     'remiseCalcule'            => $request->request->get('remiseCalcule'),
  79.                     'remise'                   => $request->request->get('remise'),
  80.                     'commentaire'              => $request->request->get('commentaire'),
  81.                     'commentairePrive'         => $request->request->get('commentairePrive'),
  82.                     'remiseSuppl'              => $request->request->get('remiseSuppl'),
  83.                     'ecocontribution'          => $request->request->get('ecocontribution'),
  84.                     'prix'                     => $request->request->get('prix'),
  85.                     //'fraisPortLigne'=>$request->request->get('fraisPortLigne'),
  86.                     'libellesSecondaires'      => $request->request->get('libellesSecondaires'),
  87.                     'libelles'                 => $request->request->get('libelles'),
  88.                     'tva'                      => $request->request->get('tva'),
  89.                     'qte'                      => $request->request->get('qte'),
  90.                     'commentaireSuppl'         => $request->request->get('commentaireSuppl'),
  91.                     'emplacement'              => $request->request->get('emplacement'),
  92.                     'nbEmplacement'            => $request->request->get('nbEmplacement'),
  93.                     'position'                 => $request->request->get('position'),
  94.                     'articlesCommandeRepris'   => $request->request->get('articlesCommandeRepris'),
  95.                     'transporteurs'            => $request->request->get('transporteurs'),
  96.                     'articlesCommandeAssocies' => $request->request->get('articlesCommandeAssocies'),
  97.                 ];
  98.                 $valeurs = ["articles" => $articles'typeDocument' => 'commande''operation' => 'commande''action' => 'nouveau'];
  99.                 $bonLivraisonService->sauvegarderBon($bonLiv$valeurs);
  100.                 $url $this->generateUrl('dtc_bon_livraison_modifier', ['id' => $bonLiv->getId()]);
  101.                 $this->addFlash('notice'$translator->trans('Bon de livraison ajouté avec succès !'));
  102.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url], 200, ['Content-Type' => 'application/json']);
  103.             } else {
  104.                 $errors $validator->validate($bonLiv);
  105.                 $rendu  $this->renderView(
  106.                     'GestionComerciale/BonLivraison/ajouter.html.twig',
  107.                     [
  108.                         'form'            => $form->createView(),
  109.                         'errors'          => $errors,
  110.                         'id'              => $id,
  111.                         'type'            => $type,
  112.                         'articleCommande' => $articleCommande,
  113.                         'commande'        => $objet,
  114.                     ]
  115.                 );
  116.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  117.             }
  118.         }
  119.         $rendu $this->renderView(
  120.             'GestionComerciale/BonLivraison/ajouter.html.twig',
  121.             ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'articleCommande' => $articleCommande'commande' => $objet]
  122.         );
  123.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''link' => $link'titre' => $titre_modal]);
  124.     }
  125.     /**
  126.      * @Route("/vente/bons-livraison/nouveau-v2/{id}/{type}", name="dtc_bon_livraison_ajouter_v2")
  127.      */
  128.     public function ajouterV2Action(Request             $request$id$type ""EntityManagerInterface $emBonLivraisonService $bonLivraisonServiceCommandeService $commandeService,
  129.                                     TranslatorInterface $translator
  130.     ) {
  131.         $idArticleColis $request->request->get('colis_idArticleColis');
  132.         $quantiteColis  $request->request->get('colis_quantiteColis');
  133.         $idColis        $request->request->get('colis_idColis');
  134.         /*
  135.            print_r($idArticleCommandeColis);
  136.            print_r($quantiteColis);
  137.            print_r($idColis);
  138.         echo "TEST";
  139.         exit;
  140.         */
  141.         $user               $this->getUser();
  142.         $idsArticleCommande $request->request->get('choixArticles');
  143.         //$idsArticleCommande = $request->request->all();
  144.         //$qtesArticleCommande = $request->request->get('qteDispo');
  145.         if (count($idsArticleCommande) > 0) {
  146.             $repo_objet           $em->getRepository(Commande::class);
  147.             $repo_statut_commande $em->getRepository(StatutCommande::class);
  148.             $user                 $this->getUser();
  149.             $errors               "";
  150.             //$articleCommande = $em->getRepository(ArticleCommande::class)->listeArticleCommandeSelectionne($idsArticleCommande);
  151.             $objet $repo_objet->find($id);
  152.             $statutAccepte $repo_statut_commande->find(42);
  153.             $bonLiv = clone $objet;
  154.             $bonLiv->setStatutCommande($statutAccepte);
  155.             $bonLiv->setCreateur($user);
  156.             $bonLiv->setDateBon(new \Datetime);
  157.             $bonLiv->setDate(new \Datetime);
  158.             $bonLiv->setBp($objet);
  159.             $bonLiv->setCommande($objet->getCommande());
  160.             //$bonLiv->setUtilisateur($user);
  161.             if (is_object($bonLiv->getUtilisateur()) && ! empty($this->getParameter('utilisateur_site_internet')) && $bonLiv->getUtilisateur()->getId(
  162.                 ) == $this->getParameter('utilisateur_site_internet')) {
  163.             } else {
  164.                 $bonLiv->setUtilisateur($user);
  165.             }
  166.             $em->persist($bonLiv);
  167.             $em->flush();
  168.             $em->refresh($bonLiv);
  169.             $operation "commande";
  170.             //$operation = $request->request->get('operation');
  171.             $articles = [
  172.                 'valider'                  => $request->request->get('valider'),
  173.                 'ids'                      => $request->request->get('ids'),
  174.                 'idArticleCommande'        => $request->request->get('idArticleCommande'),
  175.                 //'idArticleCommandeOrigine'=>$request->request->get('idArticleCommandeOrigine'),
  176.                 'idArticleCommandeOrigine' => [],
  177.                 'idArticleCommandeParent'  => $request->request->get('idArticleCommandeOrigine'),
  178.                 'montantRemise'            => $request->request->get('montantRemise'),
  179.                 'remiseCalcule'            => $request->request->get('remiseCalcule'),
  180.                 'remise'                   => $request->request->get('remise'),
  181.                 'commentaire'              => $request->request->get('commentaire'),
  182.                 'commentairePrive'         => $request->request->get('commentairePrive'),
  183.                 'remiseSuppl'              => $request->request->get('remiseSuppl'),
  184.                 'ecocontribution'          => $request->request->get('ecocontribution'),
  185.                 'prix'                     => $request->request->get('prix'),
  186.                 //'fraisPortLigne'=>$request->request->get('fraisPortLigne'),
  187.                 'libellesSecondaires'      => $request->request->get('libellesSecondaires'),
  188.                 'libelles'                 => $request->request->get('libelles'),
  189.                 'tva'                      => $request->request->get('tva'),
  190.                 'qte'                      => $request->request->get('qte'),
  191.                 'qteDispo'                 => $request->request->get('qteDispo'),
  192.                 'commentaireSuppl'         => $request->request->get('commentaireSuppl'),
  193.                 'emplacement'              => $request->request->get('emplacement'),
  194.                 'nbEmplacement'            => $request->request->get('nbEmplacement'),
  195.                 'position'                 => $request->request->get('position'),
  196.                 'articlesCommandeRepris'   => $request->request->get('articlesCommandeRepris'),
  197.                 'transporteurs'            => $request->request->get('transporteurs'),
  198.                 'articlesCommandeAssocies' => $request->request->get('articlesCommandeAssocies'),
  199.                 'idArticleColis'           => $request->request->get('colis_idArticleColis'),
  200.                 'quantiteColis'            => $request->request->get('colis_quantiteColis'),
  201.                 'idColis'                  => $request->request->get('colis_idColis'),
  202.                 'tabPrixAchatNetEuros'     => $request->request->get('tabPrixAchatNetEuros'),
  203.                 'societe_livraison_txt'     => $request->request->get('societe_livraison_txt'),
  204.                 'numero_livraison_txt'      => $request->request->get('numero_livraison_txt'),
  205.                 'rue_livraison_txt'         => $request->request->get('rue_livraison_txt'),
  206.                 'complement_livraison_txt'  => $request->request->get('complement_livraison_txt'),
  207.                 'complement2_livraison_txt' => $request->request->get('complement2_livraison_txt'),
  208.                 'cp_livraison_txt'          => $request->request->get('cp_livraison_txt'),
  209.                 'ville_livraison_txt'       => $request->request->get('ville_livraison_txt'),
  210.                 'pays_livraison_txt'        => $request->request->get('pays_livraison_txt'),
  211.                 'societe_facturation_txt'     => $request->request->get('societe_facturation_txt'),
  212.                 'numero_facturation_txt'      => $request->request->get('numero_facturation_txt'),
  213.                 'rue_facturation_txt'         => $request->request->get('rue_facturation_txt'),
  214.                 'complement_facturation_txt'  => $request->request->get('complement_facturation_txt'),
  215.                 'complement2_facturation_txt' => $request->request->get('complement2_facturation_txt'),
  216.                 'cp_facturation_txt'          => $request->request->get('cp_facturation_txt'),
  217.                 'ville_facturation_txt'       => $request->request->get('ville_facturation_txt'),
  218.                 'pays_facturation_txt'        => $request->request->get('pays_facturation_txt'),
  219.             ];
  220.             $valeurs = ["articles" => $articles'typeDocument' => 'commande''operation' => 'commande''action' => 'nouveau'];
  221.             $bonLivraisonService->sauvegarderBon($bonLiv$valeurs);
  222.             $url $this->generateUrl('dtc_bon_livraison_modifier', ['id' => $bonLiv->getId(), 'forceQteDispo' => true]);
  223.             $this->addFlash('notice'$translator->trans('Bon de livraison ajouté avec succès !'));
  224.             $commandeService->creerHistorique($bonLiv1);
  225.             return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  226.         } else {
  227.             return new JsonResponse(
  228.                 [
  229.                     'rendu'              => '',
  230.                     'valide'             => '0',
  231.                     'url'                => '',
  232.                     'idsArticleCommande' => $idsArticleCommande,
  233.                 ]
  234.             );
  235.         }
  236.     }
  237.     /**
  238.      * @Route("/vente/bons-livraison/modifier/{id}", name="dtc_bon_livraison_modifier")
  239.      */
  240.     public function modifierAction(Request        $requestCommande $bonEntityManagerInterface $emBonLivraisonService $bonService
  241.                                    AcompteService $serviceAcompteCommandeService $commandeServiceTranslatorInterface $translatorValidatorInterface $validator
  242.     ) {
  243.         $user $this->getUser();
  244.         //$bon->setUtilisateur($user);
  245.         if (is_object($bon->getUtilisateur()) && ! empty($this->getParameter('utilisateur_site_internet')) && $bon->getUtilisateur()->getId() == $this->getParameter(
  246.                 'utilisateur_site_internet'
  247.             )) {
  248.         } else {
  249.             //$bon->setUtilisateur($user);
  250.         }
  251.         $form $this->createForm(CommandeType::class, $bon);
  252.         $annuler $request->request->get('annuler');
  253.         if ($annuler == "annuler" && $bon->getBP() != null /*|| $annuler == "annuler_devis" || $annuler == "annuler_bp"*/) {
  254.             $remboursement 0;
  255.             $bonService->annuler($bon$annuler);
  256.             if ($bon->getCommande()->getStatutCommande()->getOrdre() == "0") {
  257.                 $remboursement $serviceAcompte->proposerRemboursement($bon->getClient());
  258.             }
  259.             $this->addFlash('notice'$translator->trans('Bon de livraison annulé avec succès !'));
  260.             return $this->redirectToRoute('dtc_bon_preparation_modifier', ["id" => $bon->getBP()->getId(), "r" => $remboursement"c" => $bon->getClient()->getId()]);
  261.         } elseif ($annuler == "annuler" && $bon->getBP() == null) {
  262.             $remboursement 0;
  263.             $bonService->annuler($bon$annuler);
  264.             if ($bon->getCommande()->getStatutCommande()->getOrdre() == "0") {
  265.                 $remboursement $serviceAcompte->proposerRemboursement($bon->getClient());
  266.             }
  267.             $this->addFlash('notice'$translator->trans('Bon de livraison annulé avec succès !'));
  268.             return $this->redirectToRoute('dtc_commande_modifier', ["id" => $bon->getCommande()->getId(), "r" => $remboursement"c" => $bon->getClient()->getId()]);
  269.         }
  270.         if ($annuler == "annuler_bp" && $bon->getBP() != null) {
  271.             $remboursement 0;
  272.             $bonService->annuler($bon$annuler);
  273.             if ($bon->getCommande()->getStatutCommande()->getOrdre() == "0") {
  274.                 $remboursement $serviceAcompte->proposerRemboursement($bon->getClient());
  275.             }
  276.             $this->addFlash('notice'$translator->trans('Bon de livraison annulé avec succès !'));
  277.             return $this->redirectToRoute('dtc_bon_preparation_modifier', ["id" => $bon->getBP()->getId(), "r" => $remboursement"c" => $bon->getClient()->getId()]);
  278.         }
  279.         if ($annuler == "annuler_devis") {
  280.             $remboursement 0;
  281.             $bonService->annuler($bon$annuler);
  282.             if ($bon->getCommande()->getStatutCommande()->getOrdre() == "0") {
  283.                 $remboursement $serviceAcompte->proposerRemboursement($bon->getClient());
  284.             }
  285.             //die;
  286.             $this->addFlash('notice'$translator->trans('Bon de livraison annulé avec succès !'));
  287.             return $this->redirectToRoute('dtc_bon_livraison_liste', ["r" => $remboursement"c" => $bon->getClient()->getId()]);
  288.         }
  289.         $articles = ['ids' => $request->request->get('ids'), 'prix' => $request->request->get('prix'), 'qte' => $request->request->get('qte')];
  290.         $valeurs  = ["articles" => $articles];
  291.         $errors "";
  292.         $form->handleRequest($request);
  293.         if ($form->isSubmitted()) {
  294.             if ($commandeService->estEditable($bon) or $request->request->get('operation') == "facture" or == 1) {
  295.                 // TODO CHANGE THIS
  296.                 $droit $this->isGranted(EntityVoter::UPDATE,BonPreparation::class);
  297.                 if ( ! $droit) {
  298.                     return $this->redirectToRoute('dtc_bon_livraison_modifier', ["id" => $bon->getId()]);
  299.                 }
  300.                 if ($form->isValid()) {
  301.                     /*
  302.                     if($request->request->get('annuler') != '') {
  303.                         $bonService->annulerCommande($bon);
  304.                         $this->addFlash(
  305.                              'notice',
  306.                             $translator->trans('Bon de préparation annulée avec succès !')
  307.                          );
  308.                         return $this->redirectToRoute('dtc_bon_preparation_liste',array());
  309.                     }
  310.                     */
  311.                     $em->persist($bon);
  312.                     $em->flush();
  313.                     $operation $request->request->get('operation');
  314.                     $articles = [
  315.                         'valider'                  => $request->request->get('valider'),
  316.                         'ids'                      => $request->request->get('ids'),
  317.                         'idArticleCommande'        => $request->request->get('idArticleCommande'),
  318.                         'idArticleCommandeOrigine' => $request->request->get('idArticleCommandeOrigine'),
  319.                         'montantRemise'            => $request->request->get('montantRemise'),
  320.                         'remiseCalcule'            => $request->request->get('remiseCalcule'),
  321.                         'remise'                   => $request->request->get('remise'),
  322.                         'commentaire'              => $request->request->get('commentaire'),
  323.                         'commentairePrive'         => $request->request->get('commentairePrive'),
  324.                         'remiseSuppl'              => $request->request->get('remiseSuppl'),
  325.                         'ecocontribution'          => $request->request->get('ecocontribution'),
  326.                         'prix'                     => $request->request->get('prix'),
  327.                         //'fraisPortLigne'=>$request->request->get('fraisPortLigne'),
  328.                         'libellesSecondaires'      => $request->request->get('libellesSecondaires'),
  329.                         'libelles'                 => $request->request->get('libelles'),
  330.                         'tva'                      => $request->request->get('tva'),
  331.                         'qte'                      => $request->request->get('qte'),
  332.                         'commentaireSuppl'         => $request->request->get('commentaireSuppl'),
  333.                         'emplacement'              => $request->request->get('emplacement'),
  334.                         'nbEmplacement'            => $request->request->get('nbEmplacement'),
  335.                         'numero_serie'             => $request->request->get('numero_serie'),
  336.                         'duree_garantie'           => $request->request->get('duree_garantie'),
  337.                         'position'                 => $request->request->get('position'),
  338.                         'articlesCommandeRepris'   => $request->request->get('articlesCommandeRepris'),
  339.                         'transporteurs'            => $request->request->get('transporteurs'),
  340.                         'articlesCommandeAssocies' => $request->request->get('articlesCommandeAssocies'),
  341.                         'societe_livraison_txt'     => $request->request->get('societe_livraison_txt'),
  342.                         'numero_livraison_txt'      => $request->request->get('numero_livraison_txt'),
  343.                         'rue_livraison_txt'         => $request->request->get('rue_livraison_txt'),
  344.                         'complement_livraison_txt'  => $request->request->get('complement_livraison_txt'),
  345.                         'complement2_livraison_txt' => $request->request->get('complement2_livraison_txt'),
  346.                         'cp_livraison_txt'          => $request->request->get('cp_livraison_txt'),
  347.                         'ville_livraison_txt'       => $request->request->get('ville_livraison_txt'),
  348.                         'societe_facturation_txt'     => $request->request->get('societe_facturation_txt'),
  349.                         'numero_facturation_txt'      => $request->request->get('numero_facturation_txt'),
  350.                         'rue_facturation_txt'         => $request->request->get('rue_facturation_txt'),
  351.                         'complement_facturation_txt'  => $request->request->get('complement_facturation_txt'),
  352.                         'complement2_facturation_txt' => $request->request->get('complement2_facturation_txt'),
  353.                         'cp_facturation_txt'          => $request->request->get('cp_facturation_txt'),
  354.                         'ville_facturation_txt'       => $request->request->get('ville_facturation_txt'),
  355.                     ];
  356.                     $valeurs = ["articles" => $articles'typeDocument' => 'commande''operation' => $operation'action' => 'modifier'];
  357.                     $bonService->sauvegarderBon($bon$valeurs);
  358.                     if ($operation == "facture") {
  359.                         $this->addFlash('notice'$translator->trans('Facture sauvegardée avec succès !'));
  360.                         $typesFac $em->getRepository(TypeDocumentCommercial::class)->findById([67]);
  361.                         $repo_fac $em->getRepository(Commande::class);
  362.                         $facture  $repo_fac->findBy(["bl" => $bon"typeDocumentCommercial" => $typesFac],
  363.                                                       ['id' => 'DESC'],
  364.                                                       1,
  365.                                                       0);
  366.                         foreach ($facture as $f) {
  367.                             $temp_id_fac                   $f->getId();
  368.                             $temp_type_document_commercial $f->getTypeDocumentCommercial();
  369.                         }
  370.                         if ($temp_type_document_commercial->getId() == 6) {
  371.                             return $this->redirectToRoute('dtc_facture_afficher', ["id" => $temp_id_fac]);
  372.                         } else {
  373.                             return $this->redirectToRoute('dtc_avoir_modifier', ["id" => $temp_id_fac]);
  374.                         }
  375.                     } else {
  376.                         $this->addFlash('notice'$translator->trans('Bon de livraison sauvegardée avec succès !'));
  377.                         $commandeService->creerHistorique($bon2);
  378.                         return $this->redirectToRoute('dtc_bon_livraison_modifier', ["id" => $bon->getId()]);
  379.                     }
  380.                 } else {
  381.                     $errors $validator->validate($bon);
  382.                     //\Doctrine\Common\Util\Debug::dump($errors);
  383.                 }
  384.             } else {
  385.                 $paiement $bon->getStatutPaiement();
  386.                 $em->refresh($bon);
  387.                 $bon->setStatutPaiement($paiement);
  388.                 $em->persist($bon);
  389.                 $em->flush();
  390.                 $this->addFlash('notice'$translator->trans('Statut du paiement de la commande modifié avec succès !'));
  391.                 /*
  392.                 $this->addFlash( 'warning', "La commande n'est plus éditable ! ");
  393.                 */
  394.                 return $this->redirectToRoute('dtc_commande_modifier', ["id" => $bon->getId()]);
  395.             }
  396.         }
  397.         return $this->render('GestionComerciale/BonLivraison/modifier.html.twig', ['form' => $form->createView(), 'errors' => $errors'commande' => $bon]);
  398.     }
  399.     /**
  400.      * @Route("/vente/bons-livraison", name="dtc_bon_livraison_liste")
  401.      */
  402.     public function listerAction(Request             $request$id "0"$type "a"EntityManagerInterface $emColonneTableauService $serviceColonneTableauDatatable $datatable,
  403.                                  TranslatorInterface $translator
  404.     ) {
  405.         $repo_objet $em->getRepository(Commande::class);
  406.         $objet      $repo_objet->find($id);
  407.         $param $request->query->all();
  408.         if (is_object($objet)) {
  409.             $tableau_class_cellule   = [];
  410.             $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-center""targets" => [0], "visible" => true"orderable" => true];
  411.             $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [1], "visible" => true"orderable" => true];
  412.             $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [2], "visible" => true"orderable" => true];
  413.             $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [3], "visible" => true"orderable" => true];
  414.             $tableau_class_cellule[] = ["className" => "visible_export colonne_id ""targets" => [4], "visible" => true"orderable" => true];
  415.             $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-right""targets" => [5], "visible" => true"orderable" => true];
  416.             $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-right""targets" => [6], "visible" => true"orderable" => true];
  417.             $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-right""targets" => [7], "visible" => true"orderable" => true];
  418.             $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-right""targets" => [8], "visible" => true"orderable" => false];
  419.             $this->datatableCommande($objet$type$em$datatable$translator);
  420.             return $this->render(
  421.                 'GestionComerciale/BonLivraison/lister_commande.html.twig',
  422.                 ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type'parametres' => $param]
  423.             );
  424.         } else {
  425.             $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [0], "visible" => false"orderable" => false];
  426.             $tableau_class_cellule[] = [
  427.                 "className" => "visible_export colonne_id",
  428.                 "targets"   => [1],
  429.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(BonLivraison::class, "id"),
  430.             ];
  431.             $tableau_class_cellule[] = [
  432.                 "className" => "visible_export colonne_id text-center",
  433.                 "targets"   => [2],
  434.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(BonLivraison::class, "date"),
  435.             ];
  436.             $tableau_class_cellule[] = [
  437.                 "className" => "visible_export colonne_id",
  438.                 "targets"   => [3],
  439.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(BonLivraison::class, "reference"),
  440.             ];
  441.             $tableau_class_cellule[] = [
  442.                 "className" => "visible_export colonne_id",
  443.                 "targets"   => [4],
  444.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(BonLivraison::class, "refclient"),
  445.             ];
  446.             $tableau_class_cellule[] = [
  447.                 "className" => "visible_export colonne_id",
  448.                 "targets"   => [5],
  449.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(BonLivraison::class, "client"),
  450.             ];
  451.             $tableau_class_cellule[] = [
  452.                 "className" => "visible_export colonne_id",
  453.                 "targets"   => [6],
  454.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(BonLivraison::class, "refCli"),
  455.             ];
  456.             $tableau_class_cellule[] = [
  457.                 "className" => "visible_export sommeHT colonne_id text-right",
  458.                 "targets"   => [7],
  459.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(BonLivraison::class, "totalHT"),
  460.             ];
  461.             $tableau_class_cellule[] = [
  462.                 "className" => "visible_export somme colonne_id text-right",
  463.                 "targets"   => [8],
  464.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(BonLivraison::class, "totalTTC"),
  465.             ];
  466.             $tableau_class_cellule[] = [
  467.                 "className" => "visible_export somme colonne_id text-right",
  468.                 "targets"   => [9],
  469.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(BonLivraison::class, "numeroSuivi"),
  470.             ];
  471.             $tableau_class_cellule[] = [
  472.                 "className" => "visible_export somme colonne_id text-left",
  473.                 "targets"   => [10],
  474.                 "visible"   => $serviceColonneTableau->getColonneUtilisateur(BonLivraison::class, "equipier"),
  475.             ];
  476.             $tableau_class_cellule[] = ["orderable" => false"className" => "colonne_id""targets" => [11], "visible" => true];
  477.             $param                   $request->query->all();
  478.             $param["aFacturer"]      = "on";
  479.             $param["marketPlace"] = "on";
  480.             $this->datatable($request$datatable$translator);
  481.             return $this->render(
  482.                 'GestionComerciale/BonLivraison/lister.html.twig',
  483.                 ["id" => $id"type" => $type'tableauClassColonne' => $tableau_class_cellule'parametres' => $param]
  484.             );
  485.         }
  486.         $param              $request->query->all();
  487.         $param["aFacturer"] = "on";
  488.         $param["marketPlace"] = "on";
  489.         return $this->render('GestionComerciale/BonLivraison/lister.html.twig', [
  490.             'parametres'          => $param,
  491.             'tableauClassColonne' => $tableau_class_cellule,
  492.         ]);
  493.     }
  494.     /**
  495.      * set datatable configs
  496.      *
  497.      * @return \App\Library\Datatable\Util\Datatable
  498.      */
  499.     private function datatable(Request $requestDatatable $datatableTranslatorInterface $translator)
  500.     {
  501.         $param $request->query->all();
  502.         $datatable->setDatatableId('dta-bonlivraisons')
  503.                   ->setEntity(Commande::class, "x")
  504.                   ->setFields(
  505.                       [
  506.                           $translator->trans("ID")           => 'x.id',
  507.                           $translator->trans("Date")         => 'x.date',
  508.                           $translator->trans("Réf")          => 'x.reference',
  509.                           $translator->trans("Ref client")   => 'cl.reference',
  510.                           $translator->trans("Client")       => 'cl.nom',
  511.                           $translator->trans("Ref cmde cli") => 'x.referenceClient',
  512.                           $translator->trans("Total HT")     => 'x.total',
  513.                           $translator->trans("Total TTC")    => 'x.totalTtc',
  514.                           $translator->trans("Num suivi")    => 'x.numeroSuivi',
  515.                           $translator->trans("Équipier")     => 'cr.reference',
  516.                           $translator->trans("Actions")      => 'x.id',
  517.                           "_identifier_"                     => 'x.id',
  518.                       ]
  519.                   )
  520.                   ->addJoin('x.statutCommande''s'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  521.                   ->addJoin('x.commande''c'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  522.                   ->addJoin('x.client''cl'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  523.                   ->addJoin('x.utilisateur''u'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  524.                   ->addJoin('x.createur''cr'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  525.             /*->setWhere(
  526.                     $type_jointure.' = :objet',
  527.                     array('objet' => $objet)
  528.                )
  529.               */
  530.                   ->setRenderers(
  531.                 [
  532.                     => [
  533.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  534.                         'params' => [
  535.                             'edit_route' => 'dtc_bon_livraison_modifier',
  536.                         ],
  537.                     ],
  538.                     => [
  539.                         'view'   => 'FO/DataTable/heure.html.twig',
  540.                         'params' => [],
  541.                     ],
  542.                     => [
  543.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  544.                         'params' => [
  545.                             'edit_route' => 'dtc_bon_livraison_modifier',
  546.                         ],
  547.                     ],
  548.                     => [
  549.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  550.                         'params' => [
  551.                             'edit_route'   => 'dtc_client_modifier',
  552.                             'typeDocument' => 'client',
  553.                         ],
  554.                     ],
  555.                     => [
  556.                         'view'   => 'FO/DataTable/client.html.twig',
  557.                         'params' => [],
  558.                     ],
  559.                     => [
  560.                         'view'   => 'FO/DataTable/prix_total_ht.html.twig',
  561.                         'params' => [],
  562.                     ],
  563.                     => [
  564.                         'view'   => 'FO/DataTable/prix.html.twig',
  565.                         'params' => [],
  566.                     ],
  567.                     => [
  568.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  569.                         'params' => [
  570.                             'edit_route'   => 'dtc_utilisateur_modifier',
  571.                             'typeDocument' => 'equipier',
  572.                         ],
  573.                     ],
  574.                     10 => [
  575.                         'view'   => 'FO/DataTable/actions.html.twig',
  576.                         'params' => [
  577.                             'edit_route' => 'dtc_bon_livraison_modifier',
  578.                             //'supprimer_route'  => 'dtc_bon_livraison_supprimer',
  579.                             'pdf_route'  => 'dtc_bon_livraison_pdf',
  580.                             'entite'     => 'bonPreparation',
  581.                             'objet'      => Commande::class,
  582.                             'deplier'    => true,
  583.                         ],
  584.                     ],
  585.                 ]
  586.             )
  587.                   ->setMultiple(
  588.                       [
  589.                           'print' => [
  590.                               'title' => 'Non disponible',
  591.                               'route' => 'dtc_bon_livraison_liste',
  592.                           ],
  593.                       ]
  594.                   )
  595.                   ->setOrder("x.id""desc")
  596.                   ->setSearch(true)
  597.                   ->setSearchFields([2345]);
  598.         $where      'x.typeDocumentCommercial = :typeDocumentCommercial and x.visible = :visible';
  599.         $parameters = ['typeDocumentCommercial' => TypeDocumentCommercial::BL'visible' => 1];
  600.         if (array_key_exists('parametres'$param)) {
  601.             if (array_key_exists('client'$param["parametres"]) and $param["parametres"]["client"] > 0) {
  602.                 //$datatable->addJoin('x.client', 'client', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  603.                 $parameters["client"] = $param["parametres"]["client"];
  604.                 if ($where != "") {
  605.                     $where .= " AND ";
  606.                 }
  607.                 $where .= "cl.id = :client";
  608.             }
  609.             if (array_key_exists('client'$param["parametres"]) and $param["parametres"]["date_debut"] != "") {
  610.                 $param["parametres"]["date_debut"] = \DateTime::createFromFormat('d/m/Y'$param["parametres"]["date_debut"]);
  611.                 $param["parametres"]["date_debut"]->setTime(000000);
  612.                 $parameters["date_debut"] = $param["parametres"]["date_debut"];
  613.                 if ($where != "") {
  614.                     $where .= " AND ";
  615.                 }
  616.                 $where .= "x.date >= :date_debut";
  617.             }
  618.             if (array_key_exists('client'$param["parametres"]) and $param["parametres"]["date_fin"] != "") {
  619.                 $param["parametres"]["date_fin"] = \DateTime::createFromFormat('d/m/Y'$param["parametres"]["date_fin"]);
  620.                 $param["parametres"]["date_fin"]->setTime(235959);
  621.                 $parameters["date_fin"] = $param["parametres"]["date_fin"];
  622.                 if ($where != "") {
  623.                     $where .= " AND ";
  624.                 }
  625.                 $where .= "x.date <= :date_fin";
  626.             }
  627.             $where_facturer "";
  628.             if (array_key_exists('aFacturer'$param["parametres"]) and $param["parametres"]["aFacturer"] != "") {
  629.                 //$parameters["aFacturer"]="1";
  630.                 //if($where != "") $where .= " OR ";
  631.                 //$where .= "x.aFacturer = TRUE";
  632.                 if ($where != "") {
  633.                     $where_facturer .= " and ";
  634.                 }
  635.                 //$where_facturer .= " ( x.aFacturer = TRUE or x.aFacturer is null";
  636.                 $where_facturer .= " ( x.facture is null ";
  637.                 if (array_key_exists('facturer'$param["parametres"]) and $param["parametres"]["facturer"] != "") {
  638.                     $where_facturer .= " or  x.facture is not null )";
  639.                 } else {
  640.                     $where_facturer .= ") ";
  641.                 }
  642.             } elseif (array_key_exists('facturer'$param["parametres"]) and $param["parametres"]["facturer"] != "") {
  643.                 if ($where != "") {
  644.                     $where .= " and ";
  645.                 }
  646.                 $where .= "x.facture is not null ";
  647.             }
  648.             /*
  649.             if (array_key_exists('marketPlace', $param["parametres"]) and $param["parametres"]["marketPlace"] == "on") {
  650.                 $where_facturer .= " and x.referenceMarketPlace is not null ";
  651.             } else {
  652.                 $where_facturer .= " and x.referenceMarketPlace is null ";
  653.             }
  654.             */
  655.             if ($where_facturer != "") {
  656.                 $where .= $where_facturer;
  657.             }
  658.         }
  659.         //echo $where;
  660.         if ($where != '') {
  661.             //echo $where;
  662.             $datatable->setWhere($where$parameters);
  663.         }
  664.         //dump($where)
  665.         return $datatable;
  666.         /*
  667.         $datatable  ->setDatatableId('dta-bonlivraisons')
  668.                     ->setEntity("DTCGestionComercialeBundle:Commande", "x")
  669.                     ->setFields(
  670.                             array(
  671.                                $translator->trans("ID") =>  'x.id',
  672.                                 //$translator->trans("Commande") =>  'c.reference',
  673.                                $translator->trans("Client") =>  'cl.nom',
  674.                                $translator->trans("Réf") =>  'x.reference',
  675.                                $translator->trans("Date") =>  'x.dateBon',
  676.                                $translator->trans("Actions") =>  'x.id',
  677.                                    "_identifier_" => 'x.id'
  678.                                    )
  679.                             )
  680.                     ->addJoin('x.commande', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  681.                     ->addJoin('x.client', 'cl', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  682.                      ->setWhere(
  683.                              'x.typeDocumentCommercial = :typeDocumentCommercial',
  684.                              array('typeDocumentCommercial' => TypeDocumentCommercial::BL)
  685.                         )
  686.                     ->setRenderers(
  687.                             array(
  688.                                 3 => array(
  689.                                     'view' => 'FO/DataTable/date.html.twig',
  690.                                     'params' => array(
  691.                                         ),
  692.                                 ),
  693.                                 4 => array(
  694.                                     'view' => 'FO/DataTable/actions.html.twig',
  695.                                     'params' => array(
  696.                                             //'edit_route'  => 'dtc_bon_livraison_modifier',
  697.                                             //'supprimer_route'  => 'dtc_bon_livraison_supprimer',
  698.                                             'pdf_route'  => 'dtc_bon_livraison_pdf',
  699.                                             'entite'    => 'bonPreparation',
  700.                                             'objet' => "DTCGestionComercialeBundle:Commande"
  701.                                         ),
  702.                                 ),
  703.                             )
  704.                     )
  705.                     ->setMultiple(
  706.                         array(
  707.                             'print' => array(
  708.                                 'title' => 'Imprimer',
  709.                                 'route' => 'dtc_bon_livraison_pdf_multiple'                            ),
  710.                         )
  711.                     )
  712.                     ->setOrder("x.id", "desc")
  713.                     ->setSearch(true)
  714.                     //->setSearchFields(array(1,2))
  715.                     ;
  716.         return $datatable;
  717.         */
  718.     }
  719.     /**
  720.      * set datatable configs
  721.      *
  722.      * @return \App\Library\Datatable\Util\Datatable
  723.      */
  724.     private function datatableCommande($objet$type "bp"EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  725.     {
  726.         $repo_statut_document $em->getRepository(StatutCommande::class);
  727.         $liste_statut         $repo_statut_document->findBy(["documentCommercial" => 5"ordre" => [0]]);
  728.         $type_jointure 'x.'.$type;
  729.         $datatable->setDatatableId('dta-bonlivraisons')
  730.                   ->setEntity(Commande::class, "x")
  731.                   ->setFields(
  732.                       [
  733.                           //$translator->trans("ID") =>  'x.id',
  734.                           $translator->trans("Date")         => 'x.date',
  735.                           $translator->trans("Réf")          => 'x.reference',
  736.                           $translator->trans("Ref client")   => 'cl.reference',
  737.                           $translator->trans("Client")       => 'cl.nom',
  738.                           $translator->trans("Ref cmde cli") => 'x.referenceClient',
  739.                           $translator->trans("Total HT")     => 'x.total',
  740.                           $translator->trans("Total TTC")    => 'x.totalTtc',
  741.                           $translator->trans("Num suivi")    => 'x.numeroSuivi',
  742.                           $translator->trans("Actions")      => 'x.id',
  743.                           "_identifier_"                     => 'x.id',
  744.                       ]
  745.                   )
  746.             //->addJoin('x.pays', 'p', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  747.             /*->setWhere(
  748.                     $type_jointure.' = :objet',
  749.                     array('objet' => $objet)
  750.                )
  751.               */
  752.                   ->addJoin('x.statutCommande''s'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  753.                   ->addJoin('x.commande''c'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  754.                   ->addJoin('x.client''cl'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  755.                   ->addJoin('x.utilisateur''u'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  756.             /*
  757.              ->setWhere(
  758.                      'x.bp = :objet AND x.typeDocumentCommercial = :typeDocumentCommercial AND x.statutCommande NOT IN (:statutCommande)',
  759.                      array('objet' => $objet,'typeDocumentCommercial' => TypeDocumentCommercial::BL,'statutCommande'=>$liste_statut)
  760.                 )
  761.              *
  762.              */
  763.                   ->setWhere(
  764.                 $type_jointure.' = :objet AND x.typeDocumentCommercial = :typeDocumentCommercial AND x.statutCommande NOT IN (:statutCommande)',
  765.                 ['objet' => $objet'typeDocumentCommercial' => TypeDocumentCommercial::BL'statutCommande' => $liste_statut]
  766.             )
  767.                   ->setRenderers(
  768.                       [
  769.                           => [
  770.                               'view'   => 'FO/DataTable/heure.html.twig',
  771.                               'params' => [],
  772.                           ],
  773.                           => [
  774.                               'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  775.                               'params' => [
  776.                                   'edit_route' => 'dtc_bon_livraison_modifier',
  777.                               ],
  778.                           ],
  779.                           => [
  780.                               'view'   => 'FO/DataTable/prix.html.twig',
  781.                               'params' => [],
  782.                           ],
  783.                           => [
  784.                               'view'   => 'FO/DataTable/prix.html.twig',
  785.                               'params' => [],
  786.                           ],
  787.                           => [
  788.                               'view'   => 'FO/DataTable/actions.html.twig',
  789.                               'params' => [
  790.                                   'edit_route' => 'dtc_bon_livraison_modifier',
  791.                                   //'supprimer_route'  => 'dtc_bon_livraison_supprimer',
  792.                                   'pdf_route'  => 'dtc_bon_livraison_pdf',
  793.                                   'entite'     => 'bonPreparation',
  794.                                   'objet'      => Commande::class,
  795.                                   'deplier'    => true,
  796.                               ],
  797.                           ],
  798.                       ]
  799.                   )
  800.                   ->setOrder("x.id""desc")
  801.                   ->setSearch(true)//->setSearchFields(array(1,2))
  802.         ;
  803.         return $datatable;
  804.     }
  805.     /**
  806.      * @Route("/vente/bons-livraison/grid/{id}/{type}", name="dtc_bon_livraison_liste_grid")
  807.      */
  808.     public function gridAction(Request $request$id ""$type ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  809.     {
  810.         $repo_objet $em->getRepository(Commande::class);
  811.         $objet      $repo_objet->find($id);
  812.         if (is_object($objet)) {
  813.             return $this->datatableCommande($objet$type$em$datatable$translator)->execute();
  814.         } else {
  815.             return $this->datatable($request$datatable$translator)->execute();
  816.         }
  817.     }
  818.     /**
  819.      * @Route("", name="")
  820.      */
  821.     public function listerCommandeClientAction(Request $requestClient $client)
  822.     {
  823.         $options '';
  824.         $cpt     0;
  825.         foreach ($client->getCommandes() as $bonPrepa) {
  826.             $selected "";
  827.             //if($cpt == 0) $selected = 'selected="selected"';
  828.             $options .= '<option '.$selected.' value="'.$bonPrepa->getId().'">'.$bonPrepa->getLibelle().'</option>';
  829.             $cpt++;
  830.         }
  831.         $referenceCommandeClientObligatoire $client->getReferenceClientObligatoire();
  832.         return new JsonResponse(
  833.             ['options' => $options'valide' => '0''referenceClientObligatoire' => $referenceCommandeClientObligatoire]
  834.         );
  835.     }
  836.     /**
  837.      * @Route("/bons-livraison/pdf/{id}", name="dtc_bon_livraison_pdf")
  838.      */
  839.     public function pdfBonLivraisonAction(Request $requestCommande $bonPreparation$retour trueEntityManagerInterface $emPdf $snappy)
  840.     {
  841.         $societe    $em->getRepository(Societe::class)->find(1);
  842.         $date_Y     date("Y");
  843.         $date_M     date("m");
  844.         $date_D     date("d");
  845.         $date       $date_Y.'/'.$date_M.'/'.$date_D;
  846.         $chemin_pdf 'PDF/BONSLIV/'.$date.'/BONLIV-'.$bonPreparation->getReference().'.pdf';
  847.         if (file_exists($chemin_pdf)) {
  848.             unlink($chemin_pdf);
  849.         }
  850.         //return $this->render('GestionComerciale/BonLivraison/template_pdf.html.twig',array('commande'  => $bonPreparation,'societe'  => $societe));
  851.         $footer $this->renderView('FO/PDF/footer_bl_pagination_pdf.html.twig', ['societe' => $societe'commande' => $bonPreparation]);
  852.         $header $this->renderView('FO/PDF/header_bl_pdf.html.twig', ['societe' => $societe'commande' => $bonPreparation]);
  853.         //$snappy->setOption('page-size', 'A4');
  854.         //$snappy->setOption('header-html', $header);
  855.         $snappy->setOption('footer-html'$footer);
  856.         $snappy->setOption('margin-left'0);
  857.         $snappy->setOption('margin-right'0);
  858.         $snappy->setOption('header-spacing'"4");
  859.         $snappy->setOption('footer-spacing'"3");
  860.         $snappy->setOption('disable-smart-shrinking'true);
  861.         //$snappy->setOption('print-media-type', false );
  862.         $snappy->setOption('page-height'"297");
  863.         $snappy->setOption('page-width'"210");
  864.         $snappy->generateFromHtml(
  865.             $this->renderView(
  866.             //'GestionComerciale/BonLivraison/template_pdf.html.twig',
  867.                 'GestionComerciale/BonLivraison/template_pdf.html.twig',
  868.                 [
  869.                     'commande' => $bonPreparation,
  870.                     'societe'  => $societe,
  871.                 ]
  872.             ),
  873.             $chemin_pdf
  874.         );
  875.         if ($retour == true) {
  876.             return $this->render('FO/PDF/conteneur_pdf.html.twig', [
  877.                 'objet'      => $bonPreparation,
  878.                 'chemin_pdf' => '/'.$chemin_pdf,
  879.                 'visualiser' => $request->query->get('visualiser'),
  880.             ]);
  881.             //return new RedirectResponse("/".$chemin_pdf);
  882.         }
  883.         //if($retour == true) return new RedirectResponse("/".$chemin_pdf);
  884.     }
  885.     /**
  886.      * @Route("/vente/bons-livraison/facturer/multiple", name="dtc_bon_livraison_facturer_multiple")
  887.      */
  888.     public function facturerMultipleAction(Request $requestEntityManagerInterface $em)
  889.     {
  890.         $data   $request->get('dataTables');
  891.         $ids    $data['actions'];
  892.         $notice "";
  893.         for ($i 0$i count($ids); $i++) {
  894.             $repo $em->getRepository(Commande::class);
  895.             $bon  $repo->find($ids[$i]);
  896.             if (is_object($bon)) {
  897.                 $notice .= $bon->getReference()." facturée avec succès <br/>";
  898.             }
  899.         }
  900.         if ($notice != "") {
  901.             $this->addFlash('notice'$notice);
  902.         }
  903.         $url $this->generateUrl('dtc_bon_livraison_liste');
  904.         return new JsonResponse(['target' => '''url' => $url'valide' => '1']);
  905.     }
  906.     /**
  907.      * @Route("/vente/bons-livraison/etiquettes/imprimer/multiple/{id}", name="dtc_bon_livraison_etiquette_multiple")
  908.      */
  909.     public function imprimerEtiquetteMultipleAction(Request $requestCommande $bonEntityManagerInterface $emTNTService $service_tnt)
  910.     {
  911.         $date_Y date("Y");
  912.         $date_M date("m");
  913.         $date_D date("d");
  914.         $date   $date_Y.'/'.$date_M.'/'.$date_D;
  915.         $data   $request->get('data');
  916.         //echo $bon->getId();
  917.         //print_r($data);
  918.         $listerEtiquetteTnt $service_tnt->listerEtiquetteTnt($bon);
  919.         //print_r($listerEtiquetteTnt);
  920.         $tableauPdf = [];
  921.         if (count($listerEtiquetteTnt) > 0) {
  922.             foreach ($listerEtiquetteTnt as $etiquetteTnt) {
  923.                 $tableauPdf[] = $etiquetteTnt["pdf"];
  924.                 echo $etiquetteTnt["pdf"];
  925.                 exit;
  926.             }
  927.             //parcelNumber
  928.         }
  929.         $pdfRelier 'PDF/ETIQUETTES/'.date('Y').'/'.date('n').'/'.date('d').'/BLS-'.date('d-m-Y').'_'.date('H_i_s').'.pdf';
  930.         $dirname dirname($pdfRelier);
  931.         if ( ! is_dir($dirname)) {
  932.             //echo "<div>toto : ".$dirname."</div>";
  933.             mkdir($dirname0755true);
  934.         }
  935.         if (count($tableauPdf) > 0) {
  936.             $cmd "pdftk ";
  937.             foreach ($tableauPdf as $file) {
  938.                 $cmd .= $file." ";
  939.             }
  940.             $cmd    .= "cat output $pdfRelier";
  941.             $result shell_exec($cmd);
  942.             $valide 1;
  943.             $url    "/".$pdfRelier;
  944.         }
  945.         echo $cmd;
  946.         exit;
  947.         return new JsonResponse(['target' => '_blank''url' => '/'.$pdfRelier'valide' => '1']);
  948.     }
  949.     /**
  950.      * @Route("/vente/bons-livraison/imprimer/multiple", name="dtc_bon_livraison_multiple")
  951.      * @Route("/vente/bons-livraison/imprimer/multiple", name="dtc_bon_livraison_pdf_multiple")
  952.      */
  953.     public function imprimerMultipleAction(Request $requestEntityManagerInterface $em)
  954.     {
  955.         $data       $request->get('dataTables');
  956.         $ids        $data['actions'];
  957.         $tableauPdf = [];
  958.         $pdfRelier  'PDF/BONSLIV/BONLIV-'.date('d-m-Y').'.pdf';
  959.         $date_Y     date("Y");
  960.         $date_M     date("m");
  961.         $date_D     date("d");
  962.         $date       $date_Y.'/'.$date_M.'/'.$date_D;
  963.         //$ids = array("118","101","93");
  964.         for ($i 0$i count($ids); $i++) {
  965.             $repo $em->getRepository(Commande::class);
  966.             $bon  $repo->find($ids[$i]);
  967.             if (is_object($bon)) {
  968.                 $this->pdfBonLivraisonAction($bonfalse);
  969.                 $tableauPdf[] = $chemin_pdf 'PDF/BONSLIV/'.$date.'/BONLIV-'.$bon->getReference().'.pdf';
  970.             }
  971.         }
  972.         $cmd "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$pdfRelier ";
  973.         foreach ($tableauPdf as $file) {
  974.             $cmd .= $file." ";
  975.         }
  976.         $result shell_exec($cmd);
  977.         return new JsonResponse(['target' => '_blank''url' => '/'.$pdfRelier'valide' => '1']);
  978.     }
  979.     /**
  980.      * @Route("/vente/bons-livraison/client/{id}", name="dtc_bon_livraison_liste_by_client")
  981.      */
  982.     public function listerByClientAction(Request $requestClient $clientEntityManagerInterface $em)
  983.     {
  984.         $repo_commande $em->getRepository(Commande::class);
  985.         $bls $repo_commande->findBy([
  986.                                           'client'                 => $client->getId(),
  987.                                           'typeDocumentCommercial' => TypeDocumentCommercial::BL,
  988.                                           'dejaFacture'            => false,
  989.                                       ]);
  990.         if ($request->getMethod() == 'POST') {
  991.             $ids $request->request->get('ids');
  992.             //Remise à zero du statut a facturer
  993.             foreach ($bls as $bl) {
  994.                 $bl->setAFacturer(false);
  995.                 $em->persist($bl);
  996.             }
  997.             $em->flush();
  998.             if (count($ids) > 0) {
  999.                 foreach ($ids as $id) {
  1000.                     $bl $repo_commande->find($id);
  1001.                     if (is_object($bl)) {
  1002.                         $bl->setAFacturer(true);
  1003.                         $em->persist($bl);
  1004.                     }
  1005.                 }
  1006.                 $em->flush();
  1007.             }
  1008.             $url $this->generateUrl('dtc_facture_traite');
  1009.             return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  1010.         } else {
  1011.             $rendu $this->renderView('GestionComerciale/BonLivraison/lister_by_client_modal.html.twig', ['client' => $client'bls' => $bls]);
  1012.             return new JsonResponse(
  1013.                 ['rendu' => $rendu'valide' => '0''titre' => 'Sélectionnez les bons de livraison à facturer']
  1014.             );
  1015.         }
  1016.     }
  1017.     /**
  1018.      * @Route("/bl/charger-tableau/{id}/{type}", name="dtc_bl_charger_tableau")
  1019.      */
  1020.     public function chargerTableauAction(Request $requestCommande $commande$type "")
  1021.     {
  1022.         $rendu $this->renderView('GestionComerciale/BonLivraison/charger_tableau.html.twig', ["commande" => $commande'type' => $type]);
  1023.         return new JsonResponse(['rendu' => $rendu]);
  1024.     }
  1025. }