src/Controller/Articles/PrixDegressifController.php line 387

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\Categorie;
  6. use App\Entity\Articles\PrixDegressif;
  7. use App\Entity\Fournisseurs\Fournisseur;
  8. use App\Form\Articles\PrixDegressifType;
  9. use App\Form\Articles\SupprimerPrixDegressifType;
  10. use App\Library\Datatable\Util\Datatable;
  11. use App\Security\Voter\EntityVoter;
  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 PrixDegressifController extends AbstractController
  21. {
  22.     /**
  23.      * @Route("", name="")
  24.      */
  25.     public function getPrixArticlePrixDegressifAction(Fournisseur $fournisseurArticle $article)
  26.     {
  27.         $prix "";
  28.         foreach ($article->getConditionsAchat() as $c) {
  29.             //echo "<div>TEST ==> ".$fournisseur->getId()." ::: </div>";
  30.             if ($fournisseur->getId() == $c->getFournisseur()->getId()) {
  31.                 $prix $c->getPrixAchatNet();
  32.                 $prix number_format($prix2'.''&nbsp;');
  33.                 $prix .= "&nbsp;&euro;";
  34.             }
  35.         }
  36.         return new JsonResponse(['prix' => $prix]);
  37.     }
  38.     /**
  39.      * @Route("/prix-degressif/nouveau/{id}/{type}", name="dtc_prix_degressif_ajouter")
  40.      */
  41.     public function ajouterAction(Request $request$id$type ""EntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  42.     {
  43.         $titre_modal   $translator->trans("Nouveau prix degressif");
  44.         $repo_objet    $em->getRepository(Article::class);
  45.         $get           $request->query->all();
  46.         $prixDegressif = new PrixDegressif();
  47.         $objet $repo_objet->find($id);
  48.         if (is_object($objet)) {
  49.             $prixDegressif->setArticle($objet);
  50.             //$prixDegressif->setLibelle($objet->getLibelle());
  51.         }
  52.         $user $this->getUser();
  53.         //$prixDegressif->setUtilisateur($user);
  54.         $form   $this->createForm(PrixDegressifType::class, $prixDegressif);
  55.         $errors "";
  56.         $form->handleRequest($request);
  57.         if ($form->isSubmitted()) {
  58.             if ($form->isValid()) {
  59.                 if ($type == 'article') {
  60.                     $repo_objet $em->getRepository(Article::class);
  61.                     $objet      $repo_objet->find($id);
  62.                     $url $this->generateUrl('dtc_article_modifier', ['id' => $objet->getId(), 'tab' => 'prixDegressif']);
  63.                 }
  64.                 $em->persist($prixDegressif);
  65.                 $em->persist($objet);
  66.                 $em->flush();
  67.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  68.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],
  69.                                             200,
  70.                                             ['Content-Type' => 'application/json']);
  71.                 } else {
  72.                     $this->addFlash('notice'$translator->trans('Prix dégressif ajouté avec succès !'));
  73.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  74.                 }
  75.             } else {
  76.                 $errors $validator->validate($prixDegressif);
  77.                 $rendu  $this->renderView(
  78.                     'Articles/PrixDegressif/ajouter.html.twig',
  79.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'prixDegressif' => $prixDegressif]
  80.                 );
  81.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  82.             }
  83.         }
  84.         $rendu $this->renderView(
  85.             'Articles/PrixDegressif/ajouter.html.twig',
  86.             ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'prixDegressif' => $prixDegressif]
  87.         );
  88.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  89.         //return $this->render('Articles/PrixDegressif/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type));
  90.     }
  91.     /**
  92.      * @Route("/prix-degressif/modifier/{objet}/{id}/{type}", name="dtc_prix_degressif_modifier")
  93.      */
  94.     public function modifierAction(Request $requestPrixDegressif $objet$id$typeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  95.     {
  96.         $prixDegressif $objet;
  97.         $titre_modal   $translator->trans("Modifier le prix dégressif");
  98.         $get           $request->query->all();
  99.         $user          $this->getUser();
  100.         // $prixDegressif->setUtilisateur($user);
  101.         $form      $this->createForm(PrixDegressifType::class, $prixDegressif);
  102.         $errors    "";
  103.         $form->handleRequest($request);
  104.         if ($form->isSubmitted()) {
  105.             $droit         $this->isGranted(EntityVoter::UPDATEPrixDegressif::class);
  106.             /*
  107.             if(!$droit) {
  108.                 $rendu = $this->renderView('Articles/PrixDegressif/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type,'objet'=>$objet));
  109.                 return new Response(json_encode(array('rendu'=>$rendu,'valide'=>'0','url'=>'','titre'=>$titre_modal)), 200, array('Content-Type'=>'application/json'));
  110.             }
  111.             */
  112.             if ($form->isValid()) {
  113.                 if ($type == 'article') {
  114.                     $repo_objet $em->getRepository(Article::class);
  115.                     $article    $repo_objet->find($id);
  116.                     $url        $this->generateUrl('dtc_article_modifier', ['id' => $article->getId(), 'tab' => 'prixDegressifVente']);
  117.                 }
  118.                 $em->persist($prixDegressif);
  119.                 $em->flush();
  120.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  121.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],
  122.                                             200,
  123.                                             ['Content-Type' => 'application/json']);
  124.                 } else {
  125.                     $this->addFlash('notice'$translator->trans('Prix dégressif modifié avec succès !'));
  126.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  127.                 }
  128.             } else {
  129.                 $errors $validator->validate($prixDegressif);
  130.                 $rendu  $this->renderView(
  131.                     'Articles/PrixDegressif/ajouter.html.twig',
  132.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet'prixDegressif' => $prixDegressif]
  133.                 );
  134.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  135.             }
  136.         }
  137.         $rendu $this->renderView(
  138.             'Articles/PrixDegressif/ajouter.html.twig',
  139.             ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet'prixDegressif' => $prixDegressif]
  140.         );
  141.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  142.     }
  143.     /**
  144.      * @Route("/prix-degressif/supprimer/{objet}/{id}/{type}", name="dtc_prix_degressif_supprimer")
  145.      */
  146.     public function supprimerAction(Request $requestPrixDegressif $objet$id$typeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  147.     {
  148.         $prixDegressif $objet;
  149.         $titre_modal   $translator->trans("Demande de confirmation");
  150.         $user          $this->getUser();
  151.         $get           $request->query->all();
  152.         $form          $this->createFormSupprimerPrixDegressifType::class, $prixDegressif);
  153.         $errors        "";
  154.         $form->handleRequest($request);
  155.         if ($form->isSubmitted()) {
  156.             if ($form->isValid()) {
  157.                 $em->remove($prixDegressif);
  158.                 $em->flush();
  159.                 if ($type == 'article') {
  160.                     $url $this->generateUrl('dtc_article_modifier', ['id' => $id'tab' => 'prixDegressifVente']);
  161.                 }
  162.                 if (array_key_exists('table'$get) && $get["table"] != "") {
  163.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url'type' => 'recharger_datatable''id_datatable' => $get["table"]],
  164.                                             200,
  165.                                             ['Content-Type' => 'application/json']);
  166.                 } else {
  167.                     $this->addFlash('notice'$translator->trans('Prix dégressif supprimé avec succès !'));
  168.                     return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  169.                 }
  170.             } else {
  171.                 $errors $validator->validate($prixDegressif);
  172.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  173.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  174.             }
  175.         }
  176.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  177.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  178.     }
  179.     /**
  180.      * @Route("/prix-degressif/charger-tableau/{id}/{type}", name="dtc_prix_degressif_charger_tableau")
  181.      */
  182.     public function chargerTableauAction(Request $request$id "0"$type "a")
  183.     {
  184.         $rendu $this->renderView('Articles/PrixDegressif/charger_tableau.html.twig', ["id" => $id"type" => $type]);
  185.         return new JsonResponse(['rendu' => $rendu]);
  186.     }
  187.     /**
  188.      * @Route("/prix-degressif", name="dtc_prix_degressif_liste")
  189.      */
  190.     public function listerAction(Request $request$id "0"$type "a"EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator )
  191.     {
  192.         $tableau_class_cellule = [];
  193.         /*
  194.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(0),"visible"=>true);
  195.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(1),"visible"=>true);
  196.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(2),"visible"=>true);
  197.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(3),"visible"=>true);
  198.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(4),"visible"=>true);
  199.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(5),"visible"=>true);
  200.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(6),"visible"=>true);
  201.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(7),"visible"=>true);
  202.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(8),"visible"=>true);
  203.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(9),"visible"=>true);
  204.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(10),"visible"=>true);
  205.         $tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(11),"visible"=>true);
  206.         $tableau_class_cellule[]=array("orderable"=> false,"searchable"=> false,"className"=>" colonne_id","targets"=>array(12),"visible"=>true);
  207.         */
  208.         $modal     $request->query->get('modal');
  209.         $articleId $request->query->get('id');
  210.         $qte       $request->query->get('qte');
  211.         if ($type == "article") {
  212.             $repo_objet $em->getRepository(Article::class);
  213.         }
  214.         if ($type == "fournisseur") {
  215.             $repo_objet $em->getRepository(Fournisseur::class);
  216.         }
  217.         $objet $repo_objet->find($id);
  218.         if ($articleId != '') {
  219.             $article $repo_objet->find($articleId);
  220.             if ($modal == && is_object($article)) {
  221.                 $titre_modal $translator->trans('Prix dégressif');
  222.                 $this->datatableArticle($article$type,$datatable$translator);
  223.                 $rendu $this->renderView(
  224.                     'Articles/PrixDegressif/lister.html.twig',
  225.                     ['tableauClassColonne' => $tableau_class_cellule"id" => $articleId"type" => $type'qte' => $qte]
  226.                 );
  227.                 //$rendu = $this->renderView('FO/Supprimer/supprimer.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type,'objet'=>$objet));
  228.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  229.             }
  230.         }
  231.         if (is_object($objet)) {
  232.             if ($type == "article") {
  233.                 $tableau_class_cellule   = [];
  234.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id""targets" => [0], "visible" => false];
  235.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-left""targets" => [1], "visible" => true];
  236.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-center""targets" => [2], "visible" => true];
  237.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-center""targets" => [3], "visible" => true];
  238.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-right""targets" => [4], "visible" => true];
  239.                 $tableau_class_cellule[] = ["searchable" => true"className" => "visible_export colonne_id text-center""targets" => [5], "visible" => true];
  240.                 $this->datatableArticle($objet$type,  $datatable,  $translator);
  241.             }
  242.             return $this->render('Articles/PrixDegressif/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type]);
  243.         } else {
  244.             $this->datatable$datatable,  $translator);
  245.             return $this->render('Articles/PrixDegressif/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule"id" => $id"type" => $type]);
  246.         }
  247.     }
  248.     /**
  249.      * set datatable configs
  250.      *
  251.      * @return \App\Library\Datatable\Util\Datatable
  252.      */
  253.     private function datatable(Datatable $datatableTranslatorInterface $translator)
  254.     {
  255.         $datatable->setDatatableId('dta-prix-degressif')
  256.                   ->setEntity(PrixDegressif::class, "x")
  257.                   ->setFields(
  258.                       [
  259.                           $translator->trans("ID")           => 'x.id',
  260.                           $translator->trans("Libellé")      => 'x.libelle',
  261.                           $translator->trans("quantité max") => 'x.quantiteMax',
  262.                           $translator->trans("Coefficient")  => 'x.coefficient',
  263.                           //$translator->trans("Libelle") =>  'x.libelle',
  264.                           $translator->trans("Actions")      => 'x.id',
  265.                           "_identifier_"                     => 'x.id',
  266.                       ]
  267.                   )
  268.             //->addJoin('x.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  269.             /*->setWhere(
  270.                     $type_jointure.' = :objet',
  271.                     array('objet' => $objet)
  272.                )
  273.               */
  274.                   ->setRenderers(
  275.                 [
  276.                     => [
  277.                         'view'   => 'FO/DataTable/actions.html.twig',
  278.                         'params' => [
  279.                             //'edit_route'  => 'dtc_garantie_modifier',
  280.                             //'supprimer_route'  => 'dtc_garantie_supprimer',
  281.                             'entite' => 'garantie',
  282.                             'objet'  => PrixDegressif::class,
  283.                         ],
  284.                     ],
  285.                 ]
  286.             )
  287.                   ->setOrder("x.id""desc")
  288.                   ->setSearch(true)
  289.                   ->setSearchFields([14]);
  290.         return $datatable;
  291.     }
  292.     /**
  293.      * set datatable configs
  294.      *
  295.      * @return \App\Library\Datatable\Util\Datatable
  296.      */
  297.     private function datatableArticle($objet$type ""Datatable $datatableTranslatorInterface $translator)
  298.     {
  299.         $type_jointure 'x.'.$type;
  300.         $datatable->setDatatableId('dta-prix-degressif')
  301.                   ->setEntity(PrixDegressif::class, "x")
  302.                   ->setFields(
  303.                       [
  304.                           $translator->trans("ID")           => 'x.id',
  305.                           $translator->trans("Libellé")      => 'x.libelle',
  306.                           $translator->trans("Quantité max") => 'x.quantiteMax',
  307.                           $translator->trans("Coefficient")  => 'x.coefficient',
  308.                           $translator->trans("Date début")   => 'x.dateDebut',
  309.                           $translator->trans("Date fin")     => 'x.dateFin',
  310.                           $translator->trans("Statut")       => 'x.statut',
  311.                           $translator->trans("Actions")      => 'x.id',
  312.                           "_identifier_"                     => 'x.id',
  313.                       ]
  314.                   )
  315.             //->addJoin('x.pays', 'p', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  316.             //->addJoin('f.devise', 'd', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  317.             //->addJoin('x.uniteMesure', 'u', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  318.             /*->setWhere(
  319.                     $type_jointure.' = :objet',
  320.                     array('objet' => $objet)
  321.                )
  322.               */
  323.                   ->setWhere(
  324.                 'x.article = :objet',
  325.                 ['objet' => $objet]
  326.             )
  327.                   ->setRenderers(
  328.                       [
  329.                           => [
  330.                               'view' => 'FO/DataTable/date.html.twig',
  331.                           ],
  332.                           => [
  333.                               'view' => 'FO/DataTable/date.html.twig',
  334.                           ],
  335.                           => [
  336.                               'view'   => 'FO/DataTable/statut.html.twig',
  337.                               'params' => [
  338.                                   'edit_route' => 'dtc_prix_degressif_statut',
  339.                               ],
  340.                           ],
  341.                           /*
  342.                           0 => array(
  343.                               'view' => 'FO/DataTable/date.html.twig',
  344.                           ),
  345.                       1 => array(
  346.                           'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
  347.                            'params' => array(
  348.                                       'edit_route'    => 'dtc_fournisseur_modifier',
  349.                                       'typeDocument' => 'fournisseur',
  350.                                       'target' => '_blank'
  351.                                   ),
  352.                           ),
  353.                           3 => array(
  354.                               'view' => 'FO/DataTable/prix.html.twig',
  355.                           ),
  356.                           7 => array(
  357.                               'view' => 'FO/DataTable/num2chiffres.html.twig',
  358.                           ),
  359.                           8 => array(
  360.                               'view' => 'FO/DataTable/prix.html.twig',
  361.                           ),
  362.                           10 => array(
  363.                               'view' => 'FO/DataTable/prix.html.twig',
  364.                               'params' => array('conversion'=>'*',
  365.                                   'forceEuro' => 1
  366.                                   )
  367.                           ),
  368.                           15 => array(
  369.                               'view' => 'FO/DataTable/statut.html.twig',
  370.                               'params' => array(
  371.                                   'edit_route' => 'dtc_prixDegressifition_achat_statut'
  372.                               )
  373.                           ),
  374.                           */
  375.                           => [
  376.                               'view'   => 'FO/DataTable/actions_modal.html.twig',
  377.                               'params' => [
  378.                                   'edit_route'      => 'dtc_prix_degressif_modifier',
  379.                                   'supprimer_route' => 'dtc_prix_degressif_supprimer',
  380.                                   'id'              => $objet->getId(),
  381.                                   'type'            => $type,
  382.                                   'entite'          => 'garantie',
  383.                                   'table'           => 'dta-prix-degressif',
  384.                                   'objet'           => PrixDegressif::class
  385.                               ,
  386.                                   'width_modal'     => 800,
  387.                               ],
  388.                           ],
  389.                       ]
  390.                   )
  391.                   ->setOrder("x.id""desc")
  392.                   ->setSearch(true)//->setSearchFields(array(1,2))
  393.         ;
  394.         return $datatable;
  395.     }
  396.     /**
  397.      * @Route("/prix-degressif/grid/{id}/{type}", name="dtc_prix_degressif_liste_grid")
  398.      */
  399.     public function gridAction($id ""$type ""Datatable $datatableTranslatorInterface $translator)
  400.     {
  401.         $em $em;
  402.         if ($type == "article") {
  403.             $repo_objet $em->getRepository(Article::class);
  404.         } elseif ($type == "fournisseur") {
  405.             $repo_objet $em->getRepository(Fournisseur::class);
  406.         }
  407.         $objet $repo_objet->find($id);
  408.         if (is_object($objet) and $type == "article") {
  409.             return $this->datatableArticle($objet$type$datatable$translator)->execute();
  410.         } else {
  411.             return $this->datatable($datatable$translator)->execute();
  412.         }
  413.     }
  414.     /**
  415.      * @Route("/prix-degressif/statut/{id}", name="dtc_prix_degressif_statut")
  416.      */
  417.     public function changeStatutAction(PrixDegressif $prixDegressifEntityManagerInterface $em)
  418.     {
  419.         if ($prixDegressif->getStatut() == 1) {
  420.             $prixDegressif->setStatut(0);
  421.         } else {
  422.             $prixDegressif->setStatut(1);
  423.         }
  424.         $em->persist($prixDegressif);
  425.         $em->flush();
  426.         $em->refresh($prixDegressif);
  427.         $headers = [
  428.             'Content-Type'                 => 'application/json',
  429.             'Access-Control-Allow-Origin'  => '*',
  430.             'Access-Control-Allow-Methods' => 'POST',
  431.         ];
  432.         return new JsonResponse(['data' => '1'], 200$headers);
  433.     }
  434.     /**
  435.      * @Route("/prix-degressif/nouveau-ajax", name="dtc_prix_degressif_add_ajax")
  436.      */
  437.     public function ajouterAjaxAction(Request $requestEntityManagerInterface $em)
  438.     {
  439.         $refArticle  $request->query->get('refArticle');
  440.         $quantiteMax $request->query->get('quantiteMax');
  441.         $coefficient $request->query->get('coefficient');
  442.         $finitions = [];
  443.         if ($this->getParameter('categorie_finitions')) {
  444.             $categorie_finitions $em->getRepository(Categorie::class)->find($this->getParameter('categorie_finitions'));
  445.             $articlesCategories  $em->getRepository(ArticleCategorie::class)->findBy(['categorie' => $categorie_finitions]);
  446.             foreach ($articlesCategories as $articleCategorie) {
  447.                 $finitions[] = $articleCategorie->getArticle();
  448.             }
  449.         }
  450.         $refArray explode('-'$refArticle);
  451.         //$article = $repo_article->getArticleByRef();
  452.         $finition null;
  453.         $ref      '';
  454.         foreach ($finitions as $finitionTmp) {
  455.             $refTmp $refArray[1];
  456.             $pos    strpos($refTmp$finitionTmp->getReference());
  457.             if ($pos !== false) {
  458.                 $refTmp str_replace($finitionTmp->getReference(), ''$refTmp);
  459.                 if (strlen($refTmp) == $pos) {
  460.                     $finition $finitionTmp;
  461.                     $ref      $refTmp;
  462.                     break;
  463.                 }
  464.             }
  465.         }
  466.         if ($ref != '') {
  467.             $ref .= '|';
  468.             if ( ! empty($refArray[2])) {
  469.                 $ref .= $refArray[2];
  470.             }
  471.             $article $em->getRepository(Article::class)->findOneBy(['reference' => $ref]);
  472.             if (is_object($article)) {
  473.                 $prixDegressif $em->getRepository(PrixDegressif::class)->findOneBy([
  474.                                                                                                       'article'     => $article,
  475.                                                                                                       'quantiteMax' => $quantiteMax,
  476.                                                                                                       'finition'    => $finition,
  477.                                                                                      ]);
  478.                 if ( ! is_object($prixDegressif)) {
  479.                     $prixDegressif = new prixDegressif;
  480.                     $prixDegressif->setQuantiteMax($quantiteMax);
  481.                     $prixDegressif->setArticle($article);
  482.                     $prixDegressif->setFinition($finition);
  483.                     $prixDegressif->setStatut(true);
  484.                 }
  485.                 $prixDegressif->setCoefficient($coefficient);
  486.                 $em->persist($prixDegressif);
  487.                 $em->flush();
  488.             }
  489.         }
  490.         $retour 'ref: '.$ref;
  491.         if (is_object($finition)) {
  492.             $retour .= ' + finition '.$finition->getReference();
  493.         }
  494.         $retour .= ' -> '.$coefficient;
  495.         if ( ! empty($prixDegressif) && is_object($prixDegressif)) {
  496.             $retour .= ' / prix degressif ID '.$prixDegressif->getId();
  497.         }
  498.         return new JsonResponse(['data' => $retour]);
  499.     }
  500. }