src/Controller/Articles/ConditionVenteController.php line 521

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Articles;
  3. use App\Entity\Articles\Article;
  4. use App\Entity\Articles\ArticleCategorie;
  5. use App\Entity\Articles\ArticleComposant;
  6. use App\Entity\Articles\Categorie;
  7. use App\Entity\Articles\ConditionVente;
  8. use App\Entity\Fournisseurs\Fournisseur;
  9. use App\Form\Articles\ConditionVenteType;
  10. use App\Form\Articles\SupprimerConditionVenteType;
  11. use App\Library\Datatable\Util\Datatable;
  12. use App\Security\Voter\EntityVoter;
  13. use Doctrine\ORM\EntityManagerInterface;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\HttpFoundation\JsonResponse;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\Routing\Annotation\Route;
  19. use Symfony\Component\Validator\Validator\ValidatorInterface;
  20. use Symfony\Contracts\Translation\TranslatorInterface;
  21. class ConditionVenteController extends AbstractController
  22. {
  23.     /**
  24.      * @Route("", name="")
  25.      */
  26.     public function getPrixArticleConditionVenteAction(Fournisseur $fournisseurArticle $article)
  27.     {
  28.         $prix "";
  29.         foreach ($article->getConditionsAchat() as $c) {
  30.             //echo "<div>TEST ==> ".$fournisseur->getId()." ::: </div>";
  31.             if ($fournisseur->getId() == $c->getFournisseur()->getId()) {
  32.                 $prix $c->getPrixAchatNet();
  33.                 $prix number_format($prix2'.''&nbsp;');
  34.                 $prix .= "&nbsp;&euro;";
  35.             }
  36.         }
  37.         return new JsonResponse(['prix' => $prix]);
  38.     }
  39.     /**
  40.      * @Route("/condition-vente/nouveau/{id}/{type}", name="dtc_condition_vente_ajouter")
  41.      */
  42.     public function ajouterAction(Request $request$id$type ""EntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  43.     {
  44.         $titre_modal    $translator->trans("Nouvelle condition de vente");
  45.         $repo_objet     $em->getRepository(Article::class);
  46.         $get            $request->query->all();
  47.         $conditionVente = new ConditionVente();
  48.         $objet $repo_objet->find($id);
  49.         if (is_object($objet)) {
  50.             $conditionVente->setArticle($objet);
  51.             //$conditionVente->setLibelle($objet->getLibelle());
  52.         }
  53.         $user $this->getUser();
  54.         //$conditionVente->setUtilisateur($user);
  55.         $form   $this->createForm(ConditionVenteType::class, $conditionVente);
  56.         $errors "";
  57.         $form->handleRequest($request);
  58.         if ($form->isSubmitted()) {
  59.             if ($form->isValid()) {
  60.                 if ($type == 'article') {
  61.                     $repo_objet $em->getRepository(Article::class);
  62.                     $objet      $repo_objet->find($id);
  63.                     $url $this->generateUrl('dtc_article_modifier', ['id' => $objet->getId(), 'tab' => 'condVente']);
  64.                 }
  65.                 $em->persist($conditionVente);
  66.                 $em->persist($objet);
  67.                 $em->flush();
  68.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  69.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],
  70.                                             200,
  71.                                             ['Content-Type' => 'application/json']);
  72.                 } else {
  73.                     $this->addFlash('notice'$translator->trans('Condition de vente ajoutée avec succès !'));
  74.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  75.                 }
  76.             } else {
  77.                 $errors $validator->validate($conditionVente);
  78.                 $rendu  $this->renderView(
  79.                     'Articles/ConditionVente/ajouter.html.twig',
  80.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'conditionVente' => $conditionVente]
  81.                 );
  82.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  83.             }
  84.         }
  85.         $rendu $this->renderView(
  86.             'Articles/ConditionVente/ajouter.html.twig',
  87.             ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'conditionVente' => $conditionVente]
  88.         );
  89.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  90.         //return $this->render('Articles/ConditionVente/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type));
  91.     }
  92.     /**
  93.      * @Route("/condition-vente/modifier/{objet}/{id}/{type}", name="dtc_condition_vente_modifier")
  94.      */
  95.     public function modifierAction(Request            $requestConditionVente $objet$id$typeEntityManagerInterface $emTranslatorInterface $translator,
  96.                                    ValidatorInterface $validator
  97.     ) {
  98.         $conditionVente $objet;
  99.         $titre_modal    $translator->trans("Modifier la condition de vente");
  100.         $get            $request->query->all();
  101.         $user           $this->getUser();
  102.         // $conditionVente->setUtilisateur($user);
  103.         $form   $this->createForm(ConditionVenteType::class, $conditionVente);
  104.         $errors "";
  105.         $form->handleRequest($request);
  106.         if ($form->isSubmitted()) {
  107.             $droit $this->isGranted(EntityVoter::UPDATE,ConditionVente::class);
  108.             /*
  109.             if(!$droit) {
  110.                 $rendu = $this->renderView('Articles/ConditionVente/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type,'objet'=>$objet));
  111.                 return new Response(json_encode(array('rendu'=>$rendu,'valide'=>'0','url'=>'','titre'=>$titre_modal)), 200, array('Content-Type'=>'application/json'));
  112.             }
  113.             */
  114.             if ($form->isValid()) {
  115.                 if ($type == 'article') {
  116.                     $repo_objet $em->getRepository(Article::class);
  117.                     $article    $repo_objet->find($id);
  118.                     $url        $this->generateUrl('dtc_article_modifier', ['id' => $article->getId(), 'tab' => 'condVente']);
  119.                 }
  120.                 if ($type == 'fournisseur') {
  121.                     $url $this->generateUrl('dtc_fournisseur_modifier', ['id' => $id'tab' => 'conditions']);
  122.                 }
  123.                 if ($type == 'commandeFournisseur') {
  124.                     $url $this->generateUrl('dtc_commande_fournisseur_modifier', ['id' => $id]);
  125.                 }
  126.                 $em->persist($conditionVente);
  127.                 $em->flush();
  128.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  129.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],
  130.                                             200,
  131.                                             ['Content-Type' => 'application/json']);
  132.                 } else {
  133.                     $this->addFlash('notice'$translator->trans('Condition de vente modifiée avec succès !'));
  134.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  135.                 }
  136.             } else {
  137.                 $errors $validator->validate($conditionVente);
  138.                 $rendu  $this->renderView(
  139.                     'Articles/ConditionVente/ajouter.html.twig',
  140.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet'conditionVente' => $conditionVente]
  141.                 );
  142.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  143.             }
  144.         }
  145.         $rendu $this->renderView(
  146.             'Articles/ConditionVente/ajouter.html.twig',
  147.             ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet'conditionVente' => $conditionVente]
  148.         );
  149.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  150.     }
  151.     /**
  152.      * @Route("/condition-vente/supprimer/{objet}/{id}/{type}", name="dtc_condition_vente_supprimer")
  153.      */
  154.     public function supprimerAction(Request $requestConditionVente $objet$id$typeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  155.     {
  156.         $conditionVente $objet;
  157.         $titre_modal    $translator->trans("Demande de confirmation");
  158.         $user           $this->getUser();
  159.         $get            $request->query->all();
  160.         $form           $this->createForm(SupprimerConditionVenteType::class, $conditionVente);
  161.         $errors         "";
  162.         $form->handleRequest($request);
  163.         if ($form->isSubmitted()) {
  164.             if ($form->isValid()) {
  165.                 $em->remove($conditionVente);
  166.                 $em->flush();
  167.                 if ($type == 'article') {
  168.                     $url $this->generateUrl('dtc_article_modifier', ['id' => $id'tab' => 'condVente']);
  169.                 }
  170.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  171.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],
  172.                                             200,
  173.                                             ['Content-Type' => 'application/json']);
  174.                 } else {
  175.                     $this->addFlash('notice'$translator->trans('Condition de vente supprimée avec succès !'));
  176.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  177.                 }
  178.             } else {
  179.                 $errors $validator->validate($conditionVente);
  180.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  181.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  182.             }
  183.         }
  184.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  185.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  186.     }
  187.     /**
  188.      * @Route("/condition-vente/charger-tableau/{id}/{type}", name="dtc_condition_vente_charger_tableau")
  189.      */
  190.     public function chargerTableauAction(Request $request$id "0"$type "a")
  191.     {
  192.         $rendu $this->renderView('Articles/ConditionVente/charger_tableau.html.twig', ["id" => $id"type" => $type]);
  193.         return new JsonResponse(['rendu' => $rendu]);
  194.     }
  195.     /**
  196.      * @Route("/condition-vente", name="dtc_condition_vente_liste")
  197.      */
  198.     public function listerAction(Request $request$id "0"$type "a"EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  199.     {
  200.         $tableau_class_cellule = [];
  201.         /*
  202.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(0),"visible"=>true);
  203.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(1),"visible"=>true);
  204.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(2),"visible"=>true);
  205.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(3),"visible"=>true);
  206.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(4),"visible"=>true);
  207.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(5),"visible"=>true);
  208.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(6),"visible"=>true);
  209.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(7),"visible"=>true);
  210.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(8),"visible"=>true);
  211.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(9),"visible"=>true);
  212.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(10),"visible"=>true);
  213.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(11),"visible"=>true);
  214.         $tableau_class_cellule[]=array("orderable"=> false,"searchable"=> false,"className"=>" colonne_id","targets"=>array(12),"visible"=>true);
  215.         */
  216.         $modal     $request->query->get('modal');
  217.         $articleId $request->query->get('id');
  218.         $qte       $request->query->get('qte');
  219.         if ($type == "article") {
  220.             $repo_objet $em->getRepository(Article::class);
  221.         }
  222.         if ($type == "fournisseur") {
  223.             $repo_objet $em->getRepository(Fournisseur::class);
  224.         }
  225.         $objet $repo_objet->find($id);
  226.         if ($articleId != '') {
  227.             $article $repo_objet->find($articleId);
  228.             if ($modal == && is_object($article)) {
  229.                 $titre_modal $translator->trans('Conditions de vente');
  230.                 $this->datatableArticle($article$type$datatable$translator);
  231.                 $rendu $this->renderView(
  232.                     'Articles/ConditionVente/lister.html.twig',
  233.                     ['tableauClassColonne' => $tableau_class_cellule"id" => $articleId"type" => $type'qte' => $qte]
  234.                 );
  235.                 //$rendu = $this->renderView('FO/Supprimer/supprimer.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type,'objet'=>$objet));
  236.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  237.             }
  238.         }
  239.         if (is_object($objet)) {
  240.             if ($type == "article") {
  241.                 $tableau_class_cellule   = [];
  242.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id""targets" => [0], "visible" => false];
  243.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-left""targets" => [1], "visible" => true];
  244.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-center""targets" => [2], "visible" => true];
  245.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-center""targets" => [3], "visible" => true];
  246.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-right""targets" => [4], "visible" => true];
  247.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-center""targets" => [5], "visible" => true];
  248.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-center""targets" => [6], "visible" => true];
  249.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id ""targets" => [7], "visible" => true];
  250.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id ""targets" => [8], "visible" => true];
  251.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-center""targets" => [9], "visible" => true];
  252.                 $tableau_class_cellule[] = ["orderable" => false"searchable" => false"className" => "colonne_id""targets" => [10], "visible" => true];
  253.                 $this->datatableArticle($objet$type$datatable$translator);
  254.             } elseif ($type == "fournisseur") {
  255.                 $tableau_class_cellule   = [];
  256.                 $tableau_class_cellule[] = ["searchable" => false"className" => "visible_export colonne_id""targets" => [0], "visible" => true];
  257.                 $tableau_class_cellule[] = ["searchable" => false"className" => "visible_export colonne_id""targets" => [1], "visible" => true];
  258.                 $tableau_class_cellule[] = ["searchable" => false"className" => "visible_export colonne_id""targets" => [2], "visible" => true];
  259.                 $tableau_class_cellule[] = ["searchable" => false"className" => "visible_export colonne_id""targets" => [3], "visible" => true];
  260.                 $tableau_class_cellule[] = ["searchable" => false"className" => "visible_export colonne_id""targets" => [4], "visible" => true];
  261.                 $tableau_class_cellule[] = ["searchable" => false"className" => "visible_export colonne_id""targets" => [5], "visible" => true];
  262.                 $tableau_class_cellule[] = ["searchable" => false"className" => "visible_export colonne_id""targets" => [6], "visible" => true];
  263.                 $tableau_class_cellule[] = ["searchable" => false"className" => "visible_export colonne_id""targets" => [7], "visible" => true];
  264.                 $tableau_class_cellule[] = ["searchable" => false"className" => "visible_export colonne_id""targets" => [8], "visible" => true];
  265.                 $tableau_class_cellule[] = ["searchable" => false"className" => "visible_export colonne_id""targets" => [9], "visible" => true];
  266.                 $tableau_class_cellule[] = ["orderable" => false"className" => "colonne_id""targets" => [10], "visible" => true];
  267.                 $this->datatableFournisseur($objet$type$datatable$translator);
  268.             }
  269.             return $this->render('Articles/ConditionVente/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type]);
  270.         } else {
  271.             $this->datatable($datatable$translator);
  272.             return $this->render('Articles/ConditionVente/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type]);
  273.         }
  274.     }
  275.     /**
  276.      * set datatable configs
  277.      *
  278.      * @return \App\Library\Datatable\Util\Datatable
  279.      */
  280.     private function datatable(Datatable $datatableTranslatorInterface $translator)
  281.     {
  282.         $datatable->setDatatableId('dta-condition-vente')
  283.                   ->setEntity(ConditionVente::class, "x")
  284.                   ->setFields(
  285.                       [
  286.                           $translator->trans("ID")      => 'x.id',
  287.                           $translator->trans("Libellé") => 'x.libelle',
  288.                           $translator->trans("Mini")    => 'x.debut',
  289.                           $translator->trans("Maxi")    => 'x.fin',
  290.                           $translator->trans("Prix")    => 'x.prix',
  291.                           //$translator->trans("Libelle") =>  'x.libelle',
  292.                           $translator->trans("Actions") => 'x.id',
  293.                           "_identifier_"                => 'x.id',
  294.                       ]
  295.                   )
  296.             //->addJoin('x.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  297.             /*->setWhere(
  298.                     $type_jointure.' = :objet',
  299.                     array('objet' => $objet)
  300.                )
  301.               */
  302.                   ->setRenderers(
  303.                 [
  304.                     => [
  305.                         'view'   => 'FO/DataTable/actions.html.twig',
  306.                         'params' => [
  307.                             //'edit_route'  => 'dtc_garantie_modifier',
  308.                             //'supprimer_route'  => 'dtc_garantie_supprimer',
  309.                             'entite' => 'garantie',
  310.                             'objet'  => ConditionVente::class,
  311.                         ],
  312.                     ],
  313.                 ]
  314.             )
  315.                   ->setOrder("x.id""desc")
  316.                   ->setSearch(true)
  317.                   ->setSearchFields([14]);
  318.         return $datatable;
  319.     }
  320.     /**
  321.      * set datatable configs
  322.      *
  323.      * @return \App\Library\Datatable\Util\Datatable
  324.      */
  325.     private function datatableFournisseur($objet$type ""Datatable $datatableTranslatorInterface $translator)
  326.     {
  327.         $type_jointure 'x.'.$type;
  328.         $datatable->setDatatableId('dta-condition-vente')
  329.                   ->setEntity(ConditionVente::class, "x")
  330.                   ->setFields(
  331.                       [
  332.                           //$translator->trans("ID") =>  'x.id',
  333.                           $translator->trans("Réf")              => 'a.reference',
  334.                           $translator->trans("Réf fourn")        => 'x.referenceFournisseur',
  335.                           $translator->trans("Libellé")          => 'a.libelle',
  336.                           $translator->trans("Qté mini")         => 'x.quantite',
  337.                           $translator->trans("Conditionnement")  => 'x.conditionnement',
  338.                           $translator->trans("Prix achat brut")  => 'x.prixAchatBrut',
  339.                           $translator->trans("Tx remise")        => 'x.tauxRemise',
  340.                           $translator->trans("Tx remise suppl.") => 'x.tauxRemiseSupplementaire',
  341.                           $translator->trans("Prix achat net")   => 'x.prixAchatNet',
  342.                           //$translator->trans("Fournisseur") =>  'f.libelle',
  343.                           //$translator->trans("Devise") =>  "d.name",
  344.                           $translator->trans("Défaut")           => 'x.defaut',
  345.                           $translator->trans("Actions")          => 'x.id',
  346.                           "_identifier_"                         => 'x.id',
  347.                       ]
  348.                   )
  349.                   ->addJoin('x.article''a'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  350.                   ->addJoin('x.fournisseur''f'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  351.                   ->addJoin('f.devise''d'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  352.                   ->setWhere(
  353.                       'x.fournisseur = :objet',
  354.                       ['objet' => $objet]
  355.                   )
  356.                   ->setRenderers(
  357.                       [
  358.                           /*
  359.                           1 => array(
  360.                               'view' => 'FO/DataTable/actions_modal.html.twig',
  361.                               'params' => array(
  362.                                       'edit_route'  => 'dtc_article_modifier',
  363.                                       'id'    => '',
  364.                                       'type'    => $type,
  365.                                       //'entite'    => 'article',
  366.                                       //'objet' => "DTCArticlesBundle:Article",
  367.                                       'typeDocument' => 'article'
  368.                                   ),
  369.                           ),
  370.                            *
  371.                            */
  372.                           => [
  373.                               'view'   => 'FO/DataTable/actions_modal.html.twig',
  374.                               'params' => [
  375.                                   'edit_route' => 'dtc_condition_achat_modifier',
  376.                                   'id'         => $objet->getId(),
  377.                                   'type'       => $type,
  378.                                   'entite'     => 'garantie',
  379.                                   'objet'      => ConditionVente::class,
  380.                                   'affichage'  => 'item',
  381.                               ],
  382.                           ],
  383.                           5  => [
  384.                               'view' => 'FO/DataTable/prix.html.twig',
  385.                           ],
  386.                           8  => [
  387.                               'view' => 'FO/DataTable/prix.html.twig',
  388.                           ],
  389.                           9  => [
  390.                               'view' => 'FO/DataTable/booleen.html.twig',
  391.                           ],
  392.                           10 => [
  393.                               'view'   => 'FO/DataTable/actions_modal.html.twig',
  394.                               'params' => [
  395.                                   'edit_route'      => 'dtc_condition_achat_modifier',
  396.                                   'supprimer_route' => 'dtc_condition_achat_supprimer',
  397.                                   'id'              => $objet->getId(),
  398.                                   'table'           => 'dta-condition-vente',
  399.                                   'type'            => $type,
  400.                                   'entite'          => 'garantie',
  401.                                   'objet'           => ConditionVente::class
  402.                               ,
  403.                                   'width_modal'     => 800,
  404.                               ],
  405.                           ],
  406.                       ]
  407.                   )
  408.                   ->setOrder("x.id""desc")
  409.                   ->setSearch(true)
  410.                   ->setSearchFields([12345678]);
  411.         return $datatable;
  412.     }
  413.     /**
  414.      * set datatable configs
  415.      *
  416.      * @return \App\Library\Datatable\Util\Datatable
  417.      */
  418.     private function datatableArticle($objet$type ""Datatable $datatableTranslatorInterface $translator)
  419.     {
  420.         $type_jointure 'x.'.$type;
  421.         $datatable->setDatatableId('dta-condition-vente')
  422.                   ->setEntity(ConditionVente::class, "x")
  423.                   ->setFields(
  424.                       [
  425.                           $translator->trans("ID")         => 'x.id',
  426.                           $translator->trans("Libellé")    => 'x.libelle',
  427.                           $translator->trans("Mini")       => 'x.debut',
  428.                           $translator->trans("Maxi")       => 'x.fin',
  429.                           $translator->trans("Prix")       => 'x.prix',
  430.                           $translator->trans("Date début") => 'x.dateDebut',
  431.                           $translator->trans("Date fin")   => 'x.dateFin',
  432.                           $translator->trans("Pays")       => 'p.titre',
  433.                           $translator->trans("Catégorie")  => 'c.libelle',
  434.                           $translator->trans("Statut")     => 'x.statut',
  435.                           $translator->trans("Actions") => 'x.id',
  436.                           "_identifier_"                => 'x.id',
  437.                       ]
  438.                   )
  439.                   ->addJoin('x.pays''p'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  440.                   ->addJoin('x.categorieClient''c'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  441.             //->addJoin('f.devise', 'd', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  442.             //->addJoin('x.uniteMesure', 'u', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  443.             /*->setWhere(
  444.                     $type_jointure.' = :objet',
  445.                     array('objet' => $objet)
  446.                )
  447.               */
  448.                   ->setWhere(
  449.                 'x.article = :objet',
  450.                 ['objet' => $objet]
  451.             )
  452.                   ->setRenderers(
  453.                       [
  454.                           4  => [
  455.                               'view'   => 'FO/DataTable/prix.html.twig',
  456.                               'params' => [
  457.                                   'afficher_total' => false,
  458.                               ],
  459.                           ],
  460.                           5  => [
  461.                               'view' => 'FO/DataTable/date.html.twig',
  462.                           ],
  463.                           6  => [
  464.                               'view' => 'FO/DataTable/date.html.twig',
  465.                           ],
  466.                           9  => [
  467.                               'view'   => 'FO/DataTable/statut.html.twig',
  468.                               'params' => [
  469.                                   'edit_route' => 'dtc_condition_vente_statut',
  470.                               ],
  471.                           ],
  472.                           /*
  473.                           0 => array(
  474.                               'view' => 'FO/DataTable/date.html.twig',
  475.                           ),
  476.                       1 => array(
  477.                           'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
  478.                            'params' => array(
  479.                                       'edit_route'    => 'dtc_fournisseur_modifier',
  480.                                       'typeDocument' => 'fournisseur',
  481.                                       'target' => '_blank'
  482.                                   ),
  483.                           ),
  484.                           3 => array(
  485.                               'view' => 'FO/DataTable/prix.html.twig',
  486.                           ),
  487.                           7 => array(
  488.                               'view' => 'FO/DataTable/num2chiffres.html.twig',
  489.                           ),
  490.                           8 => array(
  491.                               'view' => 'FO/DataTable/prix.html.twig',
  492.                           ),
  493.                           10 => array(
  494.                               'view' => 'FO/DataTable/prix.html.twig',
  495.                               'params' => array('conversion'=>'*',
  496.                                   'forceEuro' => 1
  497.                                   )
  498.                           ),
  499.                           15 => array(
  500.                               'view' => 'FO/DataTable/statut.html.twig',
  501.                               'params' => array(
  502.                                   'edit_route' => 'dtc_condition_achat_statut'
  503.                               )
  504.                           ),
  505.                           */
  506.                           10 => [
  507.                               'view'   => 'FO/DataTable/actions_modal.html.twig',
  508.                               'params' => [
  509.                                   'edit_route'      => 'dtc_condition_vente_modifier',
  510.                                   'supprimer_route' => 'dtc_condition_vente_supprimer',
  511.                                   'id'              => $objet->getId(),
  512.                                   'type'            => $type,
  513.                                   'entite'          => 'garantie',
  514.                                   'table'           => 'dta-condition-vente',
  515.                                   'objet'           => ConditionVente::class
  516.                               ,
  517.                                   'width_modal'     => 800,
  518.                               ],
  519.                           ],
  520.                       ]
  521.                   )
  522.                   ->setOrder("x.id""desc")
  523.                   ->setSearch(true)//->setSearchFields(array(1,2))
  524.         ;
  525.         return $datatable;
  526.     }
  527.     /**
  528.      * @Route("/condition-vente/grid/{id}/{type}", name="dtc_condition_vente_liste_grid")
  529.      */
  530.     public function gridAction($id ""$type ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  531.     {
  532.         if ($type == "article") {
  533.             $repo_objet $em->getRepository(Article::class);
  534.         } elseif ($type == "fournisseur") {
  535.             $repo_objet $em->getRepository(Fournisseur::class);
  536.         }
  537.         $objet $repo_objet->find($id);
  538.         if (is_object($objet) and $type == "article") {
  539.             return $this->datatableArticle($objet$type$datatable$translator)->execute();
  540.         } elseif (is_object($objet) and $type == "fournisseur") {
  541.             return $this->datatableFournisseur($objet$type$datatable$translator)->execute();
  542.         } else {
  543.             return $this->datatable($datatable$translator)->execute();
  544.         }
  545.     }
  546.     /**
  547.      * @Route("/condition-vente/statut/{id}", name="dtc_condition_vente_statut")
  548.      */
  549.     public function changeStatutAction(ConditionVente $conditionVenteEntityManagerInterface $em)
  550.     {
  551.         if ($conditionVente->getStatut() == 1) {
  552.             $conditionVente->setStatut(0);
  553.         } else {
  554.             $conditionVente->setStatut(1);
  555.         }
  556.         $em->persist($conditionVente);
  557.         $em->flush();
  558.         $em->refresh($conditionVente);
  559.         $headers = [
  560.             'Content-Type'                 => 'application/json',
  561.             'Access-Control-Allow-Origin'  => '*',
  562.             'Access-Control-Allow-Methods' => 'POST',
  563.         ];
  564.         return new JsonResponse(['data' => '1'], 200$headers);
  565.     }
  566.     /**
  567.      * @Route("/condition-vente/nouveau-ajax", name="dtc_condition_vente_add_ajax")
  568.      */
  569.     public function ajouterAjaxAction(Request $requestEntityManagerInterface $em)
  570.     {
  571.         $refArticle  $request->query->get('refArticle');
  572.         $quantiteMin $request->query->get('quantiteMin');
  573.         $quantiteMax $request->query->get('quantiteMax');
  574.         $prix        $request->query->get('prix');
  575.         $finitions = [];
  576.         if ($this->getParameter('categorie_finitions')) {
  577.             $categorie_finitions $em->getRepository(Categorie::class)->find($this->getParameter('categorie_finitions'));
  578.             $articlesCategories  $em->getRepository(ArticleCategorie::class)->findBy(['categorie' => $categorie_finitions]);
  579.             foreach ($articlesCategories as $articleCategorie) {
  580.                 $finitions[] = $articleCategorie->getArticle();
  581.             }
  582.         }
  583.         $refArray explode('-'$refArticle);
  584.         //$article = $repo_article->getArticleByRef();
  585.         $finition null;
  586.         $ref      '';
  587.         foreach ($finitions as $finitionTmp) {
  588.             $refTmp $refArray[1];
  589.             $pos    strpos($refTmp$finitionTmp->getReference());
  590.             if ($pos !== false) {
  591.                 $refTmp str_replace($finitionTmp->getReference(), ''$refTmp);
  592.                 if (strlen($refTmp) == $pos) {
  593.                     $finition $finitionTmp;
  594.                     $ref      $refTmp;
  595.                     break;
  596.                 }
  597.             }
  598.         }
  599.         if ($ref != '') {
  600.             $ref .= '|';
  601.             if ( ! empty($refArray[2])) {
  602.                 $ref .= $refArray[2];
  603.             }
  604.             $article $em->getRepository(Article::class)->findOneBy(['reference' => $ref]);
  605.             if (is_object($article)) {
  606.                 $conditionVente $em->getRepository(ConditionVente::class)->findOneBy([
  607.                                                                                            'article'  => $article,
  608.                                                                                            'debut'    => $quantiteMin,
  609.                                                                                            'fin'      => $quantiteMax,
  610.                                                                                            'finition' => $finition,
  611.                                                                                        ]);
  612.                 if ( ! is_object($conditionVente)) {
  613.                     $conditionVente = new ConditionVente;
  614.                     $conditionVente->setDebut($quantiteMin);
  615.                     $conditionVente->setFin($quantiteMax);
  616.                     $conditionVente->setArticle($article);
  617.                     $conditionVente->setFinition($finition);
  618.                     $conditionVente->setStatut(true);
  619.                 }
  620.                 $conditionVente->setPrix($prix);
  621.                 $em->persist($conditionVente);
  622.                 $em->flush();
  623.                 if (is_object($finition)) {
  624.                     $articleComposant $em->getRepository(ArticleComposant::class)->findOneBy([
  625.                                                                                                    'articleCompose' => $article,
  626.                                                                                                    'article'        => $finition,
  627.                                                                                                ]);
  628.                     if ( ! is_object($articleComposant)) {
  629.                         $articleComposant = new ArticleComposant();
  630.                         $articleComposant->setArticleCompose($article);
  631.                         $articleComposant->setArticle($finition);
  632.                         $articleComposant->setQuantite(1);
  633.                         $em->persist($articleComposant);
  634.                         $em->flush();
  635.                     }
  636.                 }
  637.             }
  638.         }
  639.         $retour 'ref: '.$ref;
  640.         if (is_object($finition)) {
  641.             $retour .= ' + finition '.$finition->getReference();
  642.         }
  643.         $retour .= ' -> '.$prix;
  644.         if ( ! empty($conditionVente) && is_object($conditionVente)) {
  645.             $retour .= ' / condition de vente ID '.$conditionVente->getId();
  646.         }
  647.         return new JsonResponse(['data' => $retour]);
  648.     }
  649. }