src/Controller/GestionComerciale/AvoirController.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\Controller\GestionComerciale;
  3. use App\Entity\FO\Societe;
  4. use App\Entity\GestionComerciale\ArticleCommande;
  5. use App\Entity\GestionComerciale\Avoir;
  6. use App\Entity\GestionComerciale\Commande;
  7. use App\Entity\GestionComerciale\CommandeFournisseur;
  8. use App\Entity\GestionComerciale\Facture;
  9. use App\Form\GestionComerciale\AvoirFactureType;
  10. use App\Form\GestionComerciale\AvoirType;
  11. use App\Form\GestionComerciale\CommandeType;
  12. use App\Library\Datatable\Util\Datatable;
  13. use App\Model\GestionCommerciale\TypeDocumentCommercial;
  14. use App\Security\Voter\EntityVoter;
  15. use App\Service\GestionComerciale\AvoirService;
  16. use App\Service\Utilisateur\ColonneTableauService;
  17. use Doctrine\ORM\EntityManagerInterface;
  18. use Knp\Snappy\Pdf;
  19. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  20. use Symfony\Component\HttpFoundation\Request;
  21. use Symfony\Component\HttpFoundation\JsonResponse;
  22. use Symfony\Component\HttpFoundation\Response;
  23. use Symfony\Component\HttpFoundation\RedirectResponse;
  24. use Symfony\Component\Routing\Annotation\Route;
  25. use Symfony\Component\Validator\Validator\ValidatorInterface;
  26. use Symfony\Contracts\Translation\TranslatorInterface;
  27. class AvoirController extends AbstractController
  28. {
  29.     /**
  30.      * @Route("/vente/avoir/nouveau/modal/{id}/{type}", name="dtc_avoir_ajouter_modal")
  31.      */
  32.     public function ajouterModalAction(Request $request$id$type ""EntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  33.     {
  34.         $titre_modal $translator->trans("Nouvelle reprise sur facture");
  35.         if ($type == "commandeFournisseur") {
  36.             $repo_objet $em->getRepository(CommandeFournisseur::class);
  37.         } else {
  38.             $repo_objet $em->getRepository(Commande::class);
  39.         }
  40.         $objet $repo_objet->find($id);
  41.         $avoir = clone $objet;
  42.         $user $this->getUser();
  43.         //$avoir->setUtilisateur($user);
  44.         if (is_object($avoir->getUtilisateur()) && ! empty($this->getParameter('utilisateur_site_internet')) && $avoir->getUtilisateur()->getId(
  45.             ) == $this->getParameter('utilisateur_site_internet')) {
  46.         } else {
  47.             //    $avoir->setUtilisateur($user);
  48.         }
  49.         $form   $this->createForm(AvoirFactureType::class, $avoir);
  50.         $errors "";
  51.         $form->handleRequest($request);
  52.         $idsArticleCommande $request->query->get('choixArticles');
  53.         $repo_objet         $em->getRepository(Commande::class);
  54.         $objet              $repo_objet->find($id);
  55.         $avoir->setFacture($objet);
  56.         $link            $this->generateUrl('dtc_avoir_ajouter_modal', ['id' => $objet->getId(), 'type' => 'avoir']);
  57.         $articleCommande $em->getRepository(ArticleCommande::class)->listeArticleCommandeSelectionne($idsArticleCommande);
  58.         if ($form->isSubmitted()) {
  59.             if ($form->isValid()) {
  60.                 $link $this->generateUrl('dtc_facture_afficher', ['id' => $objet->getId()]);
  61.                 $articles = [
  62.                     'choixArticlesAvoir' => $request->request->get('choixArticlesAvoir'),
  63.                     'idArticle'          => $request->request->get('idArticle'),
  64.                     'idArticleCommande'  => $request->request->get('idArticleCommande'),
  65.                     'quantiteInit'       => $request->request->get('quantiteInit'),
  66.                     'quantite'           => $request->request->get('quantite'),
  67.                     'quantiteRepris'     => $request->request->get('quantiteRepris'),
  68.                 ];
  69.                 $valeurs = ["commande" => $objet->getId(), "articles" => $articles];
  70.                 $url $this->generateUrl('dtc_comptoir_ajouter', ['valeurs' => $valeurs]);
  71.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  72.             } else {
  73.                 $errors $validator->validate($avoir);
  74.                 $rendu  $this->renderView(
  75.                     'GestionComerciale/Avoir/ajouter_modal.html.twig',
  76.                     [
  77.                         'form'            => $form->createView(),
  78.                         'errors'          => $errors,
  79.                         'id'              => $id,
  80.                         'type'            => $type,
  81.                         'articleCommande' => $articleCommande,
  82.                         'commande'        => $objet,
  83.                     ]
  84.                 );
  85.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  86.             }
  87.         }
  88.         $rendu $this->renderView(
  89.             'GestionComerciale/Avoir/ajouter_modal.html.twig',
  90.             ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'articleCommande' => $articleCommande'commande' => $objet]
  91.         );
  92.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''link' => $link'titre' => $titre_modal]);
  93.     }
  94.     /**
  95.      * @Route("/vente/avoir/modifier/modal/{objet}/{id}/{type}", name="dtc_avoir_modifier_modal")
  96.      */
  97.     public function modifierModalAction(Request            $requestCommande $objet$id$typeEntityManagerInterface $emAvoirService $avoirServiceTranslatorInterface $translator,
  98.                                         ValidatorInterface $validator
  99.     ) {
  100.         $avoir $objet;
  101.         $titre_modal $translator->trans("Modifier avoir sur facture");
  102.         $user $this->getUser();
  103.         //$avoir->setUtilisateur($user);
  104.         if (is_object($avoir->getUtilisateur()) && ! empty($this->getParameter('utilisateur_site_internet')) && $avoir->getUtilisateur()->getId(
  105.             ) == $this->getParameter('utilisateur_site_internet')) {
  106.         } else {
  107.             $avoir->setUtilisateur($user);
  108.         }
  109.         $form   $this->createForm(AvoirFactureType::class, $avoir);
  110.         $errors "";
  111.         $form->handleRequest($request);
  112.         $idsArticleCommande $request->query->get('choixArticles');
  113.         $link               "";
  114.         //$link = $this->generateUrl('dtc_avoir_modifier_modal', array('id' => $objet->getId(),'type'=>'avoir'));
  115.         $articleCommande $em->getRepository(ArticleCommande::class)->listeArticleCommandeSelectionne($idsArticleCommande);
  116.         $articleCommande $objet->getArticleCommande();
  117.         if ($form->isSubmitted()) {
  118.             if ($form->isValid()) {
  119.                 $link $this->generateUrl('dtc_facture_afficher', ['id' => $objet->getId()]);
  120.                 $articles = [
  121.                     'idArticleCommande' => $request->request->get('idArticleCommande'),
  122.                     'quantiteInit'      => $request->request->get('quantiteInit'),
  123.                     'quantite'          => $request->request->get('quantite'),
  124.                     'quantiteRepris'    => $request->request->get('quantiteRepris'),
  125.                 ];
  126.                 $valeurs = ["articles" => $articles];
  127.                 $avoirService->sauvegarderAvoirFacture($avoir$valeurs);
  128.                 $this->addFlash(
  129.                     'notice',
  130.                     $translator->trans('Avoir modifié avec succès !')
  131.                 );
  132.                 $url $this->generateUrl('dtc_facture_afficher', ['id' => $objet->getFacture()->getId(), 'tab' => 'avoirs']);
  133.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url], 200, ['Content-Type' => 'application/json']);
  134.             } else {
  135.                 $errors $validator->validate($avoir);
  136.                 $rendu  $this->renderView(
  137.                     'GestionComerciale/Avoir/ajouter_modal.html.twig',
  138.                     [
  139.                         'form'            => $form->createView(),
  140.                         'errors'          => $errors,
  141.                         'id'              => $id,
  142.                         'type'            => $type,
  143.                         'articleCommande' => $articleCommande,
  144.                         'commande'        => $objet,
  145.                     ]
  146.                 );
  147.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  148.             }
  149.         }
  150.         $rendu $this->renderView(
  151.             'GestionComerciale/Avoir/ajouter_modal.html.twig',
  152.             ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'articleCommande' => $articleCommande'commande' => $objet]
  153.         );
  154.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''link' => $link'titre' => $titre_modal]);
  155.     }
  156.     /**
  157.      * @Route("/vente/avoir/nouveau", name="dtc_avoir_ajouter")
  158.      */
  159.     public function ajouterAction(Request $requestEntityManagerInterface $emAvoirService $avoirServiceTranslatorInterface $translatorValidatorInterface $validator)
  160.     {
  161.         $avoir = new Commande;
  162.         $user  $this->getUser();
  163.         //$avoir->setUtilisateur($user);
  164.         if (is_object($avoir->getUtilisateur()) && ! empty($this->getParameter('utilisateur_site_internet')) && $avoir->getUtilisateur()->getId(
  165.             ) == $this->getParameter('utilisateur_site_internet')) {
  166.         } else {
  167.             $avoir->setUtilisateur($user);
  168.         }
  169.         $form   $this->createForm(AvoirType::class, $avoir);
  170.         $errors "";
  171.         $form->handleRequest($request);
  172.         if ($form->isSubmitted()) {
  173.             if ($form->isValid()) {
  174.                 $em->persist($avoir);
  175.                 $em->flush();
  176.                 //$articles = array('ids'=>$request->request->get('ids'),'commentaire'=>$request->request->get('commentaire'),'libelles'=>$request->request->get('libelles'),'tva'=>$request->request->get('tva'),'remiseSuppl'=>$request->request->get('remiseSuppl'),'prix'=>$request->request->get('prix'),'qte'=>$request->request->get('qte'));
  177.                 $articles = [
  178.                     'ids'             => $request->request->get('ids'),
  179.                     'remise'          => $request->request->get('remise'),
  180.                     'montantRemise'   => $request->request->get('montantRemise'),
  181.                     'commentaire'     => $request->request->get('commentaire'),
  182.                     'libelles'        => $request->request->get('libelles'),
  183.                     'tva'             => $request->request->get('tva'),
  184.                     'remiseSuppl'     => $request->request->get('remiseSuppl'),
  185.                     'ecocontribution' => $request->request->get('ecocontribution'),
  186.                     'prix'            => $request->request->get('prix'),
  187.                     'qte'             => $request->request->get('qte'),
  188.                 ];
  189.                 $valeurs = ["articles" => $articles'typeDocument' => 'commande'];
  190.                 $avoirService->sauvegarder($avoir$valeurs);
  191.                 $this->addFlash(
  192.                     'notice',
  193.                     $translator->trans('Avoir ajouté avec succès !')
  194.                 );
  195.                 return $this->redirectToRoute('dtc_avoir_modifier', ["id" => $avoir->getId()]);
  196.             } else {
  197.                 $errors $validator->validate($avoir);
  198.             }
  199.         }
  200.         return $this->render('GestionComerciale/Avoir/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  201.     }
  202.     /**
  203.      * @Route("/vente/avoir/modifier/{id}", name="dtc_avoir_modifier")
  204.      */
  205.     public function modifierAction(Request             $requestCommande $avoirEntityManagerInterface $emAvoirService $avoirService,
  206.                                    TranslatorInterface $translatorValidatorInterface $validator
  207.     ) {
  208.         $user $this->getUser();
  209.         //$avoir->setUtilisateur($user);
  210.         if (is_object($avoir->getUtilisateur()) && ! empty($this->getParameter('utilisateur_site_internet')) && $avoir->getUtilisateur()->getId(
  211.             ) == $this->getParameter('utilisateur_site_internet')) {
  212.         } else {
  213.             $avoir->setUtilisateur($user);
  214.         }
  215.         $form $this->createForm(CommandeType::class, $avoir);
  216.         $articles = ['ids' => $request->request->get('ids'), 'prix' => $request->request->get('prix'), 'qte' => $request->request->get('qte')];
  217.         $valeurs  = ["articles" => $articles];
  218.         $errors "";
  219.         $form->handleRequest($request);
  220.         if ($form->isSubmitted()) {
  221.             if ($avoirService->estEditable($avoir)) {
  222.                 // TODO CHANGE
  223.                 $droit $this->isGranted(EntityVoter::UPDATEAvoir::class);
  224.                 if ( ! $droit) {
  225.                     return $this->redirectToRoute('dtc_avoir_modifier', ["id" => $avoir->getId()]);
  226.                 }
  227.                 if ($form->isValid()) {
  228.                     if ($request->request->get('annuler') != '') {
  229.                         $avoirService->annulerAvoir($avoir$request->request->get('annuler'));
  230.                         $this->addFlash(
  231.                             'notice',
  232.                             $translator->trans('Avoir annulé avec succès !')
  233.                         );
  234.                         return $this->redirectToRoute('dtc_avoir_liste', []);
  235.                     }
  236.                     $em->persist($avoir);
  237.                     $em->flush();
  238.                     //$articles = array('valider'=>$request->request->get('valider'),'ids'=>$request->request->get('ids'),'commentaire'=>$request->request->get('commentaire'),'remiseSuppl'=>$request->request->get('remiseSuppl'),'prix'=>$request->request->get('prix'),'libelles'=>$request->request->get('libelles'),'tva'=>$request->request->get('tva'),'qte'=>$request->request->get('qte'));
  239.                     $articles = [
  240.                         'ids'                    => $request->request->get('ids'),
  241.                         'remise'                 => $request->request->get('remise'),
  242.                         'montantRemise'          => $request->request->get('montantRemise'),
  243.                         'commentairePrive'       => $request->request->get('commentairePrive'),
  244.                         'commentaire'            => $request->request->get('commentaire'),
  245.                         'libelles'               => $request->request->get('libelles'),
  246.                         'tva'                    => $request->request->get('tva'),
  247.                         'remiseSuppl'            => $request->request->get('remiseSuppl'),
  248.                         'ecocontribution'        => $request->request->get('ecocontribution'),
  249.                         'prix'                   => $request->request->get('prix'),
  250.                         'fraisPortLigne'         => $request->request->get('fraisPortLigne'),
  251.                         'qte'                    => $request->request->get('qte'),
  252.                         'articlesCommandeRepris' => $request->request->get('articlesCommandeRepris'),
  253.                     ];
  254.                     $valeurs = ["articles" => $articles'typeDocument' => 'commande'];
  255.                     $avoirService->sauvegarder($avoir$valeurs);
  256.                     $this->addFlash(
  257.                         'notice',
  258.                         $translator->trans('Avoir sauvegardé avec succès !')
  259.                     );
  260.                     return $this->redirectToRoute('dtc_avoir_modifier', ["id" => $avoir->getId()]);
  261.                 } else {
  262.                     $errors $validator->validate($avoir);
  263.                     //\Doctrine\Common\Util\Debug::dump($errors);
  264.                 }
  265.             } else {
  266.                 return $this->redirectToRoute('dtc_avoir_modifier', ["id" => $avoir->getId()]);
  267.             }
  268.         }
  269.         $modal $request->query->get('modal');
  270.         if ($modal == 1) {
  271.             $titre_modal $avoir->getReference();
  272.             $rendu       $this->renderView('GestionComerciale/Avoir/ajouter-modal.html.twig', ['form' => $form->createView(), 'errors' => $errors'commande' => $avoir]);
  273.             return new Response(json_encode(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]), 200, ['Content-Type' => 'application/json']);
  274.         } elseif ($avoir->getMultiBL() == true) {
  275.             $repo_commande $em->getRepository(Commande::class);
  276.             $bls           $repo_commande->findByFacture($avoir->getId());
  277.             return $this->render('GestionComerciale/Avoir/ajouter-multi-bl.html.twig', [
  278.                 'form'               => $form->createView(),
  279.                 'errors'             => $errors,
  280.                 'commande'           => $avoir,
  281.                 'bls'                => $bls,
  282.                 // TODO CHANGE THIS
  283.                 'colonneUtilisateur' => 'App\\Entity\\GestionComerciale\\FormFacture',
  284.             ]);
  285.         } else {
  286.             return $this->render('GestionComerciale/Avoir/ajouter.html.twig', [
  287.                 'form'               => $form->createView(),
  288.                 'errors'             => $errors,
  289.                 'commande'           => $avoir,
  290.                 // TODO CHANGE THIS
  291.                 'colonneUtilisateur' => 'App\\Entity\\GestionComerciale\\FormFacture',
  292.             ]);
  293.         }
  294.     }
  295.     /**
  296.      * @Route("/vente/avoir", name="dtc_avoir_liste")
  297.      */
  298.     public function listerAction(Request $requestColonneTableauService $serviceColonneTableauTranslatorInterface $translatorDatatable $datatable)
  299.     {
  300.         $param                   $request->query->all();
  301.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [0], "visible" => false"orderable" => false];
  302.         $tableau_class_cellule[] = [
  303.             "className" => "visible_export colonne_id",
  304.             "targets"   => [1],
  305.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Avoir::class, "id"),
  306.         ];
  307.         $tableau_class_cellule[] = [
  308.             "className" => "visible_export colonne_id",
  309.             "targets"   => [2],
  310.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Avoir::class, "reference"),
  311.         ];
  312.         $tableau_class_cellule[] = [
  313.             "className" => "visible_export colonne_id",
  314.             "targets"   => [3],
  315.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Avoir::class, "client"),
  316.         ];
  317.         $tableau_class_cellule[] = [
  318.             "className" => "visible_export colonne_id",
  319.             "targets"   => [4],
  320.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Avoir::class, "libelleLivraison"),
  321.         ];
  322.         $tableau_class_cellule[] = [
  323.             "className" => "visible_export colonne_id text-right",
  324.             "targets"   => [5],
  325.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Avoir::class, "statut"),
  326.         ];
  327.         $tableau_class_cellule[] = [
  328.             "className" => "visible_export _somme colonne_id text-center",
  329.             "targets"   => [6],
  330.             "visible"   => $serviceColonneTableau->getColonneUtilisateur(Avoir::class, "totalHT"),
  331.         ];
  332.         $tableau_class_cellule[] = ["orderable" => false"className" => "colonne_id""targets" => [7], "visible" => true];
  333.         $this->datatable($request$datatable$translator);
  334.         return $this->render('GestionComerciale/Avoir/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule'parametres' => $param]);
  335.     }
  336.     /**
  337.      * set datatable configs
  338.      *
  339.      * @return \App\Library\Datatable\Util\Datatable
  340.      */
  341.     private function datatable(Request $requestDatatable $datatableTranslatorInterface $translator)
  342.     {
  343.         $param $request->query->all();
  344.         $datatable->setDatatableId('dta-avoir')
  345.                   ->setEntity(Commande::class, "x")
  346.                   ->setFields(
  347.                       [
  348.                           $translator->trans("ID")            => 'x.id',
  349.                           $translator->trans("Réf")           => 'x.reference',
  350.                           $translator->trans("Client")        => 'c.nom',
  351.                           $translator->trans("Ref client")    => 'c.reference',
  352.                           $translator->trans("Société / Nom") => 'x.libelleLivraison',
  353.                           $translator->trans("Total HT")      => 'x.total',
  354.                           $translator->trans("Date")          => 'x.date',
  355.                           $translator->trans("Actions")       => 'x.id',
  356.                           "_identifier_"                      => 'x.id',
  357.                       ]
  358.                   )
  359.                   ->addJoin('x.client''c'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  360.                   ->addJoin('x.statutCommande''s'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  361.             /*
  362.             ->addJoin('x.commande', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  363.             ->addJoin('x.mecanicien', 'e', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  364.             ->addJoin('x.vehiculesClient', 'v', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  365.             */
  366.                   ->setRenderers(
  367.                 [
  368.                     => [
  369.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  370.                         'params' => [
  371.                             'edit_route' => 'dtc_avoir_modifier',
  372.                         ],
  373.                     ],
  374.                     => [
  375.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  376.                         'params' => [
  377.                             'edit_route' => 'dtc_avoir_modifier',
  378.                         ],
  379.                     ],
  380.                     => [
  381.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  382.                         'params' => [
  383.                             'edit_route'   => 'dtc_client_modifier',
  384.                             'typeDocument' => 'client',
  385.                         ],
  386.                     ],
  387.                     => [
  388.                         'view'   => 'FO/DataTable/client.html.twig',
  389.                         'params' => [],
  390.                     ],
  391.                     => [
  392.                         'view'   => 'FO/DataTable/prix.html.twig',
  393.                         'params' => [
  394.                             'avecPort' => 1
  395.                             //'edit_route'    => 'dtc_avoir_modifier'
  396.                         ],
  397.                     ],
  398.                     => [
  399.                         'view'   => 'FO/DataTable/heure.html.twig',
  400.                         'params' => [//'edit_route'    => 'dtc_avoir_modifier'
  401.                         ],
  402.                     ],
  403.                     => [
  404.                         'view'   => 'FO/DataTable/actions_facture_avoir.html.twig',
  405.                         'params' => [
  406.                             'afficher_route_facture' => 'dtc_facture_afficher',
  407.                             'pdf_route_facture'      => 'dtc_facture_pdf',
  408.                             'edit_route_avoir'       => 'dtc_avoir_modifier',
  409.                             'pdf_route_avoir'        => 'dtc_avoir_pdf',
  410.                             'objet_facture'          => Facture::class,
  411.                             'objet_avoir'            => AvoirService::class,
  412.                             'deplier'                => true,
  413.                         ],
  414.                     ],
  415.                     /*
  416.                     6 => array(
  417.                         //'view' => 'FO/DataTable/actions.html.twig',
  418.                         'view' => 'FO/DataTable/actions.html.twig',
  419.                         'params' => array(
  420.                                 'edit_route'  => 'dtc_avoir_modifier',
  421.                                 //'supprimer_route'  => 'dtc_avoir_supprimer',
  422.                                 'pdf_route'  => 'dtc_avoir_pdf',
  423.                                 'entite'    => 'bonPreparation',
  424.                                 'objet' => "DTCGestionComercialeBundle:Commande",
  425.                                 'deplier'    => true,
  426.                             ),
  427.                     ),
  428.                     */
  429.                 ]
  430.             )
  431.                   ->setMultiple(
  432.                       [
  433.                           'print' => [
  434.                               'title' => 'Imprimer',
  435.                               'route' => 'dtc_facture_pdf_multiple',
  436.                           ],
  437.                       ]
  438.                   )
  439.                   ->setOrder("x.id""desc")
  440.                   ->setSearch(true)
  441.                   ->setSearchFields([1234]);
  442.         $where      'x.typeDocumentCommercial = :typeDocumentCommercial and x.visible = :visible';
  443.         $parameters = ['typeDocumentCommercial' => TypeDocumentCommercial::AVOIR'visible' => '1'];
  444.         if (array_key_exists('parametres'$param)) {
  445.             if (array_key_exists('client'$param["parametres"]) and $param["parametres"]["client"] > 0) {
  446.                 //$datatable->addJoin('x.client', 'client', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  447.                 $parameters["client"] = $param["parametres"]["client"];
  448.                 if ($where != "") {
  449.                     $where .= " AND ";
  450.                 }
  451.                 $where .= "c.id = :client";
  452.             }
  453.             if (array_key_exists('client'$param["parametres"]) and $param["parametres"]["date_debut"] != "") {
  454.                 $param["parametres"]["date_debut"] = \DateTime::createFromFormat('d/m/Y'$param["parametres"]["date_debut"]);
  455.                 $param["parametres"]["date_debut"]->setTime(000000);
  456.                 $parameters["date_debut"] = $param["parametres"]["date_debut"];
  457.                 if ($where != "") {
  458.                     $where .= " AND ";
  459.                 }
  460.                 $where .= "x.date >= :date_debut";
  461.             }
  462.             if (array_key_exists('client'$param["parametres"]) and $param["parametres"]["date_fin"] != "") {
  463.                 $param["parametres"]["date_fin"] = \DateTime::createFromFormat('d/m/Y'$param["parametres"]["date_fin"]);
  464.                 $param["parametres"]["date_fin"]->setTime(235959);
  465.                 $parameters["date_fin"] = $param["parametres"]["date_fin"];
  466.                 if ($where != "") {
  467.                     $where .= " AND ";
  468.                 }
  469.                 $where .= "x.date <= :date_fin";
  470.             }
  471.         }
  472.         if ($where != '') {
  473.             $datatable->setWhere($where$parameters);
  474.         }
  475.         return $datatable;
  476.     }
  477.     /**
  478.      * @Route("/vente/avoir/grid", name="dtc_avoir_liste_grid")
  479.      */
  480.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  481.     {
  482.         return $this->datatable($request$datatable$translator)->execute();
  483.     }
  484.     /**
  485.      * @Route("/avoir/pdf/{id}", name="dtc_avoir_pdf")
  486.      */
  487.     public function pdfAvoirAction(Request $requestCommande $avoirEntityManagerInterface $emPdf $snappy)
  488.     {
  489.         $societe    $em->getRepository(Societe::class)->find(1);
  490.         $date_Y     date("Y");
  491.         $date_M     date("m");
  492.         $date_D     date("d");
  493.         $date       $date_Y.'/'.$date_M.'/'.$date_D;
  494.         $chemin_pdf 'PDF/AVOIR/'.$date.'/AVOIR-'.$avoir->getReference().'.pdf';
  495.         if (file_exists($chemin_pdf)) {
  496.             unlink($chemin_pdf);
  497.         }
  498.         //return $this->render('GestionComerciale/Facture/template_pdf.html.twig',array('commande'  => $avoir,'societe'  => $societe));
  499.         $restant $request->query->get('restant');
  500.         $footer $this->renderView('FO/PDF/footer_avoir_pagination_pdf.html.twig', ['societe' => $societe'commande' => $avoir]);
  501.         $header $this->renderView('FO/PDF/header_avoir_pdf.html.twig', ['societe' => $societe'commande' => $avoir]);
  502.         //$snappy->setOption('page-size', 'A4');
  503.         //$snappy->setOption('header-html', $header);
  504.         $snappy->setOption('footer-html'$footer);
  505.         $snappy->setOption('header-spacing'"4");
  506.         $snappy->setOption('footer-spacing'"3");
  507.         $snappy->setOption('margin-left',0);
  508.         $snappy->setOption('margin-right',0);
  509.         $snappy->setOption('disable-smart-shrinking'true);
  510.         //$snappy->setOption('print-media-type', false );
  511.         $snappy->setOption('page-height'"297");
  512.         $snappy->setOption('page-width'"210");
  513.         $snappy->setOption('enable-local-file-access'true);
  514.         $donnees = [
  515.             'commande' => $avoir,
  516.             'societe'  => $societe,
  517.         ];
  518.         if ($avoir->getMultiBL() == 1) {
  519.             $repo_commande $em->getRepository(Commande::class);
  520.             $bls           $repo_commande->findByFacture($avoir->getId());
  521.             $donnees['bls'] = $bls;
  522.             $template 'GestionComerciale/Avoir/template_pdf_multi_bl.html.twig';
  523.         } else {
  524.             $template 'GestionComerciale/Avoir/template_pdf.html.twig';
  525.         }
  526.         $donnees['afficher_restant'] = $restant;
  527.         $snappy->generateFromHtml(
  528.             $this->renderView(
  529.                 $template,
  530.                 $donnees
  531.             ),
  532.             $chemin_pdf
  533.         );
  534.         return $this->render('FO/PDF/conteneur_pdf.html.twig', [
  535.             'objet'      => $avoir,
  536.             'chemin_pdf' => '/'.$chemin_pdf,
  537.             'visualiser' => $request->query->get('visualiser'),
  538.         ]);
  539.     }
  540.     /**
  541.      * @Route("", name="")
  542.      */
  543.     public function _pdfAvoirAction(Request $requestCommande $avoirEntityManagerInterface $emPdf $snappy)
  544.     {
  545.         $societe    $em->getRepository(Societe::class)->find(1);
  546.         $date_Y     date("Y");
  547.         $date_M     date("m");
  548.         $date_D     date("d");
  549.         $date       $date_Y.'/'.$date_M.'/'.$date_D;
  550.         $chemin_pdf 'PDF/AVOIR/'.$date.'/AVOIR-'.$avoir->getReference().'.pdf';
  551.         if (file_exists($chemin_pdf)) {
  552.             unlink($chemin_pdf);
  553.         }
  554.         //return $this->render('GestionComerciale/Avoir/template_pdf.html.twig',array('commande'  => $avoir,'societe'  => $societe));
  555.         $footer $this->renderView('FO/PDF/footer_pdf.html.twig', ['societe' => $societe]);
  556.         $snappy->setOption('footer-html'$footer);
  557.         $snappy->setOption('margin-bottom'"25");
  558.         $snappy->setOption('margin-top'"10");
  559.         $snappy->generateFromHtml(
  560.             $this->renderView(
  561.                 'GestionComerciale/Avoir/template_pdf.html.twig',
  562.                 [
  563.                     'commande' => $avoir,
  564.                     'societe'  => $societe,
  565.                 ]
  566.             ),
  567.             $chemin_pdf
  568.         );
  569.         return new RedirectResponse("/".$chemin_pdf);
  570.     }
  571. }