src/Controller/GestionComerciale/LCRController.php line 302

Open in your IDE?
  1. <?php
  2. namespace App\Controller\GestionComerciale;
  3. use App\Entity\GestionComerciale\Acompte;
  4. use App\Entity\GestionComerciale\LCR;
  5. use App\Form\GestionComerciale\AcompteLCRType;
  6. use App\Form\GestionComerciale\LCRType;
  7. use App\Form\GestionComerciale\SupprimerLCRType;
  8. use App\Library\Datatable\Util\Datatable;
  9. use App\Security\Voter\EntityVoter;
  10. use App\Service\GestionComerciale\BordereauLCRService;
  11. use App\Service\GestionComerciale\NumerotationDocumentService;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\JsonResponse;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\Routing\Annotation\Route;
  18. use Symfony\Component\Validator\Validator\ValidatorInterface;
  19. use Symfony\Contracts\Translation\TranslatorInterface;
  20. class LCRController extends AbstractController
  21. {
  22.     /**
  23.      * @Route("/vente/lcr/nouveau", name="dtc_lcr_ajouter")
  24.      */
  25.     public function ajouterAction(Request                     $requestEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator,
  26.                                   NumerotationDocumentService $numerotationService
  27.     ) {
  28.         $objet = new LCR();
  29.         $user  $this->getUser();
  30.         $objet->setUtilisateur($user);
  31.         $form   $this->createForm(LCRType::class, $objet);
  32.         $errors "";
  33.         $form->handleRequest($request);
  34.         if ($form->isSubmitted()) {
  35.             //$tokenP = $request->request->get('tokenPicture');
  36.             if ($form->isValid()) {
  37.                 if ($objet->getNomClient() == '') {
  38.                     $nom $objet->getClient()->getPrenom().' '.$objet->getClient()->getNom();
  39.                     $objet->setNomClient($nom);
  40.                 }
  41.                 $objet->setNumTraite($numerotationService->generer($objet));
  42.                 $em->persist($objet);
  43.                 $em->flush();
  44.                 $this->addFlash(
  45.                     'notice',
  46.                     $translator->trans('LCR ajoutée avec succès !')
  47.                 );
  48.                 return $this->redirectToRoute('dtc_lcr_liste');
  49.             } else {
  50.                 $errors $validator->validate($objet);
  51.             }
  52.         }
  53.         return $this->render('GestionComerciale/lcr/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  54.     }
  55.     /**
  56.      * @Route("/vente/lcr/supprimer/multiple", name="dtc_lcr_liste_supprimer")
  57.      */
  58.     public function supprimerMultipleAction(Request $requestEntityManagerInterface $emTranslatorInterface $translatorBordereauLCRService $service_bordereau)
  59.     {
  60.         $url $this->generateUrl('dtc_lcr_liste', []);
  61.         //return new JsonResponse(array('url'=>$url,'valide'=>'1'), 200, array('Content-Type'=>'application/json'));
  62.         $data $request->get('dataTables');
  63.         $ids  $data['actions'];
  64.         $repo $em->getRepository(LCR::class);
  65.         for ($i 0$i count($ids); $i++) {
  66.             $v $repo->find($ids[$i]);
  67.             if (is_object($v)) {
  68.                 if ($v->getTransfertCompta() == false) {
  69.                     $bordereau $v->getBordereauLCR();
  70.                     $em->remove($v);
  71.                     $em->flush();
  72.                     //Recalculer le montant du bordereau
  73.                     if (is_object($bordereau)) {
  74.                         $service_bordereau->calculTotaux($bordereau);
  75.                     }
  76.                 } else {
  77.                     $this->addFlash(
  78.                         'warning',
  79.                         'La LCR '.$v->getNumTraite().' n\'est plus supprimable!'
  80.                     );
  81.                 }
  82.             }
  83.         }
  84.         $em->flush();
  85.         $this->addFlash(
  86.             'notice',
  87.             $translator->trans('LCR supprimées avec succès !')
  88.         );
  89.         return new JsonResponse(['url' => $url'valide' => '1']);
  90.     }
  91.     /**
  92.      * @Route("/vente/lcr/supprimer/{id}", name="dtc_lcr_supprimer")
  93.      */
  94.     public function supprimerAction(Request             $requestLCR $objetEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator,
  95.                                     BordereauLCRService $service_bordereau
  96.     ) {
  97.         $titre_modal $translator->trans("Demande de confirmation");
  98.         $user        $this->getUser();
  99.         $form   $this->createForm(SupprimerLCRType::class, $objet);
  100.         $errors "";
  101.         $form->handleRequest($request);
  102.         if ($form->isSubmitted()) {
  103.             if ($form->isValid()) {
  104.                 if ($objet->getTransfertCompta() == false) {
  105.                     $bordereau $objet->getBordereauLCR();
  106.                     $em->remove($objet);
  107.                     $em->flush();
  108.                     //Recalculer le montant du bordereau
  109.                     if (is_object($bordereau)) {
  110.                         $service_bordereau->calculTotaux($bordereau);
  111.                     }
  112.                     $this->addFlash(
  113.                         'notice',
  114.                         'LCR '.$objet->getNumTraite().' supprimée avec succès !'
  115.                     );
  116.                 } else {
  117.                     $this->addFlash(
  118.                         'warning',
  119.                         'La LCR '.$objet->getNumTraite().' n\'est plus supprimable!'
  120.                     );
  121.                 }
  122.                 $this->addFlash(
  123.                     'notice',
  124.                     $translator->trans('LCR supprimée avec succès !')
  125.                 );
  126.                 $url $this->generateUrl('dtc_lcr_liste', []);
  127.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  128.             } else {
  129.                 $errors $validator->validate($objet);
  130.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $objet->getId(), 'type' => '']);
  131.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  132.             }
  133.         }
  134.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'id' => $objet->getId(), 'type' => '''errors' => $errors]);
  135.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  136.     }
  137.     /**
  138.      * @Route("/vente/lcr/modifier/{id}", name="dtc_lcr_modifier")
  139.      */
  140.     public function modifierAction(Request             $requestLCR $objetEntityManagerInterface $emNumerotationDocumentService $numerotationService,
  141.                                    TranslatorInterface $translatorValidatorInterface $validator
  142.     ) {
  143.         $user $this->getUser();
  144.         $objet->setUtilisateur($user);
  145.         $form   $this->createForm(LCRType::class, $objet);
  146.         $errors "";
  147.         $form->handleRequest($request);
  148.         if ($form->isSubmitted()) {
  149.             $droit $this->isGranted(EntityVoter::UPDATELCR::class);
  150.             if ( ! $droit) {
  151.                 return $this->redirectToRoute('dtc_lcr_modifier', ["id" => $objet->getId()]);
  152.             }
  153.             if ($form->isValid()) {
  154.                 if ($objet->getNumPiece() == '') {
  155.                     $objet->setNumPiece($numerotationService->generer($objet));
  156.                 }
  157.                 $em->persist($objet);
  158.                 $em->flush();
  159.                 $this->addFlash(
  160.                     'notice',
  161.                     $translator->trans('LCR sauvegardée avec succès !')
  162.                 );
  163.                 return $this->redirectToRoute('dtc_lcr_modifier', ['id' => $objet->getId()]);
  164.             } else {
  165.                 $errors $validator->validate($objet);
  166.             }
  167.         }
  168.         return $this->render('GestionComerciale/lcr/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'objet' => $objet]);
  169.     }
  170.     /**
  171.      * @Route("/vente/lcr/modifier-modal/{id}", name="dtc_lcr_modifier_modal")
  172.      */
  173.     public function modifierModalAction(Request      $requestAcompte $objetEntityManagerInterface $emNumerotationDocumentService $numerotationService,
  174.                                         TranslatorInterface $translatorValidatorInterface $validator
  175.     ) {
  176.         $user $this->getUser();
  177.         $objet->setUtilisateur($user);
  178.         $form   $this->createForm(AcompteLCRType::class, $objet);
  179.         $errors "";
  180.         $form->handleRequest($request);
  181.         $titre_modal $translator->trans('Modification règlement LCR');
  182.         if ($form->isSubmitted()) {
  183.             $droit $this->isGranted(EntityVoter::UPDATEAcompte::class);
  184.             if ( ! $droit) {
  185.                 $rendu $this->renderView(
  186.                     'GestionComerciale/Reglement/ajouter-lcr.html.twig',
  187.                     ['form' => $form->createView(), 'errors' => $errors'id' => '''type' => '''objet' => $objet]
  188.                 );
  189.                 return new Response(json_encode(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]));
  190.             }
  191.             if ($form->isValid()) {
  192.                 if ($objet->getNumPiece() == '') {
  193.                     $objet->setNumPiece($numerotationService->generer($objet));
  194.                 }
  195.                 $em->persist($objet);
  196.                 $em->flush();
  197.                 $this->addFlash(
  198.                     'notice',
  199.                     $translator->trans('LCR sauvegardée avec succès !')
  200.                 );
  201.                 $url $this->generateUrl('dtc_reglement_remise_banque_liste');
  202.                 //return $this->redirectToRoute('dtc_lcr_modifier', array('id'=>$objet->getId()));
  203.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  204.             } else {
  205.                 $errors $validator->validate($objet);
  206.             }
  207.         }
  208.         //return $this->render('GestionComerciale/lcr/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'objet'=>$objet));
  209.         $rendu $this->renderView(
  210.             'GestionComerciale/Reglement/ajouter-lcr.html.twig',
  211.             ['form' => $form->createView(), 'errors' => $errors'id' => '''type' => '''objet' => $objet]
  212.         );
  213.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  214.     }
  215.     /**
  216.      * @Route("/vente/lcr", name="dtc_lcr_liste")
  217.      */
  218.     public function listerAction(Request $request$bordereauId ''Datatable $datatableTranslatorInterface $translator)
  219.     {
  220.         $tableau_class_cellule[] = ["className" => "colonne_id""targets" => [0], "visible" => true"orderable" => false];
  221.         /*
  222.        $tableau_class_cellule[]=array("className"=>"colonne_id","targets"=>array(1),"visible"=>$serviceColonneTableau->getColonneUtilisateur("DTCGestionComercialeBundle:ModeReglement","id"));
  223.        $tableau_class_cellule[]=array("className"=>"colonne_id","targets"=>array(2),"visible"=>$serviceColonneTableau->getColonneUtilisateur("DTCGestionComercialeBundle:ModeReglement","libelle"));
  224.          *
  225.          */
  226.         $this->datatable($bordereauId$datatable$translator);
  227.         if ($bordereauId == '') {
  228.             return $this->render('GestionComerciale/lcr/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule]);
  229.         } else {
  230.             return $this->render('GestionComerciale/lcr/listerByBordereau.html.twig', ['tableauClassColonne' => $tableau_class_cellule'bordereauId' => $bordereauId]);
  231.         }
  232.     }
  233.     /**
  234.      * set datatable configs
  235.      *
  236.      * @return \App\Library\Datatable\Util\Datatable
  237.      */
  238.     private function datatable($bordereauId ''Datatable $datatableTranslatorInterface $translator)
  239.     {
  240.         $datatable->setEntity(LCR::class, "x")
  241.                   ->setFields(
  242.                       [
  243.                           $translator->trans("ID")        => 'x.id',
  244.                           $translator->trans("Date")      => 'x.date',
  245.                           $translator->trans("Echéance")  => 'x.dateEcheance',
  246.                           $translator->trans("N° traite") => "x.numTraite",
  247.                           $translator->trans("N° pièce")  => 'fa.reference',
  248.                           'Client'                        => 'c.id',
  249.                           'Montant'                       => 'x.montant',
  250.                           'Choix Banque'                  => 'cbs.id',
  251.                           $translator->trans("Actions")   => 'x.id',
  252.                           "_identifier_"                  => 'x.id',
  253.                       ]
  254.                   )
  255.                   ->addJoin('x.client''c'\Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
  256.                   ->addJoin('x.compteBancaireSociete''cbs'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  257.                   ->addJoin('x.factures''fa'\Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
  258.                   ->setOrder("x.id""desc")
  259.                   ->setSearch(true)
  260.                   ->setSearchFields([123]);
  261.         $params   = [
  262.             'edit_route' => 'dtc_lcr_modifier',
  263.             'objet'      => LCR::class,
  264.         ];
  265.         $multiple = [];
  266.         if ($bordereauId == '') {
  267.             $multiple                  = [
  268.                 'generer-bordereau' => [
  269.                     'title' => 'Générer les bordereaux',
  270.                     'route' => 'dtc_borderau_lcr_liste_ajouter',
  271.                 ],
  272.                 'delete'            => [
  273.                     'title' => 'Supprimer',
  274.                     'route' => 'dtc_lcr_liste_supprimer',
  275.                 ],
  276.             ];
  277.             $params['supprimer_route'] = 'dtc_lcr_supprimer';
  278.             $datatable->setWhere('x.bordereauLCR is null');
  279.         } else {
  280.             $redirection $this->generateUrl('dtc_bordereau_lcr_modifier', ['id' => 3'tab' => 'lcr']);
  281.             $multiple    = [
  282.                 'aucune-action' => [
  283.                     'title' => 'Non disponible',
  284.                     'route' => 'dtc_fo_datatable_multiple_aucune_action',
  285.                 ],
  286.             ];
  287.             $datatable->setWhere('x.bordereauLCR = '.$bordereauId);
  288.         }
  289.         $datatable->setRenderers(
  290.             [
  291.                 => [
  292.                     'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  293.                     'params' => [
  294.                         'edit_route' => 'dtc_lcr_modifier',
  295.                     ],
  296.                 ],
  297.                 => ['view' => 'FO/DataTable/date.html.twig'],
  298.                 => ['view' => 'FO/DataTable/date.html.twig'],
  299.                 => [
  300.                     'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  301.                     'params' => [
  302.                         'edit_route' => 'dtc_lcr_modifier',
  303.                     ],
  304.                 ],
  305.                 => [
  306.                     'view'   => 'FO/DataTable/avec_lien_edit_route.html.twig',
  307.                     'params' => [
  308.                         'edit_route' => 'dtc_facture_afficher',
  309.                         'id'         => 'factures',
  310.                     ],
  311.                 ],
  312.                 => ['view' => 'FO/DataTable/client.html.twig'],
  313.                 => ['view' => 'FO/DataTable/prix.html.twig'],
  314.                 => ['view' => 'FO/DataTable/choix-banque-select.html.twig'],
  315.                 => [
  316.                     'view'   => 'FO/DataTable/actions.html.twig',
  317.                     'params' => $params,
  318.                 ],
  319.             ]
  320.         )
  321.                   ->setMultiple(
  322.                       $multiple
  323.                   );
  324.         return $datatable;
  325.     }
  326.     /**
  327.      * @Route("/vente/lcr/grid", name="dtc_lcr_liste_grid")
  328.      */
  329.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  330.     {
  331.         $bordereauId $request->query->get('bordereauId');
  332.         return $this->datatable($bordereauId$datatable$translator)->execute();
  333.     }
  334. }