src/Controller/GestionComerciale/CommandeController.php line 1438

Open in your IDE?
  1. <?php
  2. namespace App\Controller\GestionComerciale;
  3. use App\Entity\Email\Categorie;
  4. use App\Entity\Email\Modele;
  5. use App\Entity\FO\Parametrage;
  6. use App\Entity\FO\Societe;
  7. use App\Entity\Ged\Fichier;
  8. use App\Entity\GestionComerciale\ArticleCommande;
  9. use App\Entity\GestionComerciale\Commande;
  10. use App\Entity\GestionComerciale\CommandeFournisseur;
  11. use App\Entity\GestionComerciale\Fabrication;
  12. use App\Entity\GestionComerciale\HistoriqueCommande;
  13. use App\Entity\GestionComerciale\StatutCommande;
  14. use App\Model\GestionCommerciale\TypeDocumentCommercial;
  15. use App\Form\GestionComerciale\CommandeAdresseType;
  16. use App\Form\GestionComerciale\CommandeTransporteurType;
  17. use App\Form\GestionComerciale\CommandeType;
  18. use App\Form\GestionComerciale\SupprimerCommandeType;
  19. use App\Library\Datatable\Util\Datatable;
  20. use App\Library\Uploader\Services\FileUploader;
  21. use App\Security\Voter\EntityVoter;
  22. use App\Service\Articles\ArticleService;
  23. use App\Service\Fabrication\OqtonService;
  24. use App\Service\FO\FOService;
  25. use App\Service\GestionComerciale\AcompteService;
  26. use App\Service\GestionComerciale\CommandeService;
  27. use App\Service\GestionComerciale\EmailService;
  28. use App\Service\Taxes\TaxeService;
  29. use App\Service\Utilisateur\ColonneTableauService;
  30. use Doctrine\ORM\EntityManagerInterface;
  31. use JMS\Serializer\SerializerBuilder;
  32. use Knp\Component\Pager\PaginatorInterface;
  33. use Knp\Snappy\Pdf;
  34. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  35. use Symfony\Component\DependencyInjection\Container;
  36. use Symfony\Component\HttpFoundation\Request;
  37. use Symfony\Component\HttpFoundation\JsonResponse;
  38. use Symfony\Component\HttpFoundation\Response;
  39. use Symfony\Component\Routing\Annotation\Route;
  40. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  41. use Symfony\Component\HttpFoundation\Cookie;
  42. use Symfony\Component\Security\Core\Exception\AccessDeniedException;
  43. use Symfony\Component\Validator\Validator\ValidatorInterface;
  44. use Symfony\Contracts\Translation\TranslatorInterface;
  45. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  46. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  47. class CommandeController extends AbstractController
  48. {
  49.     /**
  50.      * @Route("/vente/commande/nouveau", name="dtc_commande_ajouter")
  51.      */
  52.     public function ajouterAction(Request $requestEntityManagerInterface $emCommandeService $commandeServiceTranslatorInterface $translatorValidatorInterface $validator)
  53.     {
  54.         $commande = new Commande();
  55.         $user     $this->getUser();
  56.         $commande->setUtilisateur($user);
  57.         $form          $this->createForm(CommandeType::class, $commande);
  58.         $errors        "";
  59.         $forceQteDispo $request->query->get('forceQteDispo');
  60.         $form->handleRequest($request);
  61.         if ($form->isSubmitted()) {
  62.             if ($form->isValid()) {
  63.                 $commande->setDate(new \Datetimetrue);
  64.                 $em->persist($commande);
  65.                 $em->flush();
  66.                 //valeurRemiseEnEuros
  67.                 $articles = [
  68.                     'ids'                 => $request->request->get('ids'),
  69.                     'remise'              => $request->request->get('remise'),
  70.                     'montantRemise'       => $request->request->get('montantRemise'),
  71.                     'commentaire'         => $request->request->get('commentaire'),
  72.                     'commentairePrive'    => $request->request->get('commentairePrive'),
  73.                     'libellesSecondaires' => $request->request->get('libellesSecondaires'),
  74.                     'libelles'            => $request->request->get('libelles'),
  75.                     'tva'                 => $request->request->get('tva'),
  76.                     'idsTva'              => $request->request->get('idsTva'),
  77.                     'remiseSuppl'         => $request->request->get('remiseSuppl'),
  78.                     'ecocontribution'     => $request->request->get('ecocontribution'),
  79.                     'prix'                => $request->request->get('prix'),
  80.                     //'fraisPortLigne'=>$request->request->get('fraisPortLigne'),
  81.                     'qte'                 => $request->request->get('qte'),
  82.                     'force'               => $request->request->get('force'),
  83.                     'qteDispo'            => $request->request->get('qteDispo'),
  84.                     'transporteurs'       => $request->request->get('transporteurs'),
  85.                 ];
  86.                 $valeurs = ["articles" => $articles'typeDocument' => 'commande''operation' => 'commande'];
  87.                 if ($commande->getClient()->getReferenceClientObligatoire() == true && $commande->getReferenceClient() == '') {
  88.                     $commandeService->sauvegarder($commande$valeursfalse);
  89.                     $this->addFlash(
  90.                         'warning',
  91.                         $translator->trans('La référence de commande client est obligatoire pour ce client!')
  92.                     );
  93.                     return $this->redirectToRoute('dtc_commande_modifier', ["id" => $commande->getId()]);
  94.                 } else {
  95.                     $commandeService->sauvegarder($commande$valeurs);
  96.                     $this->addFlash('notice'$translator->trans('Commande ajoutée avec succès !'));
  97.                     return $this->redirectToRoute('dtc_commande_modifier', ["id" => $commande->getId(), 'forceQteDispo' => true]);
  98.                 }
  99.             } else {
  100.                 $errors $validator->validate($commande);
  101.             }
  102.         }
  103.         return $this->render('GestionComerciale/Commande/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'forceQteDispo' => $forceQteDispo]);
  104.     }
  105.     /**
  106.      * @Route("/vente/commande/modifier/{id}", name="dtc_commande_modifier")
  107.      */
  108.     public function modifierAction(Request             $requestCommande $commandeEntityManagerInterface $emCommandeService $commandeService,
  109.                                    TranslatorInterface $translatorValidatorInterface $validatorAcompteService $serviceAcompte,OqtonService $oqtonService
  110.     ) {
  111.         //echo '('.$commande->getLibelleLivraison().')';
  112.         //exit;
  113.         /*
  114.         $serviceNumerotation = $this->get('dtc.numerotationdocument');
  115.         $n = $serviceNumerotation->generer($commande);
  116.         echo $n;
  117.         */
  118.         /*
  119.             13     Ordre de fabrication multiple
  120.             12     Facture fournisseur
  121.             11     Bon de préparation atelier
  122.             10     Devis OR
  123.             9     Ordre de fabrication
  124.             8     Commande fournisseur
  125.             7     Avoir
  126.             6     Facture
  127.             5     Bon de livraison
  128.             4     Bon de préparation
  129.             3     Ordre de réparation
  130.             2     Commande
  131.             1     Devis
  132.         */
  133.         //$request = $request;
  134.         $tab $request->query->get('tab');
  135.         if (is_int($commande->getTypeDocumentCommercial())) {
  136.             if ($commande->getTypeDocumentCommercial() != TypeDocumentCommercial::COMMANDE) {
  137.                 if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::DEVIS) {
  138.                     $url "dtc_devis_modifier";
  139.                 }
  140.                 if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::BP) {
  141.                     $url "dtc_bon_preparation_modifier";
  142.                 }
  143.                 if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::BL) {
  144.                     $url "dtc_bon_livraison_modifier";
  145.                 }
  146.                 if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::FACTURE) {
  147.                     $url "dtc_facture_afficher";
  148.                 }
  149.                 if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::AVOIR) {
  150.                     $url "dtc_avoir_modifier";
  151.                 }
  152.                 if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::ORDREFABRICATION) {
  153.                     $url "dtc_ordre_reparation_modifier";
  154.                 }
  155.                 if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::DEVISOR) {
  156.                     $url "dtc_ordre_reparation_modifier";
  157.                 }
  158.                 if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::ORDREREPARATION) {
  159.                     $url "dtc_ordre_reparation_modifier";
  160.                 }
  161.                 return $this->redirectToRoute($url, ["id" => $commande->getId(), "tab" => $tab]);
  162.             }
  163.         }
  164.         $user $this->getUser();
  165.         //if(is_object($user) && !empty($this->getParameter('utilisateur_site_internet')) && $user->getId() != $this->getParameter('utilisateur_site_internet')) $commande->setUtilisateur($user);
  166.         if (is_object($commande->getUtilisateur())
  167.             && ! empty($this->getParameter('utilisateur_site_internet'))
  168.             && $commande->getUtilisateur()->getId() == $this->getParameter('utilisateur_site_internet')) {
  169.         } else {
  170.             //if(!is_object($commande->getUtilisateur())) $commande->setUtilisateur($user);
  171.         }
  172.         $forceQteDispo $request->query->get('forceQteDispo');
  173.         $form          $this->createForm(CommandeType::class, $commande);
  174.         $articles = [
  175.             'ids'   => $request->request->get('ids'),
  176.             'prix'  => $request->request->get('prix'),
  177.             'qte'   => $request->request->get('qte'),
  178.             'force' => $request->request->get('force'),
  179.         ];
  180.         $valeurs  = ["articles" => $articles'operation' => 'commande'];
  181.         $errors "";
  182.         $form->handleRequest($request);
  183.         if ($form->isSubmitted()) {
  184.             if ($commandeService->estEditable($commande) or == 1) {
  185.                 $droit $this->isGranted(EntityVoter::UPDATECommande::class);
  186.                 if ( ! $droit) {
  187.                     return $this->redirectToRoute('dtc_commande_modifier', ["id" => $commande->getId()]);
  188.                 }
  189.                 if ($form->isValid()) {
  190.                     if ($request->request->get('facturer') != '') {
  191.                         $valeurs["facturer"] = "1";
  192.                         $facture             $commandeService->transformerCommandeEnFacture($commande);
  193.                         $this->addFlash('notice'$translator->trans('Facture créée avec succès!'));
  194.                         return $this->redirectToRoute('dtc_facture_afficher', ["id" => $facture->getId()]);
  195.                     } elseif ($request->request->get('supprimer') == 'supprimer') {
  196.                         $this->addFlash('notice'$translator->trans('Commande supprimée avec succès !'));
  197.                         $commandeService->annulerCommande($commande);
  198.                         if (is_object($commande->getClient())) {
  199.                             $remboursement  $serviceAcompte->proposerRemboursement($commande->getClient());
  200.                         }
  201.                         return $this->redirectToRoute('dtc_commande_liste', []);
  202.                         //return $this->redirectToRoute('dtc_commande_liste',array("r"=>$remboursement,"c"=>$commande->getClient()->getId()));
  203.                     }
  204.                     if ($request->request->get('commandeEnfant') != '') {
  205.                         $commandeEnfant $commandeService->creerCommandeEnfant($commande);
  206.                         $this->addFlash('notice'$translator->trans('Commande enfant créée avec succès !'));
  207.                         return $this->redirectToRoute('dtc_commande_modifier', ["id" => $commandeEnfant->getId()]);
  208.                     }
  209.                     $em->persist($commande);
  210.                     $em->flush();
  211.                     $operation $request->request->get('operation');
  212.                     $articles  = [
  213.                         'valider'                   => $request->request->get('valider'),
  214.                         'ids'                       => $request->request->get('ids'),
  215.                         'montantRemise'             => $request->request->get('montantRemise'),
  216.                         'remiseCalcule'             => $request->request->get('remiseCalcule'),
  217.                         'remise'                    => $request->request->get('remise'),
  218.                         'commentaire'               => $request->request->get('commentaire'),
  219.                         'commentairePrive'          => $request->request->get('commentairePrive'),
  220.                         'remiseSuppl'               => $request->request->get('remiseSuppl'),
  221.                         'ecocontribution'           => $request->request->get('ecocontribution'),
  222.                         'prix'                      => $request->request->get('prix'),
  223.                         //'fraisPortLigne'=>$request->request->get('fraisPortLigne'),
  224.                         'libellesSecondaires'       => $request->request->get('libellesSecondaires'),
  225.                         'libelles'                  => $request->request->get('libelles'),
  226.                         'tva'                       => $request->request->get('tva'),
  227.                         'idsTva'                    => $request->request->get('idsTva'),
  228.                         'qte'                       => $request->request->get('qte'),
  229.                         'force'                     => $request->request->get('force'),
  230.                         'commentaireSuppl'          => $request->request->get('commentaireSuppl'),
  231.                         'emplacement'               => $request->request->get('emplacement'),
  232.                         'nbEmplacement'             => $request->request->get('nbEmplacement'),
  233.                         'numero_serie'              => $request->request->get('numero_serie'),
  234.                         'duree_garantie'            => $request->request->get('duree_garantie'),
  235.                         'articlesCommandeRepris'    => $request->request->get('articlesCommandeRepris'),
  236.                         'idsArticleCommandeOrigine' => $request->request->get('idArticleCommandeOrigine'),
  237.                         'articlesCommandeIds'       => $request->request->get('articlesCommandeIds'),
  238.                         'qteDispo'                  => $request->request->get('qteDispo'),
  239.                         'transporteurs'             => $request->request->get('transporteurs'),
  240.                         'articlesCommandeAssocies'  => $request->request->get('articlesCommandeAssocies'),
  241.                         'tabPrixAchatNetEuros'      => $request->request->get('tabPrixAchatNetEuros'),
  242.                         'societe_livraison_txt'     => $request->request->get('societe_livraison_txt'),
  243.                         'numero_livraison_txt'      => $request->request->get('numero_livraison_txt'),
  244.                         'rue_livraison_txt'         => $request->request->get('rue_livraison_txt'),
  245.                         'complement_livraison_txt'  => $request->request->get('complement_livraison_txt'),
  246.                         'complement2_livraison_txt' => $request->request->get('complement2_livraison_txt'),
  247.                         'cp_livraison_txt'          => $request->request->get('cp_livraison_txt'),
  248.                         'ville_livraison_txt'       => $request->request->get('ville_livraison_txt'),
  249.                         'pays_livraison_txt'        => $request->request->get('pays_livraison_txt'),
  250.                         'societe_facturation_txt'     => $request->request->get('societe_facturation_txt'),
  251.                         'numero_facturation_txt'      => $request->request->get('numero_facturation_txt'),
  252.                         'rue_facturation_txt'         => $request->request->get('rue_facturation_txt'),
  253.                         'complement_facturation_txt'  => $request->request->get('complement_facturation_txt'),
  254.                         'complement2_facturation_txt' => $request->request->get('complement2_facturation_txt'),
  255.                         'cp_facturation_txt'          => $request->request->get('cp_facturation_txt'),
  256.                         'ville_facturation_txt'       => $request->request->get('ville_facturation_txt'),
  257.                         'pays_facturation_txt'        => $request->request->get('pays_facturation_txt'),
  258.                         'kilometrage'                 => $request->request->get('kilometrage'),
  259.                         'dateCT'                      => $request->request->get('dateCT'),
  260.                         'referencesArticle' => $request->request->get('referencesArticle'),
  261.                     ];
  262.                     $valeurs = ["articles" => $articles'typeDocument' => 'commande''operation' => 'commande'];
  263.                     if ($request->request->get('facturer') != '') {
  264.                         $valeurs = ["articles" => $articles'typeDocument' => 'commande''operation' => 'facturer_v2'];
  265.                         //On s'assure qu'il n'existe pas deja une facture pour cette commande
  266.                         /*
  267.                 $totalFactureTmp = $commandeService->getTotalFacture($commande);
  268.                 $totalAvoirTmp = $commandeService->getTotalAvoir($commande);
  269.                 if($totalFactureTmp > 0 or $totalAvoirTmp > 0) {
  270.                     $this->addFlash('warning',$translator->trans('Impossible de facturer, il existe déjà une facture !'));
  271.                     return $this->redirectToRoute('dtc_commande_modifier',array("id"=>$commande->getId()));
  272.                 }
  273.                 */
  274.                         $factures $em->getRepository(Commande::class)->getFacturesEtAvoirsByCommande($commande);
  275.                         $totalTmp $commande->getTotalTtc();
  276.                         foreach ($factures as $facture) {
  277.                             $totalTmp -= $facture->getTotalTtc();
  278.                         }
  279.                         if (($commande->getTotalTtc() > && $totalTmp <= 0) || ($commande->getTotalTtc() < && $totalTmp >= 0)) {
  280.                             $this->addFlash('warning'$translator->trans('Impossible de facturer, il existe déjà une facture !'));
  281.                             return $this->redirectToRoute('dtc_commande_modifier', ["id" => $commande->getId()]);
  282.                         }
  283.                     }
  284.                     if ($request->isXmlHttpRequest()) {
  285.                         $commandeService->sauvegarder($commande$valeursfalsefalse);
  286.                         if ( ! in_array($request->request->get('declencheur'), ['supprimer-row-article'])) {
  287.                             $commandeService->creerHistorique($commande$request->request->get('declencheur'));
  288.                         }
  289.                         return new JsonResponse(['data' => 1'date' => (new \Datetime)->format('d/m/Y à H:i')]);
  290.                     }
  291.                     //$commandeService->sauvegarder($commande,$valeurs);
  292.                     $commandeService->sauvegarder($commande$valeurs$email false$creerBonAuto false);
  293.                     //return $this->render('GestionComerciale/Commande/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'commande'=>$commande,"ouvrir"=>$request->request->get('actionPrecedente'), 'forceQteDispo'=>$forceQteDispo));
  294.                     if ($request->request->get('facturer') != '') {
  295.                         $this->addFlash('notice'$translator->trans('Facture sauvegardée avec succès !'));
  296.                         $repo_statut_document $em->getRepository(StatutCommande::class);
  297.                         //$liste_statut = $repo_statut_document->findOneBy(array("documentCommercial"=>6,"ordre"=>array(1)));
  298.                         $liste_statut $repo_statut_document->findById([192122]);
  299.                         $typesFac  = [6,7];
  300.                         $repo_fac  $em->getRepository(Commande::class);
  301.                         $reliquats false;
  302.                         foreach ($commande->getArticleCommande() as $ac) {
  303.                             if ($ac->getRalClient() != 0) {
  304.                                 $reliquats true;
  305.                                 break;
  306.                             }
  307.                         }
  308.                         $facture $repo_fac->findBy(["commande" => $commande"typeDocumentCommercial" => $typesFac"visible" => 1], ['id' => 'DESC'], 10);
  309.                         $temp_type_document_commercial "";
  310.                         foreach ($facture as $f) {
  311.                             $temp_id_fac                   $f->getId();
  312.                             $temp_type_document_commercial $f->getTypeDocumentCommercial();
  313.                         }
  314.                         //return $this->render('GestionComerciale/Commande/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'commande'=>$commande,"ouvrir"=>$request->request->get('actionPrecedente'), 'forceQteDispo'=>$forceQteDispo));
  315.                         if (is_object($temp_type_document_commercial) && $temp_type_document_commercial->getId() == 6) {
  316.                             return $this->redirectToRoute('dtc_facture_afficher', ["id" => $temp_id_fac'reliquats' => $reliquats]);
  317.                         } else {
  318.                             return $this->redirectToRoute('dtc_avoir_modifier', ["id" => $temp_id_fac'reliquats' => $reliquats]);
  319.                         }
  320.                     }
  321.                     $commandeService->changeDateExpeditionTheoriqueCommandeProcess($commande);
  322.                     if ($commande->getClient()->getReferenceClientObligatoire() == true && $commande->getReferenceClient() == '') {
  323.                         /*$this->addFlash(
  324.                             'warning',
  325.                            $translator->trans('La référence de commande client est obligatoire pour ce client!')
  326.                         );
  327.                         */
  328.                     } else {
  329.                        // $oqtonService->sendOrder($commande);
  330.                         $this->addFlash('notice'$translator->trans('Commande sauvegardée avec succès !'));
  331.                     }
  332.                     $commandeService->creerHistorique($commande2);
  333.                     return $this->redirectToRoute('dtc_commande_modifier', ["id" => $commande->getId(), 'forceQteDispo' => true]);
  334.                 } else {
  335.                     $errors $validator->validate($commande);
  336.                 }
  337.             } else {
  338.                 $paiement $commande->getStatutPaiement();
  339.                 $em->refresh($commande);
  340.                 $commande->setStatutPaiement($paiement);
  341.                 $em->persist($commande);
  342.                 $em->flush();
  343.                 $this->addFlash('notice'$translator->trans('Statut du paiement de la commande modifié avec succès !'));
  344.                 /*
  345.                 $this->addFlash(
  346.                     'warning',
  347.                     "La commande n'est plus éditable ! "
  348.                 );
  349.                 */
  350.                 //return $this->redirectToRoute('dtc_commande_modifier',array("id"=>$commande->getId()));
  351.             }
  352.         }
  353.         return $this->render(
  354.             'GestionComerciale/Commande/ajouter.html.twig',
  355.             [
  356.                 'form'          => $form->createView(),
  357.                 'errors'        => $errors,
  358.                 'commande'      => $commande,
  359.                 "ouvrir"        => $request->request->get('actionPrecedente'),
  360.                 'forceQteDispo' => $forceQteDispo,
  361.             ]
  362.         );
  363.     }
  364.     /**
  365.      * @Route("/vente/commande/supprimer/multiple", name="dtc_commande_liste_supprimer")
  366.      */
  367.     public function supprimerMultipleAction(Request $requestEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  368.     {
  369.         $url $this->generateUrl('dtc_commande_liste', []);
  370.         return new JsonResponse(['url' => $url'valide' => '1']);
  371.         $data $request->get('dataTables');
  372.         $ids  $data['actions'];
  373.         $repo $em->getRepository(Commande::class);
  374.         for ($i 0$i count($ids); $i++) {
  375.             $v $repo->find($ids[$i]);
  376.             if (is_object($v)) {
  377.                 $em->remove($v);
  378.             }
  379.         }
  380.         $em->flush();
  381.         $this->addFlash(
  382.             'notice',
  383.             $translator->trans('Commande supprimée avec succès !')
  384.         );
  385.         $url $this->generateUrl('dtc_commande_liste', []);
  386.         return new JsonResponse(['url' => $url'valide' => '1']);
  387.     }
  388.     /**
  389.      * @Route("/vente/commande/supprimer/{id}", name="dtc_commande_supprimer")
  390.      */
  391.     public function supprimerAction(Request $requestCommande $commandeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  392.     {
  393.         $titre_modal $translator->trans("Demande de confirmation");
  394.         $user        $this->getUser();
  395.         $form   $this->createForm(SupprimerCommandeType::class, $commande);
  396.         $errors "";
  397.         $form->handleRequest($request);
  398.         if ($form->isSubmitted()) {
  399.             if ($form->isValid()) {
  400.                 $em->remove($commande);
  401.                 $em->flush();
  402.                 $this->addFlash(
  403.                     'notice',
  404.                     $translator->trans('Commande supprimée avec succès !')
  405.                 );
  406.                 $url $this->generateUrl('dtc_commande_liste', []);
  407.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  408.             } else {
  409.                 $errors $validator->validate($commande);
  410.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $commande->getId(), 'type' => '']);
  411.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  412.             }
  413.         }
  414.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'id' => $commande->getId(), 'type' => '''errors' => $errors]);
  415.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  416.     }
  417.     private function reorderArray($array$ordres)
  418.     {
  419.         $arrayTmp = [];
  420.         foreach ($ordres as $ordre) {
  421.             foreach ($array as $statut) {
  422.                 if ($statut->getOrdre() == $ordre) {
  423.                     $arrayTmp[] = $statut;
  424.                 }
  425.             }
  426.         }
  427.         return $arrayTmp;
  428.     }
  429.     /**
  430.      * @Route("/vente/commande", name="dtc_commande_liste")
  431.      */
  432.     public function listerAction(Request $requestEntityManagerInterface $emDatatable $datatableTranslatorInterface $translatorColonneTableauService $serviceColonneTableau)
  433.     {
  434.         $typeDocumentCommercial TypeDocumentCommercial::COMMANDE;
  435.         $statuts                $em->getRepository(StatutCommande::class)->findBy([
  436.                                                                                         'documentCommercial' => $typeDocumentCommercial,
  437.                                                                                     ], ['ordre' => 'ASC']);
  438.         $typeDocumentCommercial TypeDocumentCommercial::BP;
  439.         $statutsBP              $em->getRepository(StatutCommande::class)->findBy([
  440.                                                                                         'documentCommercial' => $typeDocumentCommercial,
  441.                                                                                     ], ['ordre' => 'ASC']);
  442.         $statuts   $this->reorderArray($statuts, [11021345108912133940,14]);
  443.         $statutsBP $this->reorderArray($statutsBP, [1212310131149999]);
  444.         $tableau_class_cellule[] = [
  445.             "className" => "visible_export colonne_id",
  446.             "targets"   => [0],
  447.             "visible"   => true,
  448.         ];
  449.         $tableau_class_cellule[] = [
  450.             "className" => "visible_export colonne_id",
  451.             "targets"   => [1],
  452.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "id"),
  453.         ];
  454.         $tableau_class_cellule[] = [
  455.             "className" => "visible_export colonne_id text-center",
  456.             "targets"   => [2],
  457.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "date"),
  458.         ];
  459.         $tableau_class_cellule[] = [
  460.             "className" => "visible_export colonne_id",
  461.             "targets"   => [3],
  462.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "reference"),
  463.         ];
  464.         $tableau_class_cellule[] = [
  465.             "className" => "visible_export colonne_id",
  466.             "targets"   => [4],
  467.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "referenceCommandeClient"),
  468.         ];
  469.         /*
  470.         $tableau_class_cellule[] = [
  471.             "className" => "visible_export colonne_id",
  472.             "targets"   => [4],
  473.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "origine"),
  474.         ];
  475.         $tableau_class_cellule[] = [
  476.             "className" => "visible_export colonne_id",
  477.             "targets"   => [5],
  478.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "refclient"),
  479.         ];
  480.         */
  481.         $tableau_class_cellule[] = [
  482.             "className" => "visible_export colonne_id",
  483.             "targets"   => [5],
  484.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "nomClient"),
  485.         ];
  486.         /*
  487.         $tableau_class_cellule[] = [
  488.             "className" => "visible_export colonne_id",
  489.             "targets"   => [7],
  490.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "libelleLivraison"),
  491.         ];
  492.         //$tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(7),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"prenomClient"));
  493.         $tableau_class_cellule[] = [
  494.             "className" => "visible_export colonne_id",
  495.             "targets"   => [8],
  496.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "telephone"),
  497.         ];
  498.         $tableau_class_cellule[] = [
  499.             "className" => "visible_export colonne_id",
  500.             "targets"   => [9],
  501.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "adresse1"),
  502.         ];
  503.         $tableau_class_cellule[] = [
  504.             "className" => "visible_export colonne_id",
  505.             "targets"   => [10],
  506.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "adresse2"),
  507.         ];
  508.         $tableau_class_cellule[] = [
  509.             "className" => "visible_export colonne_id",
  510.             "targets"   => [11],
  511.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "ville"),
  512.         ];
  513.         $tableau_class_cellule[] = [
  514.             "className" => "visible_export colonne_id",
  515.             "targets"   => [12],
  516.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "codePostal"),
  517.         ];
  518.         */
  519.         $tableau_class_cellule[] = [
  520.             "className" => "visible_export colonne_id text-right",
  521.             "targets"   => [6],
  522.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "totalHT"),
  523.         ];
  524.         /*
  525.         $tableau_class_cellule[] = [
  526.             "className" => "visible_export colonne_id text-right",
  527.             "targets"   => [14],
  528.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "totaTTC"),
  529.         ];
  530.         */
  531.         $tableau_class_cellule[] = ["orderable" => false"className" => "colonne_id""targets" => [7], "visible" => true];
  532.         /*
  533.         $tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(4),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"refclient"));
  534.         $tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(5),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"client"));
  535.         $tableau_class_cellule[]=array("className"=>"visible_export somme colonne_id text-right","targets"=>array(6),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"totalHT"));
  536.         $tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(6),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"commentaire"));
  537.         $tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(7),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"dateBon"));
  538.         $tableau_class_cellule[]=array("className"=>"visible_export colonne_id text-center","targets"=>array(8),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"refCli"));
  539.         $tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(9),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"commercial"));
  540.         $tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(10),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"assistanteCommerciale"));
  541.         $tableau_class_cellule[]=array("className"=>"visible_export colonne_id text-center","targets"=>array(11),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"dateReceptionFournisseur"));
  542.         $tableau_class_cellule[]=array("className"=>"visible_export colonne_id text-center","targets"=>array(12),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"dateLivraisonSouhaitee"));
  543.         $tableau_class_cellule[]=array("className"=>"visible_export colonne_id text-center","targets"=>array(13),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"dateExpeditionTheorique"));
  544.         $tableau_class_cellule[]=array("className"=>"visible_export colonne_id text-center","targets"=>array(14),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"Statut"));
  545.         */
  546.         $response = new Response();
  547.         $this->datatable($request$em$datatable$translator$response);
  548.         $param $request->query->all();
  549.         return $this->render('GestionComerciale/Commande/lister.html.twig', [
  550.                                                                               'parametres'          => $param,
  551.                                                                               'tableauClassColonne' => $tableau_class_cellule,
  552.                                                                               'statuts'             => $statuts,
  553.                                                                               'statutsBP'           => $statutsBP,
  554.                                                                           ]
  555.             ,                $response);
  556.     }
  557.     /**
  558.      * set datatable configs
  559.      *
  560.      * @return \App\Library\Datatable\Util\Datatable
  561.      */
  562.     private function datatable(Request $requestEntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  563.     {
  564.         $param $request->query->all();
  565.         $datatable
  566.             ->setDatatableId('liste_commande')
  567.             ->setEntity(Commande::class, "x")
  568.             ->setFields(
  569.                 [
  570.                     $translator->trans("ID")              => 'x.id',
  571.                     $translator->trans("Date")            => 'x.date',
  572.                     $translator->trans("Réf")             => 'x.reference',
  573.                     $translator->trans("Réf cmd client") => 'x.referenceClient',
  574.                     /*
  575.                     $translator->trans("Origine")         => 'cmp.libelle',
  576.                     $translator->trans("Réf Client")      => 'c.reference',
  577.                     */
  578.                     $translator->trans("Client")          => 'x.nom',
  579.                     /*
  580.                     $translator->trans("Société / Nom")   => 'x.libelleLivraison',
  581.                     $translator->trans("Tél")          => 'x.telephone',
  582.                     $translator->trans("Adresse 1")    => 'x.complementLivraison',
  583.                     $translator->trans("Adresse 2")    => 'x.complementLivraison2',
  584.                     $translator->trans("Ville")        => 'x.villeLivraisonTxt',
  585.                     $translator->trans("Code postal")  => 'x.codePostalLivraisonTxt',
  586.                     */
  587.                     $translator->trans("Total HT")     => 'x.total',
  588.                     /*
  589.                     $translator->trans("Total TTC")    => 'x.totalTtc',
  590.                     */
  591.                     $translator->trans("Statut")       => 's.libelle',
  592.                     //$translator->trans("Transporteur") => 'tr.libelle',
  593.                     /*
  594.                                $translator->trans("Comm") =>  'x.commentaire',
  595.                                $translator->trans("Date Prep") =>  'x.dateBon',
  596.                                 $translator->trans("Réf cmde cli") =>  'x.referenceClient',
  597.                                 $translator->trans("Commercial") =>  'co.reference',
  598.                                $translator->trans("Assistante commercial") =>  'ac.reference',
  599.                                 $translator->trans("Date de réception fourn.") =>  'x.dateReceptionFournisseur',
  600.                                 $translator->trans("Date liv. souhaitée") =>  'x.dateLivraisonSouhaitee',
  601.                                 //$translator->trans("Date liv. théorique") =>  'x.dateLivraisonTheorique',
  602.                                 $translator->trans("Date exp. théorique") =>  'x.dateExpeditionTheorique',
  603.                                 $translator->trans("Statut") =>  's.libelle',
  604.                                 */
  605.                     $translator->trans("Actions")      => 'x.id',
  606.                     "_identifier_"                     => 'x.id',
  607.                 ]
  608.             )
  609.             /*
  610.                      ->addJoin('x.etatCommande', 'ec', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  611.                      ->addJoin('x.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  612.                      //->addJoin('x.typeDocumentCommercial', 'td', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  613.                      ->addJoin('x.utilisateur', 'u', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  614.                      ->addJoin('x.assistanteCommercial', 'ac', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  615.                      ->addJoin('x.commercial', 'co', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  616.                      */
  617.             ->addJoin('x.compteMarketPlace''cmp'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  618.             ->addJoin('cmp.marketPlace''mp'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  619.             ->addJoin('x.client''c'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  620.             ->addJoin('x.transporteur''t'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  621.             ->addJoin('x.niveauUn''nu'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  622.             ->addJoin('x.transporteur''tr'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  623.             ->addJoin('x.statutCommande''s'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  624.             ->setRenderers(
  625.                 [
  626.                     => [
  627.                         'view' => 'FO/DataTable/date.html.twig',
  628.                     ],
  629.                     => [
  630.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  631.                         'params' => [
  632.                             'edit_route' => 'dtc_commande_modifier',
  633.                         ],
  634.                     ],
  635.                     => [
  636.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  637.                         'params' => [
  638.                             'edit_route' => 'dtc_commande_modifier',
  639.                         ],
  640.                     ],
  641.                     /*
  642.                     5 => [
  643.                         'view'   => 'FO/DataTable/client-reference.html.twig',
  644.                         'params' => [
  645.                             'edit_route'   => 'dtc_client_modifier',
  646.                             'typeDocument' => 'client',
  647.                         ],
  648.                     ],
  649.                     */
  650.                     => [
  651.                         'view'   => 'FO/DataTable/client.html.twig',
  652.                         'params' => [
  653.                             'edit_route'   => 'dtc_client_modifier',
  654.                             'typeDocument' => 'client',
  655.                         ],
  656.                     ],
  657.                     /*
  658.                     8 => [
  659.                         'view'   => 'FO/DataTable/telephone.html.twig',
  660.                         'params' => [
  661.                             'champ' => 'setTelephone',
  662.                             'objet' => Commande::class,
  663.                         ],
  664.                     ],
  665.                     */
  666.                     => [
  667.                         'view' => 'FO/DataTable/prix_total_ht.html.twig',
  668.                     ],
  669.                     /*
  670.                     14 => [
  671.                         'view' => 'FO/DataTable/prix_total_ttc.html.twig',
  672.                     ],
  673.                     */
  674.                     => [
  675.                         'view'   => 'FO/DataTable/actions.html.twig',
  676.                         'params' => [
  677.                             'edit_route'                  => 'dtc_document_commercial_modifier',
  678.                             //'edit_adresse_commande_modal' => 'dtc_document_commercial_modifier_adresse_modal',
  679.                             //'supprimer_route'    => 'dtc_commande_supprimer',
  680.                             'objet'                       => Commande::class,
  681.                             'deplier'                     => true,
  682.                             'table'                       => "liste_commande",
  683.                             'download_export' => 'exportGedZip'
  684.                         ],
  685.                     ],
  686.                 ]
  687.             )
  688.             ->setMultiple(
  689.                 array(
  690.                     'delete' => array(
  691.                         'title' => 'ExportZip',
  692.                         'route' => 'export__export_commandes_zip'
  693.                     ),
  694.                 )
  695.             )
  696.             ->setOrder("x.date desc, x.id""desc")
  697.             //->setOrder("ec.ordre", "desc")
  698.             ->setSearch(true)
  699.             ->setSearchFields([2346]);
  700.         //$where = "x.typeDocumentCommercial = :typeDocumentCommercial and x.origineSaisie IN (:origineSaisie) AND x.visible=:visible";
  701.         //$where = "x.typeDocumentCommercial = :typeDocumentCommercial and x.origineSaisie IN (:origineSaisie) AND (x.visible=:visible OR x.visible=:visible OR (x.visible=0 AND x.dateBon>:dateActuelle))     ";
  702.         //$where = "x.typeDocumentCommercial = :typeDocumentCommercial and x.origineSaisie IN (:origineSaisie)";
  703.         $where "x.typeDocumentCommercial = :typeDocumentCommercial";
  704.         //$parameters = array('typeDocumentCommercial' => TypeDocumentCommercial::COMMANDE,"visible"=>"1",'origineSaisie'=>array("commande","devis","bp"),"dateActuelle"=>date('Y-m-d H:i:s' ));
  705.         //$parameters = array('typeDocumentCommercial' => TypeDocumentCommercial::COMMANDE,'origineSaisie'=>array("commande","devis","bp"));
  706.         $parameters = ['typeDocumentCommercial' => TypeDocumentCommercial::COMMANDE];
  707.         $cookies $request->cookies;
  708.         //print_r($cookies);
  709.         if ( ! empty($param['parametres']["acompte"]) and $param['parametres']["acompte"] != "") {
  710.             if ($param['parametres']["acompte"] == "oui") {
  711.                 $datatable->addJoin('x.acomptes''acpte');
  712.             } elseif ($param['parametres']["acompte"] == "non") {
  713.                 //sans acompte
  714.                 $datatable->addJoin('x.acomptes''acpte'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN'with''acpte.commande = x.id');
  715.                 $where .= " and acpte.id is null ";
  716.             }
  717.         }
  718.         $cmdes_internet false;
  719.         if ( ! empty($param['parametres']["internet"]) and $param['parametres']["internet"] == "on") {
  720.             $cmdes_internet true;
  721.             unset($param['parametres']["internet"]);
  722.         }
  723.         if (empty($param['parametres'])) {
  724.             //echo "AAA";
  725.             foreach ($cookies as $key => $cookie) {
  726.                 $param['parametres'][$key] = $cookie;
  727.             }
  728.             if ($cmdes_internet) {
  729.                 $param['parametres']["internet"] = "on";
  730.             }
  731.         } else {
  732.             if ($cmdes_internet) {
  733.                 $param['parametres']["internet"] = "on";
  734.             }
  735.             //print_r($param['parametres']);
  736.             //exit;
  737.         }
  738.         if (array_key_exists('parametres'$param)) {
  739.           //  print_r($param['parametres']);
  740.             $response = new Response();
  741.             if (array_key_exists('client'$param["parametres"]) and $param["parametres"]["client"] > 0) {
  742.                 //$datatable->addJoin('x.client', 'client', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  743.                 $parameters["client"] = $param["parametres"]["client"];
  744.                 if ($where != "") {
  745.                     $where .= " AND ";
  746.                 }
  747.                 $where .= "c.id = :client";
  748.             }
  749.             if (array_key_exists('client'$param["parametres"]) and $param["parametres"]["date_debut"] != "") {
  750.                 $param["parametres"]["date_debut"] = \DateTime::createFromFormat('d/m/Y'$param["parametres"]["date_debut"]);
  751.                 $param["parametres"]["date_debut"]->setTime(000000);
  752.                 $parameters["date_debut"] = $param["parametres"]["date_debut"];
  753.                 if ($where != "") {
  754.                     $where .= " AND ";
  755.                 }
  756.                 $where .= "x.date >= :date_debut";
  757.             }
  758.             if (array_key_exists('transporteur'$param["parametres"]) and $param["parametres"]["transporteur"] > 0) {
  759.                 //$datatable->addJoin('x.client', 'client', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  760.                 $parameters["transporteur"] = $param["parametres"]["transporteur"];
  761.                 if ($where != "") {
  762.                     $where .= " AND ";
  763.                 }
  764.                 $where .= "t.id = :transporteur";
  765.             }
  766.             if (array_key_exists('marketplace'$param["parametres"]) and $param["parametres"]["marketplace"] > 0) {
  767.                 //$datatable->addJoin('x.client', 'client', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  768.                 $parameters["marketplace"] = $param["parametres"]["marketplace"];
  769.                 if ($where != "") {
  770.                     $where .= " AND ";
  771.                 }
  772.                 $where .= "mp.id = :marketplace";
  773.             }
  774.             //if (array_key_exists('type_commande', $param["parametres"]) and $param["parametres"]["type_commande"] == "internet") {
  775.             if ($cmdes_internet) {
  776.                 //$parameters["origine"]="prestashop";
  777.                 if ($where != "") {
  778.                     $where .= " AND ";
  779.                 }
  780.                 //$where .= "x.origine = :origine";
  781.                 //$where .= "x.origine = :origine AND (x.valideManuellement = 0 OR x.valideManuellement IS NULL)";
  782.                 $where .= "x.referenceMarketPlace is not null";
  783.             } elseif (array_key_exists('type_commande'$param["parametres"]) and $param["parametres"]["type_commande"] == "comptoir") {
  784.                 //$parameters["origine"]="prestashop";
  785.                 if ($where != "") {
  786.                     $where .= " AND ";
  787.                 }
  788.                 $where .= "x.referenceMarketPlace is null";
  789.             } else {
  790.                 if ($where != "") {
  791.                     $where .= " AND ";
  792.                 }
  793.                 $where .= "x.referenceMarketPlace is null";
  794.             }
  795.             if (array_key_exists('valideManuellement'$param["parametres"]) and $param["parametres"]["valideManuellement"] == "on") {
  796.                 if ($where != "") {
  797.                     $where .= " AND ";
  798.                 }
  799.                 $where .= "x.valideManuellement = 1";
  800.             }
  801.             if (array_key_exists('client'$param["parametres"]) and $param["parametres"]["date_fin"] != "") {
  802.                 $param["parametres"]["date_fin"] = \DateTime::createFromFormat('d/m/Y'$param["parametres"]["date_fin"]);
  803.                 $param["parametres"]["date_fin"]->setTime(235959);
  804.                 $parameters["date_fin"] = $param["parametres"]["date_fin"];
  805.                 if ($where != "") {
  806.                     $where .= " AND ";
  807.                 }
  808.                 $where .= "x.date <= :date_fin";
  809.             }
  810.             //statut de commande
  811.             $typeDocumentCommercial TypeDocumentCommercial::COMMANDE;
  812.             $statuts                $em->getRepository(StatutCommande::class)->findBy([
  813.                                                                                             'documentCommercial' => $typeDocumentCommercial,
  814.                                                                                         ], ['ordre' => 'ASC']);
  815.             $statutIds = [];
  816.             foreach ($statuts as $statut) {
  817.                 $key $statut->getLibelleNettoye();
  818.                 if (array_key_exists($key$param["parametres"])) {
  819.                   //  echo "(AA:".$key.")";
  820.                     $cookie = new Cookie($key'on'strtotime('now + 360 days'));
  821.                     $response->headers->setCookie($cookie);
  822.                     $statutIds[] = $statut->getId();
  823.                     //$cookies = $request->cookies;
  824.                     //print_r($cookies);
  825.                 } else {
  826.                     //echo "(BB:".$key.")";
  827.                     $response->headers->clearCookie($key);
  828.                 }
  829.             }
  830.             //echo "(CC)";
  831.             //exit;
  832.             //print_r($statutIds);
  833.             $au_moins_un_statut_cmde false;
  834.             if (count($statutIds) > 0) {
  835.                 $au_moins_un_statut_cmde true;
  836.                 if ($where != "") {
  837.                     $where .= " AND ";
  838.                 }
  839.                 $where                 .= "(x.statutCommande IN (:statuts)";
  840.                 $parameters['statuts'] = $statutIds;
  841.             }
  842.             //statut de BP
  843.             $typeDocumentCommercial TypeDocumentCommercial::BP;
  844.             $statuts                $em->getRepository(StatutCommande::class)->findBy([
  845.                                                                                             'documentCommercial' => $typeDocumentCommercial,
  846.                                                                                         ], ['ordre' => 'ASC']);
  847.             $statutIds              = [];
  848.             foreach ($statuts as $statut) {
  849.                 $key $statut->getLibelleNettoye();
  850.                 if (array_key_exists($key$param["parametres"])) {
  851.                     $cookie = new Cookie($key'on'strtotime('now + 360 days'));
  852.                     $response->headers->setCookie($cookie);
  853.                     $statutIds[] = $statut->getId();
  854.                 } else {
  855.                     $response->headers->clearCookie($key);
  856.                 }
  857.             }
  858.             //print_r($statutIds);
  859.             if (count($statutIds) > and 1!=1) {
  860.                 $datatable->addJoin('x.bps''bp'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  861.                 $datatable->setGroupBy('x.id');
  862.                 if ($where != "" && $au_moins_un_statut_cmde) {
  863.                     $where .= " OR ";
  864.                 } elseif ($where != "") {
  865.                     $where .= " AND ";
  866.                 }
  867.                 $where                   .= "bp.statutCommande IN (:statutsBP)";
  868.                 $parameters['statutsBP'] = $statutIds;
  869.             }
  870.             if ($au_moins_un_statut_cmde) {
  871.                 $where .= ")";
  872.             }
  873. //            $response->send();
  874.             $response->sendHeaders();
  875.             /*
  876.                         if(array_key_exists('statut', $param["parametres"]) and $param["parametres"]["statut"] != "") {
  877.                            if ($param["parametres"]["statut"] == 28){
  878.                                $parameters["statutCommande"]=7;
  879.                                if($where != "") $where .= " AND ";
  880.                 $where .= "x.statutCommande != :statutCommande";
  881.                            }else{
  882.                 $parameters["statutCommande"]=$param["parametres"]["statut"];
  883.                 if($where != "") $where .= " AND ";
  884.                 $where .= "x.statutCommande = :statutCommande";
  885.                            }
  886.             }
  887.             */
  888.         } else {
  889.             /*
  890.                     $parameters["statutCommande"]=7;
  891.                                if($where != "") $where .= " AND ";
  892.                 $where .= "x.statutCommande != :statutCommande";
  893.                      *
  894.                      */
  895.         }
  896.         //echo $where;
  897.         //exit;
  898.         if ($where != '') {
  899.             //echo $where;
  900.             //print_r($parameters);
  901.             $datatable->setWhere($where$parameters);
  902.             $qb $datatable->getQueryBuilder()->getDoctrineQueryBuilder();
  903. //            print_r($qb->getQuery()->getSql());
  904.         }
  905.         return $datatable;
  906.     }
  907.     /**
  908.      * @Route("/vente/commande/grid", name="dtc_commande_liste_grid")
  909.      */
  910.     public function gridAction(Request $requestEntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  911.     {
  912.         return $this->datatable($request$em$datatable$translator)->execute();
  913.     }
  914.     /**
  915.      * @Route("/export/xls/fournisseur/{id}", name="dtc_export_fournisseur_xls")
  916.      */
  917.     public function excelExportCommandeFournisseurAction(Request $requestCommandeFournisseur $commandeArticleService $articleService
  918.     ) {
  919.         $spreadsheet = new Spreadsheet();
  920.         $boucle 1;
  921.         if (is_object($commande->getFournisseur())) {
  922.             $spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle'Fournisseur');
  923.             $spreadsheet->setActiveSheetIndex(0)->setCellValue('B'.$boucle$commande->getFournisseur()->getReference().' : '.$commande->getFournisseur()->getLibelle());
  924.             $boucle++;
  925.             $boucle++;
  926.         }
  927.         $spreadsheet->setActiveSheetIndex(0)
  928.             ->setCellValue('A'.$boucle'Ref')
  929.             ->setCellValue('B'.$boucle'Ref fournisseur')
  930.             ->setCellValue('C'.$boucle'Libellé')
  931.             ->setCellValue('D'.$boucle'Libellé fournisseur')
  932.             ->setCellValue('E'.$boucle'Qté mini')
  933.             ->setCellValue('F'.$boucle'Qté maxi')
  934.             ->setCellValue('G'.$boucle'RAL Client')
  935.             ->setCellValue('H'.$boucle'RAL fournisseur')
  936.             ->setCellValue('I'.$boucle'Qté stock cmdée')
  937.             ->setCellValue('J'.$boucle'Qté')
  938.             ->setCellValue('K'.$boucle'Unité achat')
  939.             ->setCellValue('L'.$boucle'Prix achat U ')
  940.             ->setCellValue('M'.$boucle'Prix HT')
  941.             ->setCellValue('N'.$boucle'CC')
  942.             ->setCellValue('O'.$boucle'Qté mini achat')
  943.             ->setCellValue('P'.$boucle'Condit')
  944.             ->setCellValue('Q'.$boucle'Tx remise')
  945.             ->setCellValue('R'.$boucle'Tx remise supp')
  946.             ->setCellValue('S'.$boucle'Fraix annexes')
  947.             ->setCellValue('T'.$boucle'Montant HT')
  948.             ->setCellValue('U'.$boucle'Total HT')
  949.             ->setCellValue('V'.$boucle'CUMP')
  950.             ->setCellValue('W'.$boucle'Stock');
  951.         $boucle++;
  952.         $poidsTotal 0;
  953.         $nbProduits 0;
  954.         if ($commande->getAvecTaxe()) {
  955.             $total_ttc $commande->getTotalTtc();
  956.         } else {
  957.             $total_ttc $commande->getTotal() + $commande->getTotalFraisPort();
  958.         }
  959.         foreach ($commande->getArticleCommande() as $ac) {
  960.             //echo "<div>RRR ". $ac->geId()."</div>";
  961.             $montantHT $articleService->getPrixEncours($ac->getArticle(), $ac'');
  962.             $poidsTotal += $ac->getArticle()->getPoids() * $ac->getQuantite();
  963.             $nbProduits += $ac->getQuantite();
  964.             $remiseInit "";
  965.             if (is_object($ac->getRemiseInitial())) {
  966.                 $remiseInit $ac->getRemiseInitial()->getMontant();
  967.             }
  968.             $pump $ac->getArticle()->getCpump() * $ac->getCommandeFournisseur()->getTauxChange();
  969.             if (is_object($ac->getConditionAchat())) {
  970.                 $qsc               $ac->getQuantite() * $ac->getConditionAchat()->getConditionnement();
  971.                 $prixAchatUnitaire $ac->getPrixBase() / $ac->getConditionAchat()->getCoefficientConditionnement();
  972.                 $cc                $ac->getConditionAchat()->getCoefficientConditionnement();
  973.                 $qteminiachat      $ac->getConditionAchat()->getQuantite();
  974.                 $condit            $ac->getConditionAchat()->getConditionnement();
  975.                 $refFournisseur    $ac->getConditionAchat()->getReferenceFournisseur();
  976.             } else {
  977.                 $qsc               $ac->getQuantite();
  978.                 $prixAchatUnitaire $ac->getPrixBase();
  979.                 $cc                1;
  980.                 $qteminiachat      1;
  981.                 $condit            1;
  982.             }
  983.             $prixFinal    $ac->getTotalHtV2() / $ac->getQuantite();
  984.             $totalHtFinal $prixFinal $ac->getQuantite();
  985.             $libelle trim($ac->getLibelle())."\n".trim($ac->getLibelleSecondaire());
  986.             $spreadsheet->setActiveSheetIndex(0)
  987.                 ->setCellValue('A'.$boucle$ac->getArticle()->getReference())
  988.                 ->setCellValue('B'.$boucle$refFournisseur)
  989.                 ->setCellValue('C'.$boucle$libelle)
  990.                 ->setCellValue('D'.$boucle$ac->getLibelle())
  991.                 ->setCellValue('E'.$boucle$ac->getArticle()->getSeuilMiniCommandeFournisseur())
  992.                 ->setCellValue('F'.$boucle$ac->getArticle()->getSeuilMaxiCommandeFournisseur())
  993.                 ->setCellValue('G'.$boucle$ac->getArticle()->getStockReserve())
  994.                 ->setCellValue('H'.$boucle$ac->getArticle()->getRalFournisseur())
  995.                 ->setCellValue('I'.$boucle$qsc)
  996.                 ->setCellValue('J'.$boucle$ac->getQuantite())
  997.                 ->setCellValue('K'.$boucle$ac->getArticle()->getUniteMesure())
  998.                 ->setCellValue('L'.$boucle$prixAchatUnitaire)
  999.                 ->setCellValue('M'.$boucle$totalHtFinal)
  1000.                 ->setCellValue('N'.$boucle$cc)
  1001.                 ->setCellValue('O'.$boucle$qteminiachat)
  1002.                 ->setCellValue('P'.$boucle$condit)
  1003.                 ->setCellValue('Q'.$boucle$ac->getRemise())
  1004.                 ->setCellValue('R'.$boucle$ac->getRemiseSupplementaire())
  1005.                 ->setCellValue('S'.$boucle$ac->getFraisAnnexes())
  1006.                 ->setCellValue('T'.$boucle$montantHT['prix'])
  1007.                 ->setCellValue('U'.$boucle$ac->getTotalHT())
  1008.                 ->setCellValue('V'.$boucle$pump)
  1009.                 ->setCellValue('W'.$boucle$ac->getArticle()->getStock());
  1010.             //$spreadsheet->getActiveSheet()->getStyle('B'.$boucle)->getAlignment()->setWrapText(true);
  1011.             $boucle++;
  1012.         }
  1013.         $boucle++;
  1014.         $spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle'Poids total');
  1015.         $spreadsheet->setActiveSheetIndex(0)->setCellValue('B'.$boucle$poidsTotal);
  1016.         $spreadsheet->setActiveSheetIndex(0)->setCellValue('G'.$boucle'Total HT');
  1017.         $spreadsheet->setActiveSheetIndex(0)->setCellValue('H'.$boucle$commande->getTotal());
  1018.         $boucle++;
  1019.         $spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle'Nombre de produits');
  1020.         $spreadsheet->setActiveSheetIndex(0)->setCellValue('B'.$boucle$nbProduits);
  1021.         $spreadsheet->setActiveSheetIndex(0)->setCellValue('G'.$boucle'Total TTC');
  1022.         $spreadsheet->setActiveSheetIndex(0)->setCellValue('H'.$boucle$total_ttc);
  1023.         $boucle++;
  1024.         // Create your Office 2007 Excel (XLSX Format)
  1025.         $writer = new Xlsx($spreadsheet);
  1026.         // Create a Temporary file in the system
  1027.         $fileName $commande->getReference().'.xlsx';
  1028.         $temp_file tempnam(sys_get_temp_dir(), $fileName);
  1029.         // Create the excel file in the tmp directory of the system
  1030.         $writer->save($temp_file);
  1031.         // Return the excel file as an attachment
  1032.         return $this->file($temp_file$fileNameResponseHeaderBag::DISPOSITION_INLINE);
  1033.     }
  1034.     /**
  1035.      * @Route("/export/xls/{id}", name="dtc_export_xls")
  1036.      */
  1037.     public function excelExportAction(Request $requestCommande $commandeTaxeService $taxeServiceArticleService $articleService)
  1038.     {
  1039.         $spreadsheet = new Spreadsheet();
  1040.         //$spreadsheet->getProperties()->setCreator("ERP DTC");
  1041.         //->setLastModifiedBy("Giulio De Donato")
  1042.         //->setTitle("Office 2005 XLSX Test Document")
  1043.         //->setSubject("Office 2005 XLSX Test Document")
  1044.         //->setDescription("Test document for Office 2005 XLSX, generated using PHP classes.")
  1045.         //->setKeywords("office 2005 openxml php")
  1046.         //->setCategory("Test result file");
  1047.         $boucle 1;
  1048.         if (is_object($commande->getClient())) {
  1049.             $spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle'Client');
  1050.             $spreadsheet->setActiveSheetIndex(0)->setCellValue(
  1051.                 'B'.$boucle,
  1052.                 $commande->getClient()->getReference().' : '.$commande->getClient()->getPrenom().' '.$commande->getClient()->getNom()
  1053.             );
  1054.             $boucle++;
  1055.             $boucle++;
  1056.         }
  1057.         $spreadsheet->setActiveSheetIndex(0)
  1058.             ->setCellValue('A'.$boucle'Ref')
  1059.             ->setCellValue('B'.$boucle'Libellé')
  1060.             ->setCellValue('C'.$boucle'Qtité')
  1061.             ->setCellValue('D'.$boucle'Prix HT')
  1062.             ->setCellValue('E'.$boucle'Remise')
  1063.             ->setCellValue('F'.$boucle'Remise suppl')
  1064.             ->setCellValue('G'.$boucle'Montant HT')
  1065.             ->setCellValue('H'.$boucle'Total HT');
  1066.         $boucle++;
  1067.         $poidsTotal 0;
  1068.         $nbProduits 0;
  1069.         if ($commande->getAvecTaxe()) {
  1070.             $total_ttc $commande->getTotalTtc();
  1071.         } else {
  1072.             $total_ttc $commande->getTotal() + $commande->getTotalFraisPort();
  1073.         }
  1074.         foreach ($commande->getArticleCommande() as $ac) {
  1075.             //echo "<div>RRR ". $ac->geId()."</div>";
  1076.             $poidsTotal += $ac->getArticle()->getPoids() * $ac->getQuantite();
  1077.             $nbProduits += $ac->getQuantite();
  1078.             $remiseInit "";
  1079.             if (is_object($ac->getRemiseInitial())) {
  1080.                 $remiseInit $ac->getRemiseInitial()->getMontant();
  1081.             }
  1082.             $prixFinal    $ac->getTotalHtV2() / $ac->getQuantite();
  1083.             $totalHtFinal $prixFinal $ac->getQuantite();
  1084.             $libelle trim($ac->getLibelle())."\n".trim($ac->getLibelleSecondaire());
  1085.             if ($ac->getArticle()->getDivers() == 1) {
  1086.                 $spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle$ac->getArticle()->getReferenceClient());
  1087.             } else {
  1088.                 $spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle$ac->getArticle()->getReference());
  1089.             }
  1090.             $spreadsheet->setActiveSheetIndex(0)
  1091.                 ->setCellValue('B'.$boucle$libelle)
  1092.                 ->setCellValue('C'.$boucle$ac->getQuantite())
  1093.                 ->setCellValue('D'.$boucle$ac->getPrixBase())
  1094.                 ->setCellValue('E'.$boucle$ac->getRemise())
  1095.                 ->setCellValue('F'.$boucle$ac->getRemiseSupplementaire())
  1096.                 ->setCellValue('G'.$boucle$prixFinal)
  1097.                 ->setCellValue('H'.$boucle$totalHtFinal);
  1098.             //$spreadsheet->getActiveSheet()->getStyle('B'.$boucle)->getAlignment()->setWrapText(true);
  1099.             $boucle++;
  1100.         }
  1101.         $boucle++;
  1102.         $spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle'Poids total');
  1103.         $spreadsheet->setActiveSheetIndex(0)->setCellValue('B'.$boucle$poidsTotal);
  1104.         $spreadsheet->setActiveSheetIndex(0)->setCellValue('G'.$boucle'Total HT');
  1105.         $spreadsheet->setActiveSheetIndex(0)->setCellValue('H'.$boucle$commande->getTotal());
  1106.         $boucle++;
  1107.         $spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle'Nombre de produits');
  1108.         $spreadsheet->setActiveSheetIndex(0)->setCellValue('B'.$boucle$nbProduits);
  1109.         $listeTaxes $taxeService->listerTaxe();
  1110.         $avecTaxe   $taxeService->recolterTva($commande);
  1111.         foreach ($listeTaxes as $t) {
  1112.             $totalTva $articleService->getTotalTvaCommandeParTaux($commande$t->getTaux());
  1113.             if ($totalTva <= or $avecTaxe == false) {
  1114.             } else {
  1115.                 $spreadsheet->setActiveSheetIndex(0)->setCellValue('G'.$boucle'TVA '.$t->getTaux().'%');
  1116.                 $spreadsheet->setActiveSheetIndex(0)->setCellValue('H'.$boucle$totalTva);
  1117.                 $boucle++;
  1118.             }
  1119.         }
  1120.         if (is_object($commande->getTransporteur())) {
  1121.             $spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle'Transporteur');
  1122.             $spreadsheet->setActiveSheetIndex(0)->setCellValue('B'.$boucle$commande->getTransporteur()->getReference().' '.$commande->getTransporteur()->getLibelle());
  1123.         }
  1124.         if ($commande->getTotalFraisPort() > 0) {
  1125.             $spreadsheet->setActiveSheetIndex(0)->setCellValue('G'.$boucle'Frais de port HT');
  1126.             $spreadsheet->setActiveSheetIndex(0)->setCellValue('H'.$boucle$commande->getTotalFraisPort());
  1127.             $boucle++;
  1128.         }
  1129.         if ($commande->getFraisPortSupplementaire() > 0) {
  1130.             $spreadsheet->setActiveSheetIndex(0)->setCellValue('G'.$boucle'Frais de port supplémentaire HT');
  1131.             $spreadsheet->setActiveSheetIndex(0)->setCellValue('H'.$boucle$commande->getFraisPortSupplementaire());
  1132.             $boucle++;
  1133.         }
  1134.         if ($commande->getTotalFraisPort() > or $commande->getFraisPortSupplementaire() > 0) {
  1135.             $spreadsheet->setActiveSheetIndex(0)->setCellValue('G'.$boucle'TVA Frais de port');
  1136.             $spreadsheet->setActiveSheetIndex(0)->setCellValue('H'.$boucle$commande->getTotalTvaFraisPort());
  1137.             $boucle++;
  1138.         }
  1139.         $spreadsheet->setActiveSheetIndex(0)->setCellValue('G'.$boucle'Total TTC');
  1140.         $spreadsheet->setActiveSheetIndex(0)->setCellValue('H'.$boucle$total_ttc);
  1141.         $boucle++;
  1142.         // Create your Office 2007 Excel (XLSX Format)
  1143.         $writer = new Xlsx($spreadsheet);
  1144.         // Create a Temporary file in the system
  1145.         $fileName $commande->getReference().'.xlsx';
  1146.         $temp_file tempnam(sys_get_temp_dir(), $fileName);
  1147.         // Create the excel file in the tmp directory of the system
  1148.         $writer->save($temp_file);
  1149.         // Return the excel file as an attachment
  1150.         return $this->file($temp_file$fileNameResponseHeaderBag::DISPOSITION_INLINE);
  1151.     }
  1152.     /**
  1153.      * @Route("/export/{id}/zip", name="export__export_zip")
  1154.      */
  1155.     public function zipExportAction(Commande $commandeRequest $requestCommandeService $serviceCommandeEntityManagerInterface $em)
  1156.     {
  1157.         $retour $serviceCommande->createZipFile($commande);
  1158.         return $this->file($retour['zipFilePath'], $retour['fileName'], ResponseHeaderBag::DISPOSITION_INLINE);
  1159.         $zip = new \ZipArchive();
  1160.         $dir '/uploads/ged/'.$commande->getDate()->format('Y/m/d/');
  1161.         $dir $serviceFO->createDirectoryPublic($dir);
  1162.         $fileName 'export_'.$commande->getReferenceClient().'.zip';
  1163.         $zipFilePath $dir.$fileName;
  1164.         // Ouvrir le fichier ZIP existant
  1165.         if ($zip->open($zipFilePath\ZipArchive::CREATE \ZipArchive::OVERWRITE) === TRUE) {
  1166.             $files = [
  1167.                 $this->exportXls1Action($commandetrue$serviceFO),
  1168.                 $this->exportXls2Action($commandetrue$serviceFO),
  1169.                 $this->exportXls3Action($commandetrue$serviceFO),
  1170.             ];
  1171.             foreach($files as $fileToAdd) {
  1172.                 if (file_exists($fileToAdd['path'])) {
  1173.                     $zip->addFile($fileToAdd['path'], $fileToAdd['filename']);
  1174.                 }
  1175.             }
  1176.             $zip->close();
  1177.             $repo_fichier $em->getRepository(Fichier::class);
  1178.             $parent $repo_fichier->findOneBy(["commande"=>$commande,"libelle"=>'Export']);
  1179.             if(!is_object($parent)) {
  1180.                 $dossierCmd $repo_fichier->findOneBy(["commande"=>$commande,"libelle"=>$commande->getReference()]);
  1181.                 $parent = new Fichier();
  1182.                 //$enfant2->setUtilisateur($user);
  1183.                 $parent->setType("dossier");
  1184.                 $parent->setRenomme(true);
  1185.                 $parent->setSupprimable(false);
  1186.                 $parent->setModifiable(false);
  1187.                 $parent->setCommande($commande);
  1188.                 if(is_object($dossierCmd)) $parent->setParent($dossierCmd);
  1189.                 $parent->setLibelle("Export");
  1190.                 $em->persist($parent);
  1191.                 //$em->flush();
  1192.             }
  1193.             $retourEnregistrerFichierGed $serviceFO->enregistrerFichierGed($fileName$commande->getDate(), '', [], 'zip'$parenttrue);
  1194.             return $this->file($zipFilePath$fileNameResponseHeaderBag::DISPOSITION_INLINE);
  1195.             //echo "Les fichiers ont été ajoutés avec succès au fichier ZIP.";
  1196.         } else {
  1197.             //echo "Échec de l'ouverture du fichier ZIP.";
  1198.             $this->addFlash('warning'"Échec de l'ouverture du fichier ZIP.");
  1199.             return $this->redirectToRoute('dtc_commande_modifier', ['id' => $commande->getId()]);
  1200.         }
  1201.     }
  1202.     /**
  1203.      * @Route("/export/{id}/xls-1", name="export__export_xls_1")
  1204.      */
  1205.     public function exportXls1Action(Commande $commande$save falseFOService $serviceFO)
  1206.     {
  1207.         $dir '/uploads/ged/'.$commande->getDate()->format('Y/m/d/');
  1208.         $dir $serviceFO->createDirectoryPublic($dir);
  1209.         $spreadsheet = new Spreadsheet();
  1210.         //$spreadsheet->getProperties()->setCreator("ERP DTC");
  1211.         //->setLastModifiedBy("Giulio De Donato")
  1212.         //->setTitle("Office 2005 XLSX Test Document")
  1213.         //->setSubject("Office 2005 XLSX Test Document")
  1214.         //->setDescription("Test document for Office 2005 XLSX, generated using PHP classes.")
  1215.         //->setKeywords("office 2005 openxml php")
  1216.         //->setCategory("Test result file");
  1217.         $boucle 1;
  1218.         $spreadsheet->setActiveSheetIndex(0);
  1219.         $sheet $spreadsheet->getActiveSheet();
  1220.         $row 1;
  1221.         $colonnes = [
  1222.             'magasin' => 'Nom du magasin',
  1223.             'description' => 'Nom du support',
  1224.             'reference' => 'IDCOM2U',
  1225.             'largeur' => 'Largeur',
  1226.             'hauteur' => 'Longueur',
  1227.             'quantite' => 'Quantité',
  1228.             'matiere' => 'Matière',
  1229.             'recto/verso' => 'Recto/Verso',
  1230.             'rainage' => 'Rainage',
  1231.             'collage' => 'Collage',
  1232.             'plastification' => 'Plastification',
  1233.             'couture' => 'Couture',
  1234.             'piqure' => 'Piqure',
  1235.             'pliage' => 'Pliage',
  1236.             'decoupe' => 'Découpe',
  1237.             'accessoire' => 'Accessoire',
  1238.             'totalHt' => 'PRIX TOTAL',
  1239.             'destinatiare_nom' => 'Destinataire nom',
  1240.             'donneur_ordre_nom' => 'Donneur d\'ordre nom',
  1241.             'date_reception_souhaitee' => 'Date reception souhaitee'
  1242.         ];
  1243.         $letters range('A''Z');
  1244.         $colonneIndex 0;
  1245.         foreach($colonnes as $k => $colonne){
  1246.             $sheet->setCellValue($letters[$colonneIndex].$row$colonne);
  1247.             $colonneIndex++;
  1248.         }
  1249.         $donneesImportees $commande->getDonneesImportees();
  1250.         if(array_key_exists('lignes_commande'$donneesImportees) && count($donneesImportees['lignes_commande'])){
  1251.             foreach($donneesImportees['lignes_commande'] as $ligne){
  1252.                 $row++;
  1253.                 $colonneIndex 0;
  1254.                 foreach($colonnes as $k => $colonne){
  1255.                     if(array_key_exists($k$ligne)){
  1256.                         $sheet->setCellValue($letters[$colonneIndex].$row$ligne[$k]);
  1257.                     }
  1258.                     $colonneIndex++;
  1259.                 }
  1260.             }
  1261.         }
  1262.         // Create your Office 2007 Excel (XLSX Format)
  1263.         $writer = new Xlsx($spreadsheet);
  1264.         if($save){
  1265.             $filename 'export_'.$commande->getReferenceClient().'_1.xlsx';
  1266.             $temp_file $dir.$filename;
  1267.             $writer->save($temp_file);
  1268.             return ['path' => $temp_file'filename' => $filename];
  1269.         } else {
  1270.             // Create a Temporary file in the system
  1271.             $fileName $commande->getReference().'_1.xlsx';
  1272.             $temp_file tempnam(sys_get_temp_dir(), $fileName);
  1273.             // Create the excel file in the tmp directory of the system
  1274.             $writer->save($temp_file);
  1275.             // Return the excel file as an attachment
  1276.             return $this->file($temp_file$fileNameResponseHeaderBag::DISPOSITION_INLINE);
  1277.         }
  1278.     }
  1279.     /**
  1280.      * @Route("/export/{id}/xls-2", name="export__export_xls_2")
  1281.      */
  1282.     public function exportXls2Action(Commande $commande$save falseFOService $serviceFO)
  1283.     {
  1284.         $refClient '';
  1285.         if(is_object($commande->getClient())) $refClient $commande->getClient()->getReference();
  1286.         $dir '/uploads/ged/'.$commande->getDate()->format('Y/m/d/');
  1287.         $dir $serviceFO->createDirectoryPublic($dir);
  1288.         $spreadsheet = new Spreadsheet();
  1289.         //$spreadsheet->getProperties()->setCreator("ERP DTC");
  1290.         //->setLastModifiedBy("Giulio De Donato")
  1291.         //->setTitle("Office 2005 XLSX Test Document")
  1292.         //->setSubject("Office 2005 XLSX Test Document")
  1293.         //->setDescription("Test document for Office 2005 XLSX, generated using PHP classes.")
  1294.         //->setKeywords("office 2005 openxml php")
  1295.         //->setCategory("Test result file");
  1296.         $boucle 1;
  1297.         $spreadsheet->setActiveSheetIndex(0);
  1298.         $sheet $spreadsheet->getActiveSheet();
  1299.         $row 1;
  1300.         $sheet->setCellValue('A1''Commentaires');
  1301.         $row++;
  1302.         $colonnes = ['referenceClient'=>'N° client''reference'=>'Standard''largeur'=>'largeur''hauteur'=>'hauteur''quantite'=>'Quantité','description'=>'Description''pdf_id'=>'ID PDF''matiere' => 'Nom de la matière'];
  1303.         $letters range('A''Z');
  1304.         $colonneIndex 0;
  1305.         foreach($colonnes as $k => $colonne){
  1306.             $sheet->setCellValue($letters[$colonneIndex].$row$colonne);
  1307.             $colonneIndex++;
  1308.         }
  1309.         $donneesImportees $commande->getDonneesImportees();
  1310.         if(array_key_exists('lignes_commande'$donneesImportees) && count($donneesImportees['lignes_commande'])){
  1311.             foreach($donneesImportees['lignes_commande'] as $ligne){
  1312.                 $row++;
  1313.                 $colonneIndex 0;
  1314.                 foreach($colonnes as $k => $colonne){
  1315.                     if(array_key_exists($k$ligne)){
  1316.                         $sheet->setCellValue($letters[$colonneIndex].$row$ligne[$k]);
  1317.                     }
  1318.                     $colonneIndex++;
  1319.                 }
  1320.                 $sheet->setCellValue('A'.$row$refClient);
  1321.             }
  1322.         }
  1323.         // Create your Office 2007 Excel (XLSX Format)
  1324.         $writer = new Xlsx($spreadsheet);
  1325.         if($save){
  1326.             $filename 'export_'.$commande->getReferenceClient().'_2.xlsx';
  1327.             $temp_file $dir.$filename;
  1328.             $writer->save($temp_file);
  1329.             return ['path' => $temp_file'filename' => $filename];
  1330.         } else {
  1331.             // Create a Temporary file in the system
  1332.             $fileName $commande->getReference().'_2.xlsx';
  1333.             $temp_file tempnam(sys_get_temp_dir(), $fileName);
  1334.             // Create the excel file in the tmp directory of the system
  1335.             $writer->save($temp_file);
  1336.             // Return the excel file as an attachment
  1337.             return $this->file($temp_file$fileNameResponseHeaderBag::DISPOSITION_INLINE);
  1338.         }
  1339.     }
  1340.     /**
  1341.      * @Route("/export/{id}/xls-2", name="export__export_xls_2")
  1342.      */
  1343.     public function exportXls3Action(Commande $commande$save falseFOService $serviceFO)
  1344.     {
  1345.         $refClient '';
  1346.         if(is_object($commande->getClient())) $refClient $commande->getClient()->getReference();
  1347.         $dir '/uploads/ged/'.$commande->getDate()->format('Y/m/d/');
  1348.         $dir $serviceFO->createDirectoryPublic($dir);
  1349.         $spreadsheet = new Spreadsheet();
  1350.         //$spreadsheet->getProperties()->setCreator("ERP DTC");
  1351.         //->setLastModifiedBy("Giulio De Donato")
  1352.         //->setTitle("Office 2005 XLSX Test Document")
  1353.         //->setSubject("Office 2005 XLSX Test Document")
  1354.         //->setDescription("Test document for Office 2005 XLSX, generated using PHP classes.")
  1355.         //->setKeywords("office 2005 openxml php")
  1356.         //->setCategory("Test result file");
  1357.         $boucle 1;
  1358.         $spreadsheet->setActiveSheetIndex(0);
  1359.         $sheet $spreadsheet->getActiveSheet();
  1360.         $row 1;
  1361.         $sheet->setCellValue('A1''Commentaires');
  1362.         $row++;
  1363.         $colonnes = ['referenceClient'=>'N° client''reference'=>'Standard''largeur'=>'largeur''hauteur'=>'hauteur''quantite'=>'Quantité','description'=>'Description''pdf_id'=>'ID PDF''matiere' => 'Nom de la matière'];
  1364.         $letters range('A''Z');
  1365.         $colonneIndex 0;
  1366.         foreach($colonnes as $k => $colonne){
  1367.             $sheet->setCellValue($letters[$colonneIndex].$row$colonne);
  1368.             $colonneIndex++;
  1369.         }
  1370.         $donneesImportees $commande->getDonneesImportees();
  1371.         if(array_key_exists('lignes_commande'$donneesImportees) && count($donneesImportees['lignes_commande'])){
  1372.             $lines = [];
  1373.             foreach($donneesImportees['lignes_commande'] as $ligne){
  1374.                 $keyRegroupement $ligne['reference'];
  1375.                 if(array_key_exists($keyRegroupement$lines)){
  1376.                     $lines[$keyRegroupement]['quantite'] += $ligne['quantite'];
  1377.                 } else {
  1378.                     $lines[$keyRegroupement] = $ligne;
  1379.                 }
  1380.             }
  1381.             foreach($lines as $ligne){
  1382.                 $row++;
  1383.                 $colonneIndex 0;
  1384.                 foreach($colonnes as $k => $colonne){
  1385.                     if(array_key_exists($k$ligne)){
  1386.                         $sheet->setCellValue($letters[$colonneIndex].$row$ligne[$k]);
  1387.                     }
  1388.                     $colonneIndex++;
  1389.                 }
  1390.                 $sheet->setCellValue('A'.$row$refClient);
  1391.             }
  1392.         }
  1393.         // Create your Office 2007 Excel (XLSX Format)
  1394.         $writer = new Xlsx($spreadsheet);
  1395.         if($save){
  1396.             $filename 'export_'.$commande->getReferenceClient().'_3.xlsx';
  1397.             $temp_file $dir.$filename;
  1398.             $writer->save($temp_file);
  1399.             return ['path' => $temp_file'filename' => $filename];
  1400.         } else {
  1401.             // Create a Temporary file in the system
  1402.             $fileName $commande->getReference().'_3.xlsx';
  1403.             $temp_file tempnam(sys_get_temp_dir(), $fileName);
  1404.             // Create the excel file in the tmp directory of the system
  1405.             $writer->save($temp_file);
  1406.             // Return the excel file as an attachment
  1407.             return $this->file($temp_file$fileNameResponseHeaderBag::DISPOSITION_INLINE);
  1408.         }
  1409.     }
  1410.     /**
  1411.      * @Route("/vente/commande/pdf/{id}", name="dtc_commande_pdf")
  1412.      */
  1413.     public function pdfCommandeAction(Request $requestCommande $commande$retour trueCommandeService $service)
  1414.     {
  1415.         /*
  1416.         $societe = $em->getRepository('DTCFOBundle:Societe')->find(1);
  1417.         $chemin_pdf = 'PDF/COMMANDES/CMDE-'.$commande->getReference().'.pdf';
  1418.         if(file_exists($chemin_pdf)) unlink($chemin_pdf);
  1419.         $footer = $this->renderView('FO/PDF/footer_pagination_pdf.html.twig', array('societe'  => $societe));
  1420.         $header = $this->renderView('FO/PDF/header_commande_pdf.html.twig', array('societe'  => $societe,'commande'  => $commande));
  1421.         $snappy = $this->get('knp_snappy.pdf');
  1422.         $snappy->setOption('header-html',$header);
  1423.         $snappy->setOption('footer-html',$footer);
  1424.         $snappy->setOption('margin-bottom',"10");
  1425.         $snappy->generateFromHtml(
  1426.             $this->renderView(
  1427.                 'GestionComerciale/Commande/template_pdf.html.twig',
  1428.                 array(
  1429.                     'commande'  => $commande,
  1430.                     'societe'  => $societe
  1431.                 )
  1432.             ),
  1433.             $chemin_pdf
  1434.         );
  1435.                  *
  1436.                  */
  1437.         $versionClient $request->query->get('client');
  1438.         $retour     $service->pdf($commande, [], $versionClient);
  1439.         $chemin_pdf $retour['chemin'];
  1440.         if ($retour == true) {
  1441.             return $this->render('FO/PDF/conteneur_pdf.html.twig', [
  1442.                 'objet'      => $commande,
  1443.                 'chemin_pdf' => '/'.$chemin_pdf,
  1444.                 'visualiser' => 'visualiser',
  1445.             ]);
  1446.         }
  1447.     }
  1448.     /**
  1449.      * @Route("/vente/commande-reliquats/pdf/{id}", name="dtc_commande_reliquats_pdf")
  1450.      */
  1451.     public function pdfCommandeReliquatsAction(Request $requestCommande $commandeEntityManagerInterface $emPdf $snappy)
  1452.     {
  1453.         $societe    $em->getRepository(Societe::class)->find(1);
  1454.         $chemin_pdf 'PDF/COMMANDES/CMDE-reliquats-'.$commande->getReference().'.pdf';
  1455.         if (file_exists($chemin_pdf)) {
  1456.             unlink($chemin_pdf);
  1457.         }
  1458.         $footer $this->renderView('FO/PDF/footer_pagination_pdf.html.twig', ['societe' => $societe]);
  1459.         $header $this->renderView('FO/PDF/header_commande_pdf.html.twig', ['societe' => $societe'commande' => $commande]);
  1460.         $snappy->setOption('header-html'$header);
  1461.         $snappy->setOption('footer-html'$footer);
  1462.         $snappy->setOption('margin-bottom'"10");
  1463.         $snappy->generateFromHtml(
  1464.             $this->renderView(
  1465.                 'GestionComerciale/Commande/template-reliquats-pdf.html.twig',
  1466.                 [
  1467.                     'commande' => $commande,
  1468.                     'societe'  => $societe,
  1469.                 ]
  1470.             ),
  1471.             $chemin_pdf
  1472.         );
  1473.         return $this->render('FO/PDF/conteneur_pdf.html.twig', [
  1474.             'objet'      => $commande,
  1475.             'chemin_pdf' => '/'.$chemin_pdf,
  1476.             'visualiser' => 'visualiser',
  1477.         ]);
  1478.     }
  1479.     /**
  1480.      * @Route("", name="")
  1481.      */
  1482.     public function imprimerMultipleAction(Request $requestEntityManagerInterface $em)
  1483.     {
  1484.         $data       $request->get('dataTables');
  1485.         $ids        $data['actions'];
  1486.         $tableauPdf = [];
  1487.         $date_Y     date("Y");
  1488.         $date_M     date("m");
  1489.         $date_D     date("d");
  1490.         $date       $date_Y.'/'.$date_M.'/'.$date_D;
  1491.         $pdfRelier  'PDF/COMMANDES/'.$date '/CMDE-'.date('d-m-Y').'.pdf';
  1492.         //$ids = array("118","101","93");
  1493.         for ($i 0$i count($ids); $i++) {
  1494.             $repo $em->getRepository(Commande::class);
  1495.             $bon  $repo->find($ids[$i]);
  1496.             if (is_object($bon)) {
  1497.                 $this->pdfBonPreparationAction($bonfalse);
  1498.                 $tableauPdf[] = $chemin_pdf 'PDF/COMMANDES/CMDE-'.$bon->getReference().'.pdf';
  1499.             }
  1500.         }
  1501.         $cmd "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$pdfRelier ";
  1502.         foreach ($tableauPdf as $file) {
  1503.             $cmd .= $file." ";
  1504.         }
  1505.         $result shell_exec($cmd);
  1506.         return new JsonResponse(['target' => '_blank''url' => '/'.$pdfRelier'valide' => '1']);
  1507.     }
  1508.     /**
  1509.      * @Route("/test/{id}", name="dtc_test")
  1510.      */
  1511.     public function testAction(Request $requestEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  1512.     {
  1513.         //echo "<div>".$commande->getId()."</div>";
  1514.         // ask the service for a Excel5
  1515.         /*$repoRemise = $em->getRepository('DTCRemisesBundle:Remise');
  1516.         $repoArticle = $em->getRepository('DTCArticlesBundle:Article');
  1517.         $article = $repoArticle->find(1209622);
  1518.         $a = array();
  1519.         $a['article']=$article;
  1520.         $a['libelle']=$article->getLibelle();
  1521.         $a['libelleSecondaire']=$article->getLibelleSecondaire();
  1522.         $a['commentaire']="";
  1523.         $a['remise']="0";
  1524.         $a['totalHt']=$article->getPrixVente();
  1525.         $a['totalHtV2']=$article->getPrixVente();
  1526.         $repoClient = $em->getRepository('DTCClientsBundle:Client');
  1527.         $client = $repoClient->find(53);
  1528.         $serviceArticle = $this->get('dtc.article');
  1529.         $t = $serviceArticle->getRemiseCategorieClient($a,$client,$montantTotal='0',$prix='100');
  1530.         print_r($t);
  1531.         //{% set donneesRemiseCategorie = dtc_article.getRemiseCategorieClient(a,client,montantTotal,donneesPrix.prix) %}
  1532.         return new Response('<div style="margin-top:30px;">Hello world!</div>');
  1533.         */
  1534.     }
  1535.     /**
  1536.      * @Route("", name="")
  1537.      */
  1538.     public function emailEnvoyerOldAction(Request $requestCommande $commandeTranslatorInterface $translatorEmailService $emailService)
  1539.     {
  1540.         $errors $emailService->envoyerEmail($commande);
  1541.         if ($errors == '') {
  1542.             $this->addFlash(
  1543.                 'notice',
  1544.                 $translator->trans('Email envoyé avec succès !')
  1545.             );
  1546.         } else {
  1547.             $this->addFlash(
  1548.                 'warning',
  1549.                 $errors
  1550.             );
  1551.         }
  1552.         $rendu $this->renderView('layout-errors.html.twig');
  1553.         return new JsonResponse(['rendu' => $rendu'errors' => $errors]);
  1554.     }
  1555.     /**
  1556.      * @Route("/vente/commande/{id}/email/envoyer", name="dtc_commande_email_envoyer")
  1557.      */
  1558.     public function emailEnvoyerAction(Request      $requestCommande $commandeEntityManagerInterface $emTranslatorInterface $translatorCommandeService $service,
  1559.                                        EmailService $emailServiceFileUploader $fileUploader
  1560.     ) {
  1561.         $titre_modal $translator->trans("Nouvel e-mail");
  1562.         $errors      '';
  1563.         if ($request->isMethod('POST')) {
  1564.             $post                $request->request->all();
  1565.             $destinataires_mails = [];
  1566.             $destinataires_mails $request->request->get("destinataires");
  1567.             $avecValidation      false;
  1568.             if (array_key_exists('email_envoi_boolean'$post) && $post["email_envoi_boolean"] == "1") {
  1569.                 $avecValidation             true;
  1570.                 $destinataires_mails        $post["destinataires"];
  1571.                 $destinataires_mails_valide = [];
  1572.                 if (count($destinataires_mails) > 0) {
  1573.                     foreach ($destinataires_mails as $destinataire) {
  1574.                         $tableau_destinataire_explode explode('|||'$destinataire);
  1575.                         if (filter_var($tableau_destinataire_explode[0], FILTER_VALIDATE_EMAIL)) {
  1576.                             $destinataires_mails_valide[] = $tableau_destinataire_explode;
  1577.                         }
  1578.                     }
  1579.                 }
  1580.             } else {
  1581.                 $destinataires_mails_valide = [];
  1582.                 if (count($destinataires_mails) > 0) {
  1583.                     foreach ($destinataires_mails as $destinataire) {
  1584.                         $tableau_destinataire_explode explode('|||'$destinataire);
  1585.                         $destinataires_mails_valide[] = $tableau_destinataire_explode[0];
  1586.                     }
  1587.                 }
  1588.             }
  1589.             $donnees = [
  1590.                 'titre'         => $request->request->get('titre'),
  1591.                 'nomFichier'    => $request->request->get('nomFichier'),
  1592.                 'cheminPDF'     => $request->request->get('cheminPDF'),
  1593.                 'message'       => $request->request->get('message'),
  1594.                 'destinataires' => $destinataires_mails_valide,
  1595.                 'images'        => $request->request->get('images'),
  1596.                 'documents'     => $request->request->get('documents'),
  1597.                 'validation'    => $avecValidation,
  1598.             ];
  1599.             if ($avecValidation) {
  1600.                 $errors $emailService->envoyerEmailDevisValidation($commande$donnees);
  1601.             } else {
  1602.                 $errors $emailService->envoyerEmail($commande$donnees);
  1603.             }
  1604.             if ($errors == '') {
  1605.                 $this->addFlash('notice'$translator->trans('Email(s) envoyé(s) avec succès !'));
  1606.             } else {
  1607.                 $this->addFlash('warning'$errors);
  1608.             }
  1609.             $url $request->request->get('url');
  1610.             return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'errors' => $errors]);
  1611.         } else {
  1612.             $fileUploader->removeFiles(['folder' => 'emails/tmp/'.$commande->getId()]);
  1613.             $retour $service->pdf($commande, [], 'true');
  1614.             $emails = [];
  1615.             //$emails = array($commande->getClient());
  1616.             $emailsPD null;
  1617.             if (is_object($commande->getClient()) && is_object($commande->getClient()->getContacts())) {
  1618.                 if (is_object($commande->getContactLivraison()) && ! empty($commande->getContactLivraison()->getEmail())) {
  1619.                     $emailsPD[] = $commande->getContactLivraison();
  1620.                 }
  1621.                 foreach ($commande->getClient()->getContacts() as $contact) {
  1622.                     if ( ! empty($contact->getEmail())) {
  1623.                         if ($contact->getFacturationExpeditionDefaut() == true && is_int($commande->getTypeDocumentCommercial()) && in_array(
  1624.                                 $commande->getTypeDocumentCommercial(),
  1625.                                 [67]
  1626.                             )) {
  1627.                             //$emailsPD[] = $contact;
  1628.                             $emailsPD = [$contact];
  1629.                         } /*
  1630.                         else if($contact->getDefaut()== true){
  1631.                             $emailsPD[] = $contact;
  1632.                         }
  1633.                         */
  1634.                         else {
  1635.                             if (is_array($emails) && ! in_array($contact$emails) && is_array($emailsPD) && ! in_array($contact$emailsPD)) {
  1636.                                 $emails[] = $contact;
  1637.                             }
  1638.                         }
  1639.                     }
  1640.                 }
  1641.             }
  1642.             /*
  1643.             else {
  1644.                 foreach($commande->getClient()->getContacts() as $contact)
  1645.                     $emails[] = $contact;
  1646.             }
  1647.             */
  1648.             $repoParametrage   $em->getRepository(Parametrage::class);
  1649.             $Parametrage       $repoParametrage->find(1);
  1650.             $texteMailCommande "";
  1651.             $categorieEmail '';
  1652.             if (is_int($commande->getTypeDocumentCommercial())) {
  1653.                 if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::DEVIS) {
  1654.                     $texteMailCommande $Parametrage->getTexteMailDevis();
  1655.                     $categorieEmail    13;
  1656.                 } elseif ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::COMMANDE) {
  1657.                     $texteMailCommande $Parametrage->getTexteMailCommande();
  1658.                     $categorieEmail    14;
  1659.                 } elseif ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::BL) {
  1660.                     $texteMailCommande $Parametrage->getTexteMailBl();
  1661.                     $categorieEmail    15;
  1662.                 } elseif (in_array($commande->getTypeDocumentCommercial(), [TypeDocumentCommercial::FACTURETypeDocumentCommercial::AVOIR])) {
  1663.                     $texteMailCommande $Parametrage->getTexteMailFacture();
  1664.                     $categorieEmail    16;
  1665.                 }
  1666.             }
  1667.             $modelesEmail = [];
  1668.             if ( ! empty($categorieEmail)) {
  1669.                 $categorieEmailObjet $em->getRepository(Categorie::class)->find($categorieEmail);
  1670.                 if (is_object($categorieEmailObjet)) {
  1671.                     $modelesEmail $em->getRepository(Modele::class)->findBy([
  1672.                                                                                   'sousCategorie' => $categorieEmailObjet,
  1673.                                                                                   'statut'        => true,
  1674.                                                                               ]);
  1675.                 }
  1676.             }
  1677.             if (count($modelesEmail) == 0) {
  1678.                 $modelesEmail $em->getRepository(Modele::class)->findBy(['statut' => true]);
  1679.             }
  1680.             $modelesEmailRendu = [];
  1681.             foreach ($modelesEmail as $modeleEmail) {
  1682.                 $sujet                                                                                                                           $service->replaceTag(
  1683.                     $modeleEmail->getSujet(),
  1684.                     ['commande' => $commande]
  1685.                 );
  1686.                 $message                                                                                                                         $service->replaceTag(
  1687.                     $modeleEmail->getMessage(),
  1688.                     ['commande' => $commande]
  1689.                 );
  1690.                 $modelesEmailRendu[$modeleEmail->getSousCategorie()->getCategorieParent()->getId()][$modeleEmail->getSousCategorie()->getId()][] = [
  1691.                     'modeleEmail' => $modeleEmail,
  1692.                     'sujet'       => $sujet,
  1693.                     'message'     => $message,
  1694.                 ];
  1695.             }
  1696.             $rendu $this->renderView('GestionComerciale/Devis/email.html.twig', [
  1697.                 'errors'            => $errors,
  1698.                 'commande'          => $commande,
  1699.                 'nomFichier'        => $retour['nom_fichier'],
  1700.                 'type'              => $retour['type'],
  1701.                 'cheminPDF'         => $retour['chemin'],
  1702.                 'url'               => $retour['url'],
  1703.                 'emails'            => $emails,
  1704.                 'emailsPD'          => $emailsPD,
  1705.                 'texteMailCommande' => $texteMailCommande,
  1706.                 'modelesEmail'      => $modelesEmailRendu,
  1707.             ]);
  1708.             return new JsonResponse(
  1709.                 ['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal"width" => 1000]
  1710.             );
  1711.         }
  1712.     }
  1713.     /**
  1714.      * @Route("/commande/statut/rechercher", name="dtc_statut_recherche")
  1715.      */
  1716.     public function RechercherStatutAction(Request $requestEntityManagerInterface $emPaginatorInterface $paginator)
  1717.     {
  1718.         $q       $request->query->get('q');
  1719.         $repo    $em->getRepository(StatutCommande::class);
  1720.         $results $repo->getRechercheStatut($q);
  1721.         $pagination $paginator->paginate(
  1722.             $results/* query NOT result */
  1723.             $request->query->getInt('page'1)/*page number*/,
  1724.             10/*limit per page*/
  1725.         );
  1726.         $pagination_results $pagination->getItems();
  1727.         $option_placeholde  = ["libelle" => "Sélectionnez""id" => ""];
  1728.         if ($request->query->getInt('page'1) == 1) {
  1729.             array_unshift($pagination_results$option_placeholde);
  1730.         }
  1731.         $pagination->setItems($pagination_results);
  1732.         $serializer SerializerBuilder::create()->build();
  1733.         return JsonResponse::fromJsonString($serializer->serialize($pagination'json'));
  1734.     }
  1735.     /**
  1736.      * @Route("/commande/historique/{commande}", name="dtc_commande_historique")
  1737.      */
  1738.     public function historiqueAction(Request $requestCommande $commandeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  1739.     {
  1740.         $titre_modal $translator->trans("Historique du document");
  1741.         $commandes   = [];
  1742.         if (is_object($commande->getCommande())) {
  1743.             if ($commande->getMultiBl()) {
  1744.                 foreach ($commande->getBls() as $bl) {
  1745.                     $commandes[] = $bl->getCommande()->getId();
  1746.                 }
  1747.             } else {
  1748.                 $commandes[] = $commande->getCommande()->getId();
  1749.             }
  1750.             $commandesTmp $em->getRepository(Commande::class)->findBy([
  1751.                                                                             'commande' => $commandes,
  1752.                                                                         ]);
  1753.             $commandes    array_merge($commandes$commandesTmp);
  1754.         } else {
  1755.             $commandes   $em->getRepository(Commande::class)->findBy([
  1756.                                                                            'commande' => $commande,
  1757.                                                                        ]);
  1758.             $commandes[] = $commande;
  1759.         }
  1760.         $historiques $em->getRepository(HistoriqueCommande::class)->findBy([
  1761.                                                                                  'commande' => $commandes,
  1762.                                                                              ], ['date' => 'DESC''id' => 'DESC']);
  1763.         $rendu $this->renderView('GestionComerciale/Commande/historique.html.twig', [
  1764.             'historiques' => $historiques,
  1765.         ]);
  1766.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal'width' => 900]);
  1767.     }
  1768.     /**
  1769.      * @Route("/vente/commande/change-statut/{id}/{action}", name="dtc_commande_change_statut")
  1770.      */
  1771.     public function changerStatutAction(Request $requestCommande $commande$actionEntityManagerInterface $emCommandeService $commandeService)
  1772.     {
  1773.         $user $this->getUser();
  1774.         if ($user->getType()->getId() != "1") {
  1775.             return new JsonResponse(['data' => '1']);
  1776.         }
  1777.         if ( ! empty($action)) {
  1778.             $donneesHistorique            = [];
  1779.             $donneesHistorique["message"] = "";
  1780.             if ($action == 'adresseValideeManuellement') {
  1781.                 if ($commande->getAdresseValideeManuellement() == 1) {
  1782.                     $commande->setAdresseValideeManuellement(0);
  1783.                     $commandeService->creerHistorique($commande21$donneesHistorique);
  1784.                 } else {
  1785.                     $commande->setAdresseValideeManuellement(1);
  1786.                     $commandeService->creerHistorique($commande20$donneesHistorique);
  1787.                 }
  1788.             } elseif ($action == 'abloquer') {
  1789.                 if ($commande->getABloquer() == 1) {
  1790.                     $commande->setABloquer(0);
  1791.                     $commandeService->creerHistorique($commande19$donneesHistorique);
  1792.                 } else {
  1793.                     $commande->setABloquer(1);
  1794.                     $commandeService->creerHistorique($commande18$donneesHistorique);
  1795.                 }
  1796.             }
  1797.             $em->persist($commande);
  1798.             $em->flush();
  1799.         }
  1800.         $headers = [
  1801.             'Content-Type'                 => 'application/json',
  1802.             'Access-Control-Allow-Origin'  => '*',
  1803.             'Access-Control-Allow-Methods' => 'POST',
  1804.         ];
  1805.         return new JsonResponse(['data' => '1']);
  1806.     }
  1807.     /**
  1808.      * @Route("/vente/commande/accepter-market-place/{id}", name="dtc_commande_accepter_market_place")
  1809.      */
  1810.     public function accepterMarketPlaceAction(Request $requestCommande $commandeEntityManagerInterface $emCommandeService $commandeService)
  1811.     {
  1812.         $user                    $this->getUser();
  1813.         $retour_api              "";
  1814.         $changer_statut_commande false;
  1815.         $url_api                 "";
  1816.         if (is_object($commande->getCompteMarketPlace()) && is_object($commande->getCompteMarketPlace()->getMarketPlace())) {
  1817.             $market_place_id $commande->getCompteMarketPlace()->getMarketPlace()->getId();
  1818.             // Cdiscount
  1819.             if ($market_place_id == 3) {
  1820.                 $domaine $this->getParameter('domaine_cron');
  1821.                 $cle_xml $this->getParameter('cle_xml');
  1822.                 $url_api $domaine."/cdiscount-api/samples/Order/AccepterOrder.php?marketPlace=".$commande->getCompteMarketPlace()->getId()."&cle=".urlencode(
  1823.                         $cle_xml
  1824.                     )."&id=".$commande->getId();
  1825.                 //echo $url_api;
  1826.                 $donneesHistorique = ["message" => ""];
  1827.                 $ch curl_init($url_api);
  1828.                 curl_setopt($chCURLOPT_CUSTOMREQUEST"GET");
  1829.                 curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
  1830.                 $result curl_exec($ch);
  1831.                 curl_close($ch);
  1832.                 $xml_acceptation = @simplexml_load_string($result);
  1833.                 $changer_statut_commande false;
  1834.                 if (isset($xml_acceptation->orders->order)) {
  1835.                     foreach ($xml_acceptation->orders->order as $order) {
  1836.                         $refCmdeMarketPlace = (string)$order->OrderNumber;
  1837.                         if ($refCmdeMarketPlace == $commande->getReferenceMarketPlace()) {
  1838.                             $changer_statut_commande true;
  1839.                         }
  1840.                     }
  1841.                 }
  1842.                 if (isset($xml_acceptation->erreur) and $xml_acceptation->erreur != "") {
  1843.                     $erreur_chaine                = (string)$xml_acceptation->erreur;
  1844.                     $donneesHistorique["message"] .= $erreur_chaine;
  1845.                 }
  1846.                 if ($changer_statut_commande) {
  1847.                     $statut_commande_en_attente_obj $em->getRepository(StatutCommande::class)->find(2);
  1848.                     $commande->setStatutCommande($statut_commande_en_attente_obj);
  1849.                     $donneesHistorique["message"] .= " Changement de statut de la commande : ".$statut_commande_en_attente_obj->getLibelle();
  1850.                     $em->persist($commande);
  1851.                     $em->flush();
  1852.                     $commandeService->creerHistorique($commande15$donneesHistorique);
  1853.                     $retour_api $donneesHistorique["message"];
  1854.                 }
  1855.                 $retour_api $donneesHistorique["message"];
  1856.             } else {
  1857.                 // Conforama
  1858.                 if ($market_place_id == 10) {
  1859.                     $url_api "https://conforama-prod.mirakl.net/api/orders/".$commande->getIdImport()."/accept";
  1860.                 } // Darty
  1861.                 elseif ($market_place_id == 11) {
  1862.                     $url_api "https://drt-prod.mirakl.net/api/orders/".$commande->getIdImport()."/accept";
  1863.                 } // Fnac
  1864.                 elseif ($market_place_id == 12) {
  1865.                     $url_api "https://fnac-prod.mirakl.net/api/orders/".$commande->getIdImport()."/accept";
  1866.                 } // But
  1867.                 elseif ($market_place_id == 13) {
  1868.                     $url_api "https://but-prod.mirakl.net/api/orders/".$commande->getIdImport()."/accept";
  1869.                     ///api/orders/{order_id}/accept
  1870.                 }
  1871.                 if ($url_api != "") {
  1872.                     //echo $url_api;
  1873.                     $cle_client $commande->getCompteMarketPlace()->getCle();
  1874.                     $data = ["order_lines" => []];
  1875.                     foreach ($commande->getArticleCommande() as $ac) {
  1876.                         $temp_id_line          $ac->getIdImport();
  1877.                         $temp_id_line          str_replace($commande->getCompteMarketPlace()->getId().'-'.$commande->getId().'-'""$temp_id_line);
  1878.                         $data["order_lines"][] = ["accepted" => true"id" => $temp_id_line];
  1879.                     }
  1880.                     //print_r($data);
  1881.                     //$data = array('username'=>'dog','password'=>'tall');
  1882.                     $data_json json_encode($data);
  1883.                     //print_r($data_json);
  1884.                     $headers = [];
  1885.                     //$headers[]  = "Content-Type: application/x-www-form-urlencoded";
  1886.                     $headers[] = "Content-Type: application/json";
  1887.                     $headers[] = "Content-Length: ".strlen($data_json);
  1888.                     $headers[] = "Authorization: ".$cle_client;
  1889.                     $ch curl_init();
  1890.                     curl_setopt($chCURLOPT_URL$url_api);
  1891.                     curl_setopt($chCURLOPT_HTTPHEADER$headers);
  1892.                     curl_setopt($chCURLOPT_CUSTOMREQUEST'PUT');
  1893.                     curl_setopt($chCURLOPT_POSTFIELDS$data_json);
  1894.                     curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
  1895.                     $response curl_exec($ch);
  1896.                     curl_close($ch);
  1897.                     $retour json_decode($responsetrue);
  1898.                     $donneesHistorique = ["message" => ""];
  1899.                     if (array_key_exists('message'$retour)) {
  1900.                         $donneesHistorique["message"] = $retour["message"];
  1901.                     }
  1902.                     if (array_key_exists('status'$retour)) {
  1903.                         $donneesHistorique["message"] .= " Status:".$retour["status"];
  1904.                     }
  1905.                     if ( ! is_array($retour) or ! array_key_exists("status"$retour)) {
  1906.                         $changer_statut_commande true;
  1907.                     }
  1908.                     if ($changer_statut_commande) {
  1909.                         $statut_commande_en_attente_obj $em->getRepository(StatutCommande::class)->find(2);
  1910.                         $commande->setStatutCommande($statut_commande_en_attente_obj);
  1911.                         $donneesHistorique["message"] .= " Changement de statut de la commande : ".$statut_commande_en_attente_obj->getLibelle();
  1912.                         $em->persist($commande);
  1913.                         $em->flush();
  1914.                     }
  1915.                     $commandeService->creerHistorique($commande15$donneesHistorique);
  1916.                     $retour_api $donneesHistorique["message"];
  1917.                 }
  1918.             }
  1919.         }
  1920.         $headers = [
  1921.             'Content-Type'                 => 'application/json',
  1922.             'Access-Control-Allow-Origin'  => '*',
  1923.             'Access-Control-Allow-Methods' => 'POST',
  1924.         ];
  1925.         return new JsonResponse(['data' => '1''retour' => $retour_api'url_api' => $url_api]);
  1926.     }
  1927.     /**
  1928.      * @Route("/vente/modifier/adresse/{id}", name="dtc_document_commercial_modifier_adresse_modal")
  1929.      */
  1930.     public function modifierAdresseModalAction(Request            $requestCommande $commandeEntityManagerInterface $emCommandeService $commandeServiceTranslatorInterface $translator,
  1931.                                                ValidatorInterface $validator
  1932.     ) {
  1933.         $titre_modal $translator->trans("Adresse d'expédition ");
  1934.         $user        $this->getUser();
  1935.         $get         $request->query->all();
  1936.         $form        $this->createForm(CommandeAdresseType::class, $commande);
  1937.         $errors      "";
  1938.         $form->handleRequest($request);
  1939.         if ($form->isSubmitted()) {
  1940.             if ($form->isValid()) {
  1941.                 $em->persist($commande);
  1942.                 $em->flush();
  1943.                 $donneesHistorique            = [];
  1944.                 $donneesHistorique["message"] = "";
  1945.                 $commandeService->creerHistorique($commande22$donneesHistorique);
  1946.                 $url $this->generateUrl('dtc_commande_liste', []);
  1947.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  1948.                     return new Response(
  1949.                         json_encode(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]]),
  1950.                         200,
  1951.                         ['Content-Type' => 'application/json']
  1952.                     );
  1953.                 } else {
  1954.                     $this->addFlash('notice'$translator->trans('Adresse modifiée avec succès !'));
  1955.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  1956.                 }
  1957.             } else {
  1958.                 $errors $validator->validate($commande);
  1959.                 $rendu  $this->renderView(
  1960.                     'GestionComerciale/Commande/modifier_adresse_modal.html.twig',
  1961.                     ['form' => $form->createView(), 'errors' => $errors'id' => $commande->getId(), 'type' => '''commande' => $commande]
  1962.                 );
  1963.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  1964.             }
  1965.         }
  1966.         $rendu $this->renderView(
  1967.             'GestionComerciale/Commande/modifier_adresse_modal.html.twig',
  1968.             ['form' => $form->createView(), 'id' => $commande->getId(), 'type' => '''errors' => $errors'commande' => $commande]
  1969.         );
  1970.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  1971.     }
  1972.     /**
  1973.      * @Route("/commande/accepter/cron.xml", name="dtc_commande_a_accepter_cron_xml")
  1974.      */
  1975.     public function AfficherCommandeAAccepterXmlAction(Request $requestEntityManagerInterface $em)
  1976.     {
  1977.         $param $request->query->all();
  1978.         //print_r($param);
  1979.         $cle_xml "fJ43paMv79nN7wxg6xLP7aTJfW9nRB77Q3FK294phO";
  1980.         $cle_xml $this->getParameter('cle_xml');
  1981.         $compteMarketPlace "";
  1982.         $get $request->query->all();
  1983.         //print_r($get);
  1984.         if (array_key_exists('compteMarketPlace'$get)) {
  1985.             $compteMarketPlace $get['compteMarketPlace'];
  1986.         }
  1987.         //$compteMarketPlace = $this->getParameter('compteMarketPlace');
  1988.         //echo "test ".$compteMarketPlace;
  1989.         if ( ! array_key_exists("cle"$param) or $param["cle"] != $cle_xml) {
  1990.             throw new AccessDeniedException('This user does not have access to this section.');
  1991.         }
  1992.         $repo_commande $em->getRepository(Commande::class);
  1993.         $id $request->query->get('id');
  1994.         if ($id != "") {
  1995.             $commandes $repo_commande->findBy(["id" => $id"statutCommande" => "39"]);
  1996.         } else {
  1997.             if ($compteMarketPlace != "") {
  1998.                 $commandes $repo_commande->findBy(["compteMarketPlace" => $compteMarketPlace"statutCommande" => "39"]);
  1999.             } else {
  2000.                 $commandes $repo_commande->findBy(["statutCommande" => "39"], null7500null);
  2001.             }
  2002.             //199.99 €
  2003.         }
  2004.         $xml '<?xml version="1.0" encoding="UTF-8"?>';
  2005.         $xml .= "<orders>";
  2006.         if (count($commandes) > 0) {
  2007.             foreach ($commandes as $c) {
  2008.                 $xml .= "<order>";
  2009.                 $xml .= "<id>".$c->getId()."</id>";
  2010.                 $xml .= "<date>".$c->getDate()->format("Y-m-d H:i:s")."</date>";
  2011.                 $xml .= "<reference>".$c->getReferenceMarketPlace()."</reference>";
  2012.                 $xml .= "<id_import>".$c->getidImport()."</id_import>";
  2013.                 if (is_object($c->getStatutCommandeMarketPlace())) {
  2014.                     $xml .= "<statut_erp><![CDATA[".trim($c->getStatutCommande()->getId())."]]></statut_erp>";
  2015.                 } else {
  2016.                     $xml .= "<statut_erp></statut_erp>";
  2017.                 }
  2018.                 if (is_object($c->getStatutCommandeMarketPlace())) {
  2019.                     $xml .= "<statut_market_place><![CDATA[".trim($c->getStatutCommandeMarketPlace()->getLibelle())."]]></statut_market_place>";
  2020.                 } else {
  2021.                     $xml .= "<statut_market_place></statut_market_place>";
  2022.                 }
  2023.                 $transporteur    "";
  2024.                 $transporteur_id "";
  2025.                 $url_tracking    "";
  2026.                 if (is_object($c->getTransporteur())) {
  2027.                     $transporteur    $c->getTransporteur()->getLibelle();
  2028.                     $transporteur_id $c->getTransporteur()->getId();
  2029.                     $url_tracking    $c->getTransporteur()->getTracking();
  2030.                 }
  2031.                 $xml .= "<transporteur>".trim($transporteur)."</transporteur>";
  2032.                 $xml .= "<transporteur_id>".$transporteur_id."</transporteur_id>";
  2033.                 $xml .= "<numeroSuivi><![CDATA[".trim($c->getNumeroSuivi())."]]></numeroSuivi>";
  2034.                 $xml .= "<url_tracking>".$url_tracking."</url_tracking>";
  2035.                 if (is_object($c->getModeExpedition())) {
  2036.                     $xml .= "<mode_expedition_id>".$c->getModeExpedition()->getId()."</mode_expedition_id>";
  2037.                 } else {
  2038.                     $xml .= "<mode_expedition_id></mode_expedition_id>";
  2039.                 }
  2040.                 $xml .= "<compteMarketPlace>";
  2041.                 $xml .= "<id>".$c->getCompteMarketPlace()->getId()."</id>";
  2042.                 $xml .= "<libelle>".$c->getCompteMarketPlace()->getLibelle()."</libelle>";
  2043.                 //$xml .="<identifiant>".$c->getCompteMarketPlace()->getIdentifiant()."</identifiant>";
  2044.                 //$xml .="<pass>".$c->getCompteMarketPlace()->getPass()."</pass>";
  2045.                 //$xml .="<cle>".$c->getCompteMarketPlace()->getCle()."</cle>";
  2046.                 //$xml .="<secret>".$c->getCompteMarketPlace()->getCle()."</secret>";
  2047.                 $xml .= "<marketPlace>".$c->getCompteMarketPlace()->getMarketPlace()->getLibelle()."</marketPlace>";
  2048.                 $xml .= "</compteMarketPlace>";
  2049.                 $xml .= "<items>";
  2050.                 foreach ($c->getArticleCommande() as $ac) {
  2051.                     $xml             .= "<item>";
  2052.                     $xml             .= "<libelle><![CDATA[".$ac->getLibelle()."]]></libelle>";
  2053.                     $xml             .= "<quantite><![CDATA[".$ac->getQuantite()."]]></quantite>";
  2054.                     $xml             .= "<id_import><![CDATA[".$ac->getidImport()."]]></id_import>";
  2055.                     $xml             .= "<id_article_erp><![CDATA[".$ac->getArticle()->getId()."]]></id_article_erp>";
  2056.                     $xml             .= "<id_article_commande_erp><![CDATA[".$ac->getId()."]]></id_article_commande_erp>";
  2057.                     $sellerProductId "";
  2058.                     if ($ac->getSellerProductId() != '') {
  2059.                         $sellerProductId $ac->getSellerProductId();
  2060.                     } elseif (is_object($ac->getArticleMarketPlace())) {
  2061.                         $sellerProductId $ac->getArticleMarketPlace()->getSku();
  2062.                     }
  2063.                     $xml .= "<seller_product_id><![CDATA[".$sellerProductId."]]></seller_product_id>";
  2064.                     $xml .= "</item>";
  2065.                 }
  2066.                 $xml .= "</items>";
  2067.                 $xml .= "</order>";
  2068.             }
  2069.         }
  2070.         $xml .= "</orders>";
  2071.         $response = new Response($xml);
  2072.         //$response->headers->set('Content-Type', 'application/xml; charset=utf-8');
  2073.         $response->headers->add(['Content-Type' => 'application/xml']);
  2074.         return $response;
  2075.     }
  2076.     /**
  2077.      * @Route("/commande/expedie/cron.xml", name="dtc_commande_a_expedier_cron_xml")
  2078.      */
  2079.     public function AfficherCommandeAExpedierXmlAction(Request $requestCommandeService $commandeServiceEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  2080.     {
  2081.         $param $request->query->all();
  2082.         //print_r($param);
  2083.         $cle_xml                   "fJ43paMv79nN7wxg6xLP7aTJfW9nRB77Q3FK294phO";
  2084.         $cle_xml                   $this->getParameter('cle_xml');
  2085.         $article_facilite_paiement $this->getParameter('article_facilite_paiement');
  2086.         $compteMarketPlace "";
  2087.         $get $request->query->all();
  2088.         //print_r($get);
  2089.         if (array_key_exists('compteMarketPlace'$get)) {
  2090.             $compteMarketPlace $get['compteMarketPlace'];
  2091.         }
  2092.         //$compteMarketPlace = $this->getParameter('compteMarketPlace');
  2093.         //echo "test ".$compteMarketPlace;
  2094.         if ( ! array_key_exists("cle"$param) or $param["cle"] != $cle_xml) {
  2095.             throw new AccessDeniedException('This user does not have access to this section.');
  2096.         }
  2097.         $repo_commande $em->getRepository(Commande::class);
  2098.         $id $request->query->get('id');
  2099.         if ($id != "") {
  2100.             $commandes $repo_commande->findBy(["id" => $id]);
  2101.         } else {
  2102.             if ($compteMarketPlace != "") {
  2103.                 $commandes $repo_commande->findBy(["compteMarketPlace" => $compteMarketPlace"statutCommande" => "36"]);
  2104.             } else {
  2105.                 $commandes $repo_commande->findBy(["statutCommande" => "36"], null7500null);
  2106.             }
  2107.             //$commandes = $repo_commande->findBy(array("id"=>"3005","compteMarketPlace"=>$compteMarketPlace,"statutCommande"=>"36"));
  2108.             //199.99 €
  2109.         }
  2110.         $xml '<?xml version="1.0" encoding="UTF-8"?>';
  2111.         $xml .= "<orders>";
  2112.         if (count($commandes) > 0) {
  2113.             foreach ($commandes as $c) {
  2114.                 $xml .= "<order>";
  2115.                 $xml .= "<id>".$c->getId()."</id>";
  2116.                 $xml .= "<date>".$c->getDate()->format("Y-m-d H:i:s")."</date>";
  2117.                 $xml .= "<reference>".$c->getReferenceMarketPlace()."</reference>";
  2118.                 $xml .= "<id_import>".$c->getidImport()."</id_import>";
  2119.                 if (is_object($c->getStatutCommandeMarketPlace())) {
  2120.                     $xml .= "<statut_erp><![CDATA[".trim($c->getStatutCommande()->getId())."]]></statut_erp>";
  2121.                 } else {
  2122.                     $xml .= "<statut_erp></statut_erp>";
  2123.                 }
  2124.                 if (is_object($c->getStatutCommandeMarketPlace())) {
  2125.                     $xml .= "<statut_market_place><![CDATA[".trim($c->getStatutCommandeMarketPlace()->getLibelle())."]]></statut_market_place>";
  2126.                 } else {
  2127.                     $xml .= "<statut_market_place></statut_market_place>";
  2128.                 }
  2129.                 $modeLivraisonAmazon    "";
  2130.                 $transporteur_amazon    "";
  2131.                 $transporteur_cdiscount "";
  2132.                 $transporteur           "";
  2133.                 $transporteur_id        "";
  2134.                 $url_tracking           "";
  2135.                 if (is_object($c->getTransporteur())) {
  2136.                     $transporteur_amazon    $c->getTransporteur()->getTransporteurAmazon();
  2137.                     $modeLivraisonAmazon    $c->getTransporteur()->getModeLivraisonAmazon();
  2138.                     $transporteur_cdiscount $c->getTransporteur()->getTransporteurCdiscount();
  2139.                     $transporteur           $c->getTransporteur()->getLibelle();
  2140.                     $transporteur_id        $c->getTransporteur()->getId();
  2141.                     $url_tracking           $c->getTransporteur()->getTracking();
  2142.                 }
  2143.                 $xml .= "<transporteur>".trim($transporteur)."</transporteur>";
  2144.                 $xml .= "<transporteur_id>".$transporteur_id."</transporteur_id>";
  2145.                 $xml .= "<transporteurCdiscount>".$transporteur_cdiscount."</transporteurCdiscount>";
  2146.                 $xml .= "<transporteurAmazon>".$transporteur_amazon."</transporteurAmazon>";
  2147.                 $xml .= "<modeLivraisonAmazon>".$modeLivraisonAmazon."</modeLivraisonAmazon>";
  2148.                 $xml .= "<numeroSuiviAll>";
  2149.                 $numeroSuivGlobal $commandeService->getNumeroSuiviCommande($c);
  2150.                 if (count($c->getCommandeNumeroSuivi()) > 0) {
  2151.                     foreach ($c->getCommandeNumeroSuivi() as $num) {
  2152.                         $xml .= "<numeroSuivi><![CDATA[".trim($num->getNumeroSuivi())."]]></numeroSuivi>";
  2153.                         $numeroSuivGlobal trim($num->getNumeroSuivi());
  2154.                     }
  2155.                 }
  2156.                 $xml .= "</numeroSuiviAll>";
  2157.                 $xml .= "<numeroSuivi><![CDATA[".$numeroSuivGlobal."]]></numeroSuivi>";
  2158.                 $xml .= "<url_tracking>".$url_tracking."</url_tracking>";
  2159.                 if (is_object($c->getModeExpedition())) {
  2160.                     $xml .= "<mode_expedition_id>".$c->getModeExpedition()->getId()."</mode_expedition_id>";
  2161.                 } else {
  2162.                     $xml .= "<mode_expedition_id></mode_expedition_id>";
  2163.                 }
  2164.                 $xml .= "<compteMarketPlace>";
  2165.                 $xml .= "<id>".$c->getCompteMarketPlace()->getId()."</id>";
  2166.                 $xml .= "<libelle>".$c->getCompteMarketPlace()->getLibelle()."</libelle>";
  2167.                 //$xml .="<identifiant>".$c->getCompteMarketPlace()->getIdentifiant()."</identifiant>";
  2168.                 //$xml .="<pass>".$c->getCompteMarketPlace()->getPass()."</pass>";
  2169.                 //$xml .="<cle>".$c->getCompteMarketPlace()->getCle()."</cle>";
  2170.                 //$xml .="<secret>".$c->getCompteMarketPlace()->getCle()."</secret>";
  2171.                 $xml .= "<marketPlace>".$c->getCompteMarketPlace()->getMarketPlace()->getLibelle()."</marketPlace>";
  2172.                 $xml .= "</compteMarketPlace>";
  2173.                 $xml .= "<items>";
  2174.                 foreach ($c->getArticleCommande() as $ac) {
  2175.                     if ($ac->getArticle()->getId() != $article_facilite_paiement) {
  2176.                         $xml             .= "<item>";
  2177.                         $xml             .= "<libelle><![CDATA[".$ac->getLibelle()."]]></libelle>";
  2178.                         $xml             .= "<quantite><![CDATA[".$ac->getQuantite()."]]></quantite>";
  2179.                         $xml             .= "<id_import><![CDATA[".$ac->getidImport()."]]></id_import>";
  2180.                         $xml             .= "<id_article_erp><![CDATA[".$ac->getArticle()->getId()."]]></id_article_erp>";
  2181.                         $xml             .= "<id_article_commande_erp><![CDATA[".$ac->getId()."]]></id_article_commande_erp>";
  2182.                         $sellerProductId "";
  2183.                         if ($ac->getSellerProductId() != '') {
  2184.                             $sellerProductId $ac->getSellerProductId();
  2185.                         } elseif (is_object($ac->getArticleMarketPlace())) {
  2186.                             $sellerProductId $ac->getArticleMarketPlace()->getSku();
  2187.                         }
  2188.                         $xml .= "<seller_product_id><![CDATA[".$sellerProductId."]]></seller_product_id>";
  2189.                         $xml .= "</item>";
  2190.                     }
  2191.                 }
  2192.                 $xml .= "</items>";
  2193.                 $xml .= "</order>";
  2194.             }
  2195.         }
  2196.         $xml .= "</orders>";
  2197.         $response = new Response($xml);
  2198.         //$response->headers->set('Content-Type', 'application/xml; charset=utf-8');
  2199.         $response->headers->add(['Content-Type' => 'application/xml']);
  2200.         return $response;
  2201.     }
  2202.     /**
  2203.      * @Route("/vente/commande/transporteur/modifier/{id}", name="noogaa_modifer_transporteur")
  2204.      */
  2205.     public function modifierTransporteurAction(Request            $requestCommande $commandeCommandeService $commandeServiceEntityManagerInterface $emTranslatorInterface $translator,
  2206.                                                ValidatorInterface $validator
  2207.     ) {
  2208.         $titre_modal $translator->trans("Modifier le transporteur sur le document");
  2209.         $form   $this->createForm(CommandeTransporteurType::class, $commande);
  2210.         $errors "";
  2211.         $form->handleRequest($request);
  2212.         if ($form->isSubmitted()) {
  2213.             if ($form->isValid()) {
  2214.                 $em->persist($commande);
  2215.                 $em->flush();
  2216.                 $commandeService->creerHistorique($commande'dtc_gestioncomercialebundle_commande_transporteur');
  2217.                 //$rendu = $this->renderView('layout-errors.html.twig');
  2218.                 $rendu        '';
  2219.                 $url          '';
  2220.                 $lp           $request->query->get('lp');
  2221.                 $page_origine $request->query->get('page');
  2222.                 if ( ! empty($page_origine) && $page_origine == "anomalies") {
  2223.                     $url $this->generateUrl('dtc_commande_anomalies_liste', []);
  2224.                 } //redirection vers expedition colissimo
  2225.                 elseif (is_object($commande->getTransporteur()) && in_array($commande->getTransporteur()->getId(), [1])) {
  2226.                     $url $this->generateUrl('dtc_bon_preparation_simplifie_expedition_delivengo_action', ['lp' => $lp'id' => $commande->getId()]);
  2227.                 } elseif (is_object($commande->getTransporteur())
  2228.                           &&
  2229.                           (
  2230.                               $commande->getTransporteur()->getId() == 3
  2231.                               or
  2232.                               $commande->getTransporteur()->getId() == 6
  2233.                               or
  2234.                               $commande->getTransporteur()->getId() == 12
  2235.                               or
  2236.                               $commande->getTransporteur()->getId() == 14
  2237.                           )
  2238.                 ) {
  2239.                     $url $this->generateUrl('dtc_bon_preparation_simplifie_expedition_colissimo_action', ['lp' => $lp'id' => $commande->getId()]);
  2240.                 } elseif (is_object($commande->getTransporteur()) && $commande->getTransporteur()->getId() == 5) {
  2241.                     $url $this->generateUrl('dtc_bon_preparation_simplifie_expedition_gls_action', ['lp' => $lp'id' => $commande->getId()]);
  2242.                 } //redirection vers expedition chronopost
  2243.                 elseif (
  2244.                     //Chronopost
  2245.                     is_object($commande->getTransporteur()) && $commande->getTransporteur()->getId() == 4
  2246.                     or
  2247.                     //Chrono13
  2248.                     is_object($commande->getTransporteur()) && $commande->getTransporteur()->getId() == 8
  2249.                     or
  2250.                     //ChronoClassic
  2251.                     is_object($commande->getTransporteur()) && $commande->getTransporteur()->getId() == 9
  2252.                     or
  2253.                     //ChronoExpress
  2254.                     is_object($commande->getTransporteur()) && $commande->getTransporteur()->getId() == 10
  2255.                     or
  2256.                     //ChronoPremium
  2257.                     is_object($commande->getTransporteur()) && $commande->getTransporteur()->getId() == 11
  2258.                 ) {
  2259.                     $url $this->generateUrl('dtc_bon_preparation_simplifie_expedition_chronopost_action', ['lp' => $lp'id' => $commande->getId()]);
  2260.                 } //redirection vers expedition tnt
  2261.                 elseif (is_object($commande->getTransporteur()) && ! empty($commande->getTransporteur()->getServiceCode())) {
  2262.                     $url $this->generateUrl('dtc_bon_preparation_simplifie_expedition_tnt_action', ['lp' => $lp'id' => $commande->getId()]);
  2263.                 }
  2264.                 $transporteurId '';
  2265.                 if (is_object($commande->getTransporteur())) {
  2266.                     $transporteurId $commande->getTransporteur()->getId();
  2267.                 }
  2268.                 return new JsonResponse(
  2269.                     ['rendu' => $rendu'valide' => '1''url' => $url'type' => 'callbackModifierTransporteur''transporteurId' => $transporteurId]
  2270.                 );
  2271.             } else {
  2272.                 $errors $validator->validate($commande);
  2273.                 $rendu  $this->renderView('GestionComerciale/Commande/modifier-transporteur.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  2274.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  2275.             }
  2276.         }
  2277.         $rendu $this->renderView('GestionComerciale/Commande/modifier-transporteur.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  2278.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  2279.     }
  2280.     /**
  2281.      * @Route("/commande/recherche", name="dtc_commande_recherche")
  2282.      * @Route("/document-commercial/recherche", name="dtc_document_vente_recherche")
  2283.      */
  2284.     public function rechercheAction(Request $requestEntityManagerInterface $emPaginatorInterface $paginator)
  2285.     {
  2286.         $q                   $request->query->get('q');
  2287.         $commandeFournisseur $request->query->get('commandeFournisseur');
  2288.         $articles            = [];
  2289.         if ( ! empty($commandeFournisseur)) {
  2290.             $objet $em->getRepository(CommandeFournisseur::class)->find($commandeFournisseur);
  2291.             if (is_object($objet)) {
  2292.                 foreach ($objet->getArticleCommande() as $ac) {
  2293.                     if ( ! in_array($ac->getArticle()->getId(), $articles)) {
  2294.                         $articles[] = $ac->getArticle()->getId();
  2295.                     }
  2296.                 }
  2297.             }
  2298.         }
  2299.         $repo $em->getRepository(Commande::class);
  2300.         //$results = $repo->getRechercheCommande($q, 25, array('articles'=>$articles));
  2301.         $results $em->getRepository(ArticleCommande::class)->getCommandePourCommandeFournisseur($articles);
  2302.         $pagination $paginator->paginate(
  2303.             $results/* query NOT result */
  2304.             $request->query->getInt('page'1)/*page number*/,
  2305.             10/*limit per page*/
  2306.         );
  2307.         $pagination_results $pagination->getItems();
  2308.         $option_placeholde  = ["libelle" => "Sélectionnez""id" => 0];
  2309.         if ($request->query->getInt('page'1) == 1) {
  2310.             array_unshift($pagination_results$option_placeholde);
  2311.         }
  2312.         $pagination->setItems($pagination_results);
  2313.         return new JsonResponse(
  2314.             $pagination,
  2315.         );
  2316.     }
  2317.     /**
  2318.      * @Route("/commande/of/charger-tableau/{id}", name="dtc_commande_of_charger_tableau")
  2319.      */
  2320.     public function chargerTableauAction(Request $requestCommande $commande)
  2321.     {
  2322.         $rendu $this->renderView('GestionComerciale/Fabrication/charger_tableau.html.twig', ["commande" => $commande]);
  2323.         return new JsonResponse(['rendu' => $rendu]);
  2324.     }
  2325.     /**
  2326.      * @Route("/commandes/ofs/{id}", name="dtc_commande_ofs_liste")
  2327.      */
  2328.     public function listerOfsAction(Request $request$id "0"$type "a"EntityManagerInterface $emColonneTableauService $serviceColonneTableauDatatable $datatableTranslatorInterface $translator)
  2329.     {
  2330.         $repo_objet $em->getRepository(Commande::class);
  2331.         $objet      $repo_objet->find($id);
  2332.         $param   $request->query->all();
  2333.         $tableau_class_cellule   = [];
  2334.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-center""targets" => [0], "visible" => true"orderable" => true];
  2335.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [1], "visible" => true"orderable" => true];
  2336.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-right""targets" => [2], "visible" => true"orderable" => true];
  2337.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-right""targets" => [3], "visible" => true"orderable" => true];
  2338.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-right""targets" => [4], "visible" => true"orderable" => true];
  2339.         $tableau_class_cellule[] = ["orderable" => false"className" => "colonne_id""targets" => [5], "visible" => true];
  2340.         $tableau_class_cellule   = [];
  2341.         $this->datatableOfs($objet$type$em$datatable$translator);
  2342.         return $this->render(
  2343.             'GestionComerciale/Fabrication/lister_of_commande.html.twig',
  2344.             ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type'parametres' => $param]
  2345.         );
  2346.     }
  2347.     /**
  2348.      * set datatable configs
  2349.      *
  2350.      * @return \App\Library\Datatable\Util\Datatable
  2351.      */
  2352.     private function datatableOfs($objet$type ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  2353.     {
  2354.         $datatable->setDatatableId('dta-ofs')->setEntity(Fabrication::class, "x");
  2355.         $parameters = ['objet' => $objet];
  2356.         $where      "c.id = :objet ";
  2357.         $datatable
  2358.             ->setFields(
  2359.                 [
  2360.                     $translator->trans("ID") =>  'x.id',
  2361.                     $translator->trans("Référence") =>  'x.reference',
  2362.                     $translator->trans("Statut") =>  's.libelle',
  2363.                     $translator->trans("Réf article") =>  'a.reference',
  2364.                     $translator->trans("Libellé") =>  'a.libelle',
  2365.                     $translator->trans("Réf multiple") =>  'ofm.reference',
  2366.                     $translator->trans("Statut OFM") =>  'sofm.libelle',
  2367.                     $translator->trans("Actions")   => 'x.id',
  2368.                     "_identifier_"                  => 'x.id',
  2369.                 ]
  2370.             )
  2371.             ->addJoin('x.articleCommandeCommandeClient''ac'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  2372.             ->addJoin('ac.article''a'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  2373.             ->addJoin('ac.commande''c'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  2374.             ->addJoin('x.fabricationMultiple''ofm'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  2375.             ->addJoin('x.statutFabrication''s'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  2376.             ->addJoin('ofm.statutFabricationMultiple''sofm'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  2377.             ->setWhere(
  2378.                 $where,
  2379.                 $parameters
  2380.             )
  2381.             ->setRenderers(
  2382.                 [
  2383.                     => [
  2384.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  2385.                         'params' => [
  2386.                             'edit_route' => 'dtc_fabrication_modifier',
  2387.                         ],
  2388.                     ],
  2389.                     => [
  2390.                         'view'   => 'FO/DataTable/actions.html.twig',
  2391.                         'params' => [
  2392.                             'edit_route'  => 'dtc_fabrication_modifier',
  2393.                             //'supprimer_route'  => 'dtc_facture_supprimer',
  2394.                             //'pdf_route' => 'dtc_facture_pdf',
  2395.                             'id'        => $objet->getId(),
  2396.                             'type'      => $type,
  2397.                             'entite'    => 'fabrication',
  2398.                             'objet'     => Commande::class,
  2399.                         ],
  2400.                     ],
  2401.                 ]
  2402.             )
  2403.             ->setOrder("x.id""desc")
  2404.             ->setSearch(true)//->setSearchFields(array(1,2))
  2405.         ;
  2406.         return $datatable;
  2407.     }
  2408.     /**
  2409.      * @Route("/commandes/ofs/grid/{id}", name="dtc_commande_ofs_liste_grid")
  2410.      */
  2411.     public function gridOfsAction(Request $request$id ""$type ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  2412.     {
  2413.         $repo_objet $em->getRepository(Commande::class);
  2414.         $objet      $repo_objet->find($id);
  2415.         return $this->datatableOfs($objet$type$em$datatable$translator)->execute();
  2416.     }
  2417.     /**
  2418.      * @Route("/export-commandes/zip", name="export__export_commandes_zip")
  2419.      */
  2420.     public function zipExportCommandesAction(Request $requestCommandeService $serviceCommandeEntityManagerInterface $em)
  2421.     {
  2422.         $data $request->get('dataTables');
  2423.         $ids  $data['actions'];
  2424.         $retour $serviceCommande->createZipFileCommandes($ids);
  2425.         //return $this->file($retour['zipFilePath'], $retour['fileName'], ResponseHeaderBag::DISPOSITION_INLINE);
  2426.         return new JsonResponse(['url'=>$retour['url'],'target'=>'_blank']);
  2427.     }
  2428. }