src/Controller/GestionComerciale/BonLivraisonController.php line 39

Open in your IDE?
  1. <?php
  2. namespace App\Controller\GestionComerciale;
  3. use App\Entity\GestionComerciale\Commande;
  4. use App\Entity\GestionComerciale\StatutCommande;
  5. use App\Model\GestionCommerciale\TypeDocumentCommercial;
  6. use App\Form\GestionComerciale\CommandeType;
  7. use App\Library\Datatable\Util\Datatable;
  8. use App\Library\Uploader\Services\FileUploader;
  9. use App\Security\Voter\EntityVoter;
  10. use App\Service\GestionComerciale\EmailService;
  11. use App\Service\Taxes\TaxeService;
  12. use App\Service\Utilisateur\ColonneTableauService;
  13. use Doctrine\ORM\EntityManagerInterface;
  14. use JMS\Serializer\SerializerBuilder;
  15. use Knp\Component\Pager\PaginatorInterface;
  16. use Knp\Snappy\Pdf;
  17. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  18. use Symfony\Component\DependencyInjection\Container;
  19. use Symfony\Component\HttpFoundation\Request;
  20. use Symfony\Component\HttpFoundation\JsonResponse;
  21. use Symfony\Component\HttpFoundation\Response;
  22. use Symfony\Component\Routing\Annotation\Route;
  23. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  24. use Symfony\Component\HttpFoundation\Cookie;
  25. use Symfony\Component\Security\Core\Exception\AccessDeniedException;
  26. use Symfony\Component\Validator\Validator\ValidatorInterface;
  27. use Symfony\Contracts\Translation\TranslatorInterface;
  28. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  29. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  30. class BonLivraisonController extends AbstractController
  31. {
  32.     /**
  33.      * @Route("/compte/bons-livraison", name="dtc_bon_livraison_liste")
  34.      */
  35.     public function listerAction(Request $requestEntityManagerInterface $emDatatable $datatableTranslatorInterface $translatorColonneTableauService $serviceColonneTableau)
  36.     {
  37.         $tableau_class_cellule = array();
  38.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-center""targets" => [0], "visible" => false"orderable" => true];
  39.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-center""targets" => [1],"title"=>'<i style="font-size:1.5em;" class="fa fa-clipboard">'"visible" => true"orderable" => false];
  40.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-left""targets" => [2], "visible" => true"orderable" => false];
  41.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-right""targets" => [3],"title"=>'<i style="font-size:1.5em;" class="fa fa-calendar"> <b>/</b> <i style="" class="fa fa-euro">&nbsp;&nbsp; '"visible" => true"orderable" => false];
  42.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id text-center""targets" => [4],"title"=>'<i style="font-size:1.5em;" class="fa fa-gear">'"visible" => true"orderable" => false];
  43.         $response = new Response();
  44.         $this->datatable($request$em$datatable$translator$response);
  45.         $param $request->query->all();
  46.         return $this->render('GestionComerciale/BonLivraison/lister.html.twig',
  47.             [
  48.                 'tableauClassColonne' => $tableau_class_cellule,
  49.                 'parametres'=> $param,
  50.             ]
  51.             ,$response);
  52.     }
  53.     /**
  54.      * set datatable configs
  55.      *
  56.      * @return \App\Library\Datatable\Util\Datatable
  57.      */
  58.     private function datatable(Request $requestEntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  59.     {
  60.         $user $this->getUser();
  61.         $param $request->query->all();
  62.         $datatable
  63.             ->setDatatableId('dta-bls')
  64.             ->setEntity(Commande::class, "x")
  65.             ->setFields(
  66.                 [
  67.                     $translator->trans("ID")              => 'x.id',
  68.                     'date' => 'x.date',
  69.                     $translator->trans("RÉFÉRENCE")             => 'x.reference',
  70.                     $translator->trans("Total HT")             => 'x.total',
  71.                     $translator->trans("Actions")      => 'x.id',
  72.                     "_identifier_"                     => 'x.id',
  73.                 ]
  74.             )
  75.             //->addJoin('x.transporteur', 't', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  76.             ->addJoin('x.utilisateur''u'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  77.             ->setRenderers(
  78.                 [
  79.                     => [
  80.                         'view' => 'FO/DataTable/type_document_vente.html.twig',
  81.                     ],
  82.                     => [
  83.                         'view' => 'FO/DataTable/reference_document_commercail.html.twig',
  84.                     ],
  85.                     /*
  86.                     2 => [
  87.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  88.                         'params' => [
  89.                             'edit_route' => 'dtc_commande_liste',
  90.                         ],
  91.                     ],
  92.                     */
  93.                     => [
  94.                         'view' => 'FO/DataTable/prix_commande_heure.html.twig',
  95.                     ],
  96.                     => [
  97.                         'view'   => 'FO/DataTable/actions.html.twig',
  98.                         'params' => [
  99.                             'edit_route'                  => 'dtc_bon_livraison_liste',
  100.                             'objet'                       => Commande::class,
  101.                             'deplier'                     => false,
  102.                             'table'                       => "liste_commande",
  103.                         ],
  104.                     ],
  105.                 ]
  106.             )
  107.             ->setMultiple([])
  108.             ->setOrder("x.date""desc")
  109.             ->setSearch(true)
  110.             ->setSearchFields([]);
  111.         $where "x.typeDocumentCommercial = :typeDocumentCommercial and x.client = :client";
  112.         $parameters = ['typeDocumentCommercial' => TypeDocumentCommercial::BL,'client'=>$user->getClient()];
  113.         if (array_key_exists('parametres'$param)) {
  114.             $response = new Response();
  115.             if (array_key_exists('client'$param["parametres"]) and $param["parametres"]["client"] > 0) {
  116.                 //$datatable->addJoin('x.client', 'client', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  117.                 $parameters["client"] = $param["parametres"]["client"];
  118.                 if ($where != "") {
  119.                     $where .= " AND ";
  120.                 }
  121.                 $where .= "c.id = :client";
  122.             }
  123.             if (array_key_exists('date_debut'$param["parametres"]) and $param["parametres"]["date_debut"] != "") {
  124.                 $param["parametres"]["date_debut"] = \DateTime::createFromFormat('d/m/Y'$param["parametres"]["date_debut"]);
  125.                 $param["parametres"]["date_debut"]->setTime(000000);
  126.                 $parameters["date_debut"] = $param["parametres"]["date_debut"];
  127.                 if ($where != "") {
  128.                     $where .= " AND ";
  129.                 }
  130.                 $where .= "x.date >= :date_debut";
  131.             }
  132.             if (array_key_exists('transporteur'$param["parametres"]) and $param["parametres"]["transporteur"] > 0) {
  133.                 //$datatable->addJoin('x.client', 'client', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  134.                 $parameters["transporteur"] = $param["parametres"]["transporteur"];
  135.                 if ($where != "") {
  136.                     $where .= " AND ";
  137.                 }
  138.                 $where .= "t.id = :transporteur";
  139.             }
  140.             if (array_key_exists('date_fin'$param["parametres"]) and $param["parametres"]["date_fin"] != "") {
  141.                 $param["parametres"]["date_fin"] = \DateTime::createFromFormat('d/m/Y'$param["parametres"]["date_fin"]);
  142.                 $param["parametres"]["date_fin"]->setTime(235959);
  143.                 $parameters["date_fin"] = $param["parametres"]["date_fin"];
  144.                 if ($where != "") {
  145.                     $where .= " AND ";
  146.                 }
  147.                 $where .= "x.date <= :date_fin";
  148.             }
  149.         }
  150.         if ($where != '') {
  151.             $datatable->setWhere($where$parameters);
  152.             $qb $datatable->getQueryBuilder()->getDoctrineQueryBuilder();
  153.         }
  154.         return $datatable;
  155.     }
  156.     /**
  157.      * @Route("/compte/bons-livraison/grid", name="dtc_bon_livraison_liste_grid")
  158.      */
  159.     public function gridAction(Request $requestEntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  160.     {
  161.         return $this->datatable($request$em$datatable$translator)->execute();
  162.     }
  163. }