src/Controller/GestionComerciale/FactureController.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 FactureController extends AbstractController
  31. {
  32.     /**
  33.      * @Route("/compte/facture", name="dtc_facture_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/Facture/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('liste_commande')
  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.statutCommande''s'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  76.             ->setRenderers(
  77.                 [
  78.                     => [
  79.                         'view' => 'FO/DataTable/type_document_vente.html.twig',
  80.                     ],
  81.                     => [
  82.                         'view' => 'FO/DataTable/reference_document_commercail.html.twig',
  83.                     ],
  84.                     /*
  85.                     2 => [
  86.                         'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  87.                         'params' => [
  88.                             'edit_route' => 'dtc_commande_liste',
  89.                         ],
  90.                     ],
  91.                     */
  92.                     => [
  93.                         'view' => 'FO/DataTable/prix_commande_heure.html.twig',
  94.                     ],
  95.                     => [
  96.                         'view'   => 'FO/DataTable/actions.html.twig',
  97.                         'params' => [
  98.                             'edit_route'                  => 'dtc_facture_liste',
  99.                             'objet'                       => Commande::class,
  100.                             'deplier'                     => false,
  101.                             'table'                       => "liste_commande",
  102.                         ],
  103.                     ],
  104.                 ]
  105.             )
  106.             ->setMultiple([])
  107.             ->setOrder("x.date""desc")
  108.             ->setSearch(true)
  109.             ->setSearchFields([]);
  110.         $where "x.typeDocumentCommercial = :typeDocumentCommercial and x.client = :client and s.ordre != :ordre";
  111.         $parameters = ['typeDocumentCommercial' => TypeDocumentCommercial::FACTURE,'ordre'=>0,'client'=>$user->getClient()];
  112.         if (array_key_exists('parametres'$param)) {
  113.             $response = new Response();
  114.             if (array_key_exists('client'$param["parametres"]) and $param["parametres"]["client"] > 0) {
  115.                 //$datatable->addJoin('x.client', 'client', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  116.                 $parameters["client"] = $param["parametres"]["client"];
  117.                 if ($where != "") {
  118.                     $where .= " AND ";
  119.                 }
  120.                 $where .= "c.id = :client";
  121.             }
  122.             if (array_key_exists('date_debut'$param["parametres"]) and $param["parametres"]["date_debut"] != "") {
  123.                 $param["parametres"]["date_debut"] = \DateTime::createFromFormat('d/m/Y'$param["parametres"]["date_debut"]);
  124.                 $param["parametres"]["date_debut"]->setTime(000000);
  125.                 $parameters["date_debut"] = $param["parametres"]["date_debut"];
  126.                 if ($where != "") {
  127.                     $where .= " AND ";
  128.                 }
  129.                 $where .= "x.date >= :date_debut";
  130.             }
  131.             if (array_key_exists('transporteur'$param["parametres"]) and $param["parametres"]["transporteur"] > 0) {
  132.                 //$datatable->addJoin('x.client', 'client', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
  133.                 $parameters["transporteur"] = $param["parametres"]["transporteur"];
  134.                 if ($where != "") {
  135.                     $where .= " AND ";
  136.                 }
  137.                 $where .= "t.id = :transporteur";
  138.             }
  139.             if (array_key_exists('date_fin'$param["parametres"]) and $param["parametres"]["date_fin"] != "") {
  140.                 $param["parametres"]["date_fin"] = \DateTime::createFromFormat('d/m/Y'$param["parametres"]["date_fin"]);
  141.                 $param["parametres"]["date_fin"]->setTime(235959);
  142.                 $parameters["date_fin"] = $param["parametres"]["date_fin"];
  143.                 if ($where != "") {
  144.                     $where .= " AND ";
  145.                 }
  146.                 $where .= "x.date <= :date_fin";
  147.             }
  148.         }
  149.         if ($where != '') {
  150.             $datatable->setWhere($where$parameters);
  151.             $qb $datatable->getQueryBuilder()->getDoctrineQueryBuilder();
  152.         }
  153.         return $datatable;
  154.     }
  155.     /**
  156.      * @Route("/compte/facture/grid", name="dtc_facture_liste_grid")
  157.      */
  158.     public function gridAction(Request $requestEntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  159.     {
  160.         return $this->datatable($request$em$datatable$translator)->execute();
  161.     }
  162. }