src/Controller/stock/CommandeController.php line 3054

Open in your IDE?
  1. <?php
  2. namespace App\Controller\stock;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Contracts\Translation\TranslatorInterface;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use App\Entity\user\Module;
  7. use App\Entity\user\Utilisateur;
  8. use App\Form\stock\CommandeTmpType;
  9. use App\Form\stock\LigneCommandeTmpType;
  10. use App\Entity\stock\CommandeTmp;
  11. use App\Entity\stock\Commande;
  12. use App\Entity\stock\Produit;
  13. use App\Entity\stock\InfoLivrer;
  14. use App\Entity\stock\ChauffeurLivraison;
  15. use App\Entity\stock\Facture;
  16. use App\Entity\stock\LigneCommandeTmp;
  17. use App\Entity\stock\LigneCommande;
  18. use App\Entity\stock\PrixRigueur;
  19. use App\Services\user\LoginManager;
  20. use App\Services\stock\OperationManager;
  21. use App\Types\user\TypeEtat;
  22. use Symfony\Component\HttpFoundation\Request;
  23. use App\Types\user\TypeFournisseur;
  24. use Builder\Excel\CommandeExcelBuilder;
  25. use App\Builder\Excel\CommandeByCategorieExcelBuilder;
  26. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  27. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  28. use App\ControllerModel\user\paramUtilTrait;
  29. use App\Types\user\TypeProfil;
  30. use App\Repository\user\ConnexionRepository;
  31. use App\Repository\user\AbonneRepository;
  32. use App\Repository\user\ActionRepository;
  33. use App\Services\param\ParametreManager;
  34. use App\Repository\param\ParamRepository;
  35. use App\Repository\user\ModuleRepository;
  36. use App\Repository\user\ControleurRepository;
  37. use App\Repository\user\ProfilRepository;
  38. use App\Repository\user\UtilisateurRepository;
  39. use App\Repository\cms\TemplateRepository;
  40. use App\Repository\prod\GroupementRepository;
  41. use App\Repository\stock\CategorieProduitRepository;
  42. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  43. use App\Repository\stock\BrouillardCaisseRepository;
  44. use App\Entity\user\Controleur;
  45. use App\Repository\stock\CaisseRepository;
  46. use App\Repository\stock\VilleRepository;
  47. use App\Repository\stock\ProduitRepository;
  48. use App\Repository\stock\TypeOperationRepository;
  49. use App\Repository\client\ClientRepository;
  50. use App\Repository\stock\TableRepository;
  51. use App\Repository\stock\SurPlusRepository;
  52. use App\Entity\stock\Chauffeur;
  53. use App\Repository\stock\CommandeRepository;
  54. use App\Repository\stock\FournisseurRepository;
  55. use App\Repository\stock\PrixRigeurRepository;
  56. use App\Repository\stock\CommandeTmpRepository;
  57. use App\Repository\stock\LigneCommandeTmpRepository;
  58. use App\Repository\stock\CibleRepository ;
  59. use App\Repository\stock\CaracteristiquePrixRepository;
  60. use App\Entity\stock\TableMange;
  61. use App\Entity\stock\Fournisseur;
  62. use App\Repository\track\LocalisationRepository;
  63. use App\Repository\prod\ProducteurRepository;
  64. use App\Repository\stock\CritereRepository ;
  65. use App\Repository\stock\TypeCritereRepository;
  66. use App\Repository\stock\ChauffeurRepository;
  67. use App\Repository\stock\InfoCritereRepository;
  68. use App\Repository\stock\LivrerRepository;
  69. use App\Repository\stock\InfoLivrerRepository;
  70. use App\Repository\stock\PrixRigueurRepository;
  71. use App\Repository\stock\LigneCommandeRepository;
  72. class CommandeController extends AbstractController {
  73.     use paramUtilTrait;
  74.    // use \App\Controller\stockModel\stockTrait;
  75.     protected $nom 'CommandeController';
  76.     protected $description 'Controlleur qui gère les commandes';
  77.     protected $response;
  78.     protected $logMessage ' [ CommandeController ] ';
  79.     public function __construct(TranslatorInterface $translator) {
  80.         $this->response = new Response();
  81.         $this->response->headers->addCacheControlDirective('no-cache'true);
  82.         $this->response->headers->addCacheControlDirective('max-age'0);
  83.         $this->response->headers->addCacheControlDirective('must-revalidate'true);
  84.         $this->response->headers->addCacheControlDirective('no-store'true);
  85.         $this->moduleTitre Module::MOD_GEST_COM;
  86.         $this->moduleDesc Module::MOD_GEST_COM_DESC;
  87.         $this->logMessage " [ CommandeController ] ";
  88.         $this->description "Controlleur qui gère les commandes ";
  89.         $this->translator $translator;
  90.     }
  91.     /**
  92.      * Methode s'occupant de l'ajout d'une commande.
  93.      *
  94.      * @author armand.tevi@gmail.com
  95.      * @copyright ADMIN 2015
  96.      *
  97.      * @version 1
  98.      *
  99.      * @return twig d'ajout d'un abonne ajouterproduit.html.twig 
  100.      */
  101.     public function ajouterCommandeAction(Request $request$typeCom$ref$type,LoginManager $loginManager,OperationManager $operationManagerParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  102.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,TemplateRepository $templateRepository,
  103.     FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ) {
  104.            /*
  105.          * Nom de l'action en cours
  106.          */
  107.         $nomAction __FUNCTION__;
  108.         /*
  109.          * Description de l'action de l'action en cours
  110.          */
  111.         $descAction "Ajouter une commande (Faire une avance à un colleteur) ";
  112.          /*
  113.          * Informations de session
  114.          */
  115.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  116.         $locale ='fr';
  117.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc$loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository );
  118.         if($valRetour==1){
  119.             return $this->redirect($this->generateUrl('app_logout'));
  120.         }elseif($valRetour==2){
  121.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  122.         }
  123.         /*
  124.          * Création du formulaire par rapport a l'entité commandetmp
  125.          */
  126.         $em $this->getDoctrine()->getManager();
  127.         $user $utilisateurRepository->find($sessionData['id']);
  128.         $uneCommande = new CommandeTmp();
  129.         
  130.         $d = new \DateTime();
  131.         $an $d->format('Y');
  132.         $m $d->format('m');
  133.         $j $d->format('d');
  134.         $refCommande $this->getRefCommande($em, (int) $typeCom$an$m$entite 'COMMANDE'$taille 5$user->getId());
  135.         $prod $sessionData["produit_id"];
  136.         $uneCommande->setCodeCommande($refCommande);
  137.         $form $this->createForm(CommandeTmpType::class, $uneCommande);
  138.         /*
  139.          * Declaration des principales methodes Symfony2 pour traiter les informations
  140.          */
  141.         $this->request $request;
  142.         $this->session $this->get('session');
  143.         $this->flashMessage $this->get('session')->getFlashBag();
  144.         //Recuperation de la liste des Produits que Symfony 2 accepte
  145.         //$listeFournisseur = $em->getRepository($this->stockBundle.'Fournisseur')->findBy(array('etatFournisseur'=>1));        
  146.         /*
  147.          * Donnée à afficher sur le twig
  148.          */
  149.         //Recuperation des informations concernant le client
  150.         $infoClient =array();
  151.         $prixEnCours $prixRigueurRepository->getActifPrixRigueur();
  152.         if ($this->request->isMethod('POST')) {
  153.             $form->handleRequest($this->request);
  154.             $refc $request->request->get('refclt');
  155.             $idFournisseur $request->request->get('idFournisseur');
  156.             $tauxechange $request->request->get('tauxechange');
  157.             // var_dump($infoClient);exit;
  158.             /*
  159.              * Vérifier si les élément du formulaire sont valides
  160.              */
  161.             if ($form->isSubmitted()) {
  162.                 $em->getConnection()->beginTransaction();
  163.                 try {
  164.                     
  165.                     $objetFournisseur $fournisseurRepository->find($idFournisseur);
  166.                     ($user instanceof App\Entity\user\Utilisateur) ? $uneCommande->setUtilisateur($user) : $user null;
  167.                     $dateCommande$request->get("dateCommande") ;
  168.                     $dateCommande = new \DateTime(implode("-",array_reverseexplode('-'str_replace("/","-",$dateCommande)) )));
  169.                     $infoClient null;
  170.                     $uneCommande->SetAnnule(FALSE);
  171.                     $uneCommande->setTypeCommande($typeCom);
  172.                     $uneCommande->setRefBonCommande($uneCommande->getCodeCommande());
  173.                     // if ($typeCom == 1) {
  174.                         //$uneCommande->setTauxEchange($tauxechange);
  175.                         $uneCommande->setFournisseur($objetFournisseur);
  176.                     //}
  177.                     $uneCommande->SetDatePublication($dateCommande);
  178.                     $uneCommande->setAbonne($this->getAbonne($em,$sessionData['abonneId'], $abonneRepository));
  179.                     if ($typeCom == 2) {
  180.                         $uneCommande->setFournisseur(NULL);
  181.                     }
  182.                     $em->persist($uneCommande);
  183.                     $em->flush();
  184.                     $this->flashMessage->add('commande.ajout.success''Commande ajoutée avec succès');
  185.                     $em->getConnection()->commit();
  186.                     $em->clear();
  187.                 } catch (\Exception $e) {
  188.                     $em->getConnection()->rollBack();
  189.                     throw $e;
  190.                 }
  191.                 $this->data['Produit'] = $uneCommande;
  192.                 $refCommande $this->reinitialiserRef($em, (int) $typeCom$an$m$entite 'COMMANDE'$taille 5$user->getId());
  193.                 return $this->redirect($this->generateUrl('admin_lignecommande_add_form', array('idCommandeTmp' => $uneCommande->getId(), 'type' => $type)));
  194.             } else {
  195.                 $this->flashMessage->add('commande.ajout.error'$this->translator->trans("site.formulaire.invalide"));
  196.                 return $this->redirect($this->generateUrl('admin_commande_type', array('type' => $type)));
  197.             }
  198.         }
  199.         $listeClient = array();
  200.         $objetUtilisateur $utilisateurRepository->find($sessionData['id']);
  201.         $villeId =0;
  202.         $typeProd TypeFournisseur::FOURNISSEUR;;
  203.         $listeFournisseur $fournisseurRepository->getAllFournisseurByZone($villeId,$typeProd,$sessionData['abonneId']);
  204.         //$listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($sessionData['id']);
  205.         $this->data['listeFournisseur'] = $listeFournisseur;
  206.         $this->data['formuView'] = $form->createView();
  207.         $this->data['Produit'] = $uneCommande;
  208.         $this->data['listeClient'] = $listeClient;
  209.         $this->data['prixEnCours'] = $prixEnCours;
  210.         
  211.         $this->data['typecom'] = $typeCom;
  212.         $this->data['locale'] = $locale;
  213.         $this->data['type'] = $type;
  214.         $this->data['actionRepository'] = $actionRepository;
  215.         
  216.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/saisirCommandeTmp.html.twig'$this->data$this->response);
  217.     }
  218.     /**
  219.      * Methode s'occupant de l'ajout d'une commande.
  220.      *
  221.      * @author armand.tevi@gmail.com
  222.      * @copyright ADMIN 2015
  223.      *
  224.      * @version 1
  225.      *
  226.      * @return twig d'ajout d'un abonne ajouterproduit.html.twig
  227.      */
  228.     public function listeCommandeAction(Request $request$type$etat,$nomcol,$datefin,$datedeb,$ville,$util,$silivre,$numcom,$prod,$action,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  229.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  230.     TemplateRepository $templateRepository,
  231.     FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository
  232.      ) {
  233.            /*
  234.          * Nom de l'action en cours
  235.          */
  236.         $nomAction __FUNCTION__;
  237.         /*
  238.          * Description de l'action de l'action en cours
  239.          */
  240.         $descAction "Liste des commandes ";
  241.         $locale ='fr';
  242.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  243.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc$loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository );
  244.         if($valRetour==1){
  245.             return $this->redirect($this->generateUrl('app_logout'));
  246.         }elseif($valRetour==2){
  247.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  248.         }
  249.         
  250.         $afficher 0;
  251.         $statTab = array();
  252.         if ($request->getMethod() == 'POST') {
  253.             $nomcol strtolower($request->get('nomcol_'));
  254.             $request->attributes->set('nomcol_'$nomcol);
  255.             $datefin strtolower($request->get('datefin_'));
  256.             $request->attributes->set('datefin_'$datefin);
  257.             $datedeb strtolower($request->get('datedeb_'));
  258.             $request->attributes->set('datedeb_'$datedeb);
  259.             $ville strtolower($request->get('ville_'));
  260.             $request->attributes->set('ville_'$ville);
  261.             $type strtolower($request->get('type'));
  262.             $request->attributes->set('type'$type);
  263.             $prod strtolower($request->get('prod_'));
  264.             $request->attributes->set('prod_'$prod);
  265.             
  266.             $util strtolower($request->get('util_'));
  267.             $request->attributes->set('util_'$util);
  268.             
  269.             $silivre strtolower($request->get('silivre_'));
  270.             $request->attributes->set('silivre_'$silivre);
  271.             
  272.             $numcom strtolower($request->get('numcom_'));
  273.             $request->attributes->set('numcom_'$numcom); 
  274.             $afficher 1;
  275.  
  276.         }
  277.         $prod $sessionData["produit_id"];
  278.      
  279.         try {
  280.             /*
  281.              * Récupération des la liste des critères
  282.              */
  283.              $em $this->getDoctrine()->getManager();
  284.             // Recuperaer la liste des collecteurs
  285.            /* if(in_array($sessionData['idProfil'],\Types\user\TypeProfil::PROFIL_COMPTABLE)){
  286.                 $util=$sessionData['id'];
  287.                  $objetUtilisateur = $utilisateurRepository->find($sessionData['id']);
  288.                  $listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($objetUtilisateur->getVille()->getId(), $prod);
  289.                 //$listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($sessionData['id']);    
  290.             }else{*/
  291.                 if($type == 3)
  292.                     $typeProd 1;
  293.                 else
  294.                     $typeProd 2;
  295.                 $listeFournisseur $fournisseurRepository->getAllFournisseur($typeProd ,$sessionData['abonneId']);
  296.                 
  297.             //}   
  298.             $listeVille $villeRepository->getAllActiveVille($prod);
  299.             //Recuperer la liste des villes
  300.             $objetAbonne $this->getAbonne($em,$sessionData['abonneId'], $abonneRepository);
  301.             $listeCommande $commandeRepository->getListeRechercheCommande($nomcol,$datefin,$datedeb,$ville,$util,$silivre,$numcom,$prod,$type,0,20,1,$sessionData['abonneId']);            
  302.             $listeStat$commandeRepository->getStatsRechercheCommande($nomcol,$datefin,$datedeb,$ville,$util,$silivre,$numcom,$prod,$type);            
  303.             $statTab['quantiteTotal'] = $listeStat[0]["quantiteTotal"];
  304.             $statTab['quantiteTotalLivre'] = $listeStat[0]["quantiteTotalLivre"];
  305.             if($listeStat[0]["quantiteTotalLivre"] != null && $listeStat[0]["quantiteTotal"] != null){
  306.                 $statTab['pourcentage'] = ($listeStat[0]["quantiteTotalLivre"]/$listeStat[0]["quantiteTotal"])*100;
  307.             }
  308.             
  309.             $listeUtilisataire $utilisateurRepository->getAllUser(TypeProfil::PROFIL_COMPTABLE);
  310.         } catch (\Exception $e) {
  311.             var_dump($e->getMessage());
  312.             exit;
  313.         }
  314.         /*
  315.          * Préparation des informations que nous allons traiter  sur le twig
  316.          */
  317.       // var_dump($util);exit;
  318.         $this->data['datefin_'] = $datefin;
  319.         $this->data['datedeb_'] = $datedeb;
  320.         $this->data['nomcol_'] = $nomcol;
  321.         $this->data['ville_'] = $ville;
  322.         $this->data['prod_'] = $prod;
  323.         $this->data['util_'] = $util;
  324.         $this->data['silivre_'] = $silivre;
  325.         $this->data['numcom_'] = $numcom;
  326.         $this->data['listeCollecteur'] = $listeFournisseur;
  327.         $this->data['listeCommande'] = $listeCommande;
  328.         $this->data['listeVille'] = $listeVille;
  329.         $this->data['listeUtilisateur'] = $listeUtilisataire;
  330.         $this->data['locale'] = $locale;
  331.         $this->data['afficher'] = $afficher ;
  332.         $this->data['type'] = $type;
  333.         $this->data['objetAbonne'] = $objetAbonne;
  334.         $this->data['statTab'] = $statTab;
  335.         $this->data['actionRepository'] = $actionRepository;
  336.         //var_dump($datefin, $datedeb);exit;
  337.         if($action == 0){
  338.             return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/listeCommande.html.twig'$this->data$this->response);
  339.         }else if($action == 1){
  340.             $file = new CommandeExcelBuilder(); 
  341.         }else{
  342.             return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/listeDetailCommande.html.twig'$this->data$this->response);
  343.       
  344.         }
  345.         $file->hydrate($listeCommande);
  346.         $response = new BinaryFileResponse($file->build());
  347.         $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT,'commande.xlsx');
  348.         return $response;
  349.        
  350.         //return 
  351.      }
  352.     /**
  353.      * Methode s'occupant de l'ajout d'une commande.
  354.      *
  355.      * @author armand.tevi@gmail.com
  356.      * @copyright ADMIN 2015
  357.      *
  358.      * @version 1
  359.      *
  360.      * @return twig d'ajout d'un abonne ajouterproduit.html.twig
  361.      */
  362.     public function ajouterLigneCommandeAction(Request $request$idCommandeTmp$type,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  363.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  364.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  365.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository
  366.     ) {
  367.         /**
  368.          * Nom de l'action en cours
  369.          */
  370.         $nomAction __FUNCTION__;
  371.         /*
  372.          * Description de l'action de l'action en cours
  373.          */
  374.         $descAction "Ajouter une ligne de commande ";
  375.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  376.         $locale ='fr';
  377.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc$loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository );
  378.         if($valRetour==1){
  379.             return $this->redirect($this->generateUrl('app_logout'));
  380.         }elseif($valRetour==2){
  381.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  382.         }
  383.         
  384.         /*
  385.          * Création du formulaire par rapport a l'entité commandetmp
  386.          */
  387.         $uneLigneCommande = new LigneCommandeTmp();
  388.         $form $this->createForm(LigneCommandeTmpType::class, $uneLigneCommande);
  389.         /*
  390.          * Declaration des principales methodes Symfony2 pour traiter les informations
  391.          */
  392.         $em $this->getDoctrine()->getManager();
  393.         $user $utilisateurRepository->find($sessionData['id']);
  394.         $this->request $request;
  395.         $this->session $this->get('session');
  396.         $this->flashMessage $this->get('session')->getFlashBag();
  397.         $listeProduit= array();
  398.         //Recuperation de la liste des Produits que Symfony 2 accepte
  399.         $com $commandeTmpRepository->find($idCommandeTmp);
  400.         ($com instanceof CommandeTmp) ? $listeCategorie $categorieProduitRepository->getAllOrOneCategorie() : $listeCategorie null;
  401.         
  402.         if($com instanceof CommandeTmp) {
  403.             if($com->getFournisseur()->getFournisseurproduits() != null){
  404.                 //var_dump(1);exit;  
  405.                 //$listeProduit = $com->getFournisseur()->getProduits() ;
  406.                 $i 0;
  407.                 foreach ($com->getFournisseur()->getFournisseurproduits() as $unProduitFournisseur) {
  408.                     $listeProduit[$i] = $produitRepository->find($unProduitFournisseur->getProduit()->getId());
  409.                     ++$i;
  410.                 }
  411.             }else{
  412.                 $listeProduit $produitRepository->getAllProduit();
  413.             }
  414.         }else{
  415.             $listeCategorie null;
  416.         } 
  417.          //Generation du code 
  418.          $d = new \DateTime();
  419.          $an $d->format('Y');
  420.          $m $d->format('m');
  421.          $j $d->format('d');
  422.          $refCommande $this->getRefCommande($em, (int) $type$an$m$entite 'COMMANDE'$taille 5$user->getId());
  423.  
  424.         //ajouter les données des commandes temporaires encours
  425.         // $objetFournisseur = $fournisseurRepository->find($idFournisseur);
  426.         $uneCommande = new CommandeTmp();
  427.         ($user instanceof Utilisateur) ? $uneCommande->setUtilisateur($user) : $user null;
  428.         $infoClient null;
  429.         $uneCommande->SetAnnule(FALSE);
  430.         $uneCommande->setTypeCommande($type);
  431.         $uneCommande->setRefBonCommande($refCommande);
  432.         $uneCommande->setCodeCommande($refCommande);
  433.             //$uneCommande->setFournisseur($objetFournisseur);
  434.         
  435.         $uneCommande->setDatePublication(new \Datetime());
  436.         $uneCommande->setAbonne($this->getAbonne($em,$sessionData['abonneId'], $abonneRepository));
  437.         
  438.         $em->persist($uneCommande);
  439.         $em->flush();
  440.         
  441.          
  442.             
  443.         /*
  444.          * Donnée à afficher sur le twig
  445.          */
  446.          $listePrix $prixRigueurRepository->findAll();
  447.         
  448.         
  449.         
  450.         
  451.         //var_dump($infoMontantFour);exit;
  452.         
  453.          $villeId =0;
  454.         $typeProd TypeFournisseur::FOURNISSEUR;;
  455.         $listeFournisseur $fournisseurRepository->getAllFournisseurByZone($villeId,$typeProd,$sessionData['abonneId']);
  456.         //$typeCom = 1;
  457.        
  458.         //$listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($sessionData['id']);
  459.         $this->data['listeFournisseur'] = $listeFournisseur;
  460.         $this->data['refCommande'] = $refCommande;
  461.         //$this->data['objetCommandeTmp'] = $uneCommande;
  462.         //var_dump($listeCategorie);exit;
  463.         $this->data['listcateg'] = $listeCategorie;
  464.         
  465.         
  466.         $this->data['listeProduit'] = $listeProduit;
  467.         $this->data['listePrix'] = $listePrix;
  468.         $this->data['locale'] = $locale;
  469.         $this->data['actionRepository'] = $actionRepository;
  470.         ($com instanceof CommandeTmp) ? $listeLigneCom $ligneCommandeTmpRepository->findBy(array('commandeTmp' => $com->getId())) : $listeLigneCom null;
  471.         //var_dump($listeLigneCom);exit;
  472.         $this->data['listeligne'] = $listeLigneCom;
  473.         $this->data['idcom'] = $uneCommande;
  474.         $this->data['type'] = $type;
  475.         $this->data['actionRepository'] = $actionRepository;
  476.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/ligneCommandeTmp.html.twig'$this->data$this->response);
  477.     }
  478.     /**
  479.      * Methode s'occupant de l'ajout d'une commande.
  480.      *
  481.      * @author armand.tevi@gmail.com
  482.      * @copyright ADMIN 2015
  483.      *
  484.      * @version 1
  485.      *
  486.      * @return twig d'ajout d'un abonne ajouterproduit.html.twig
  487.      */
  488.     public function ajouterLigneCommandeClientAction(Request $request$id$type$typeCat,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  489.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  490.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  491.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  492.     TypeOperationRepository $typeOperationRepository
  493.     ) {
  494.         /**
  495.          * Nom de l'action en cours
  496.          */
  497.         $nomAction __FUNCTION__;
  498.         /*
  499.          * Description de l'action de l'action en cours
  500.          */
  501.         $descAction "Ajouter une ligne de commande ";
  502.         $locale ='fr';
  503.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc$loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository );
  504.         if($valRetour==1){
  505.             return $this->redirect($this->generateUrl('app_logout'));
  506.         }elseif($valRetour==2){
  507.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  508.         }
  509.         $em $this->getDoctrine()->getManager();
  510.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  511.         $this->request $request;
  512.         $this->session $this->get('session');
  513.         $this->flashMessage $this->get('session')->getFlashBag();
  514.         /*
  515.          * Création du formulaire par rapport a l'entité commandetmp
  516.          */
  517.         $uneLigneCommande = new LigneCommandeTmp();
  518.         $form $this->createForm(LigneCommandeTmpType::class, $uneLigneCommande);
  519.         $user $utilisateurRepository->find($sessionData['id']);
  520.         /*
  521.          * Declaration des principales methodes Symfony2 pour traiter les informations
  522.          */
  523.          
  524.         
  525.         //Recuperation de la liste des Produits que Symfony 2 accepte
  526.         $client $clientRepository->find($id);
  527.         //Enregistrer les donnees de la commande
  528.         $listeRechercheClient  = array();
  529.         $typeCatL =0;
  530.         if($user->getCaisse() ==null ){
  531.             $listeProduit $produitRepository->getAllProduit($sessionData['abonneId']);
  532.         }else{
  533.             
  534.             if($typeCat == 3)
  535.                 $typeCatL 1;
  536.             else
  537.                 $typeCat $typeCatL;
  538.             $listeProduit $produitRepository->getAllProduitCaisse($sessionData['abonneId'], $user->getCaisse()->getId(), $typeCatL);
  539.             $listeRechercheClient  $clientRepository->getAllClientCaisse($user->getAbonne()->getId(), $user->getCaisse()->getId());  //getAllClient(0, 0, 0, 0, 0, 0, 1, 1,0,5,0,0,$sessionData['abonneId']);
  540.         }
  541.         
  542.         /*
  543.          * Donnée à afficher sur le twig
  544.          */
  545.          $listePrix $prixRigueurRepository->findAll();
  546.         
  547.         $d = new \DateTime();
  548.         $an $d->format('Y');
  549.         $m $d->format('m');
  550.         $j $d->format('d');
  551.         $refCommande $this->getRefCommande($em, (int) 1$an$m$entite 'COMMANDE'$taille 5$sessionData['abonneId']);
  552.         $dateJour $j."/".$m."/".$an;
  553.         $listeCible $cibleRepository->findBy(['abonne'=>$this->getAbonne($em$sessionData['abonneId'],$abonneRepository)]);
  554.         $listeCaracteristiquePrix $caracteristiquePrixRepository->findBy(['abonne'=>$this->getAbonne($em$sessionData['abonneId'],$abonneRepository)]);
  555.         $listeOperation $typeOperationRepository->findBy(['caisse'=> $user->getCaisse(), 'categorieTypeOperation'=>2]);  //$this->getRefCommande($em, (int) 1, $an, $m, $entite = 'COMMANDE', $taille = 5, $sessionData['abonneId']);
  556.        //$this->data['listcateg'] = $listeCategorie;
  557.         //Mise ajour des donnees 
  558.        $this->deleteLigneCommandeTmp($em,$id);
  559.        $this->deleteCommandeTmp($em,$id);
  560.        
  561.        
  562.         $this->data['listeCaracteristiquePrix'] = $listeCaracteristiquePrix;
  563.         $this->data['listeCible'] = $listeCible;
  564.         $this->data['listeProduit'] = $listeProduit;
  565.         $this->data['listePrix'] = $listePrix;
  566.         $this->data['client'] = $client;
  567.         $this->data['listeOperation'] = $listeOperation;
  568.         $this->data['listeClient'] = $listeRechercheClient;
  569.         $this->data['dateJour'] = $dateJour ;
  570.         $this->data['id'] = $id;
  571.         $this->data['locale'] = $locale;
  572.         $this->data['user'] = $user;
  573.         $this->data['typeOperation'] = 1;
  574.         
  575.         $this->data['refCommande'] = $refCommande;
  576.         // ($com instanceof CommandeTmp) ? $listeLigneCom = $ligneCommandeTmpRepository->findBy(array('commandeTmp' => $com->getId())) : $listeLigneCom = null;
  577.         //var_dump($listeLigneCom);exit;
  578.         //$this->data['listeligne'] = $listeLigneCom;
  579.         //$this->data['idcom'] = $com;
  580.         $this->data['type'] = $type;
  581.         $this->data['typeCat'] = $typeCat;
  582.         $this->data['actionRepository'] = $actionRepository;
  583.         
  584.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/ligneCommandeClient.html.twig'$this->data$this->response);
  585.     }
  586.      /**
  587.      * Methode s'occupant de l'ajout d'une commande.
  588.      *
  589.      * @author armand.tevi@gmail.com
  590.      * @copyright ADMIN 2015
  591.      *
  592.      * @version 1
  593.      *
  594.      * @return twig d'ajout d'un abonne ajouterproduit.html.twig
  595.      */
  596.     public function commandeTypeTraitementAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  597.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  598.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  599.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  600.     TypeOperationRepository $typeOperationRepository
  601.     ) {
  602.         /**
  603.          * Nom de l'action en cours
  604.          */
  605.         $nomAction __FUNCTION__;
  606.         /*
  607.          * Description de l'action de l'action en cours
  608.          */
  609.         $descAction "Ajouter client ou table à une commande ";
  610.         $locale ='fr';
  611.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc$loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository );
  612.         if($valRetour==1){
  613.             return $this->redirect($this->generateUrl('app_logout'));
  614.         }elseif($valRetour==2){
  615.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  616.         }
  617.         /*
  618.          * Création du formulaire par rapport a l'entité commandetmp
  619.          */
  620.         $uneLigneCommande = new LigneCommandeTmp();
  621.         $form $this->createForm(LigneCommandeTmpType::class, $uneLigneCommande);
  622.         /*
  623.          * Declaration des principales methodes Symfony2 pour traiter les informations
  624.          */
  625.         $em $this->getDoctrine()->getManager();
  626.         $this->request $request;
  627.         $this->session $this->get('session');
  628.         $this->flashMessage $this->get('session')->getFlashBag();
  629.         $commandeId $this->request->get('commandeId');
  630.         $clientId $this->request->get('clientId');
  631.         $tableId $this->request->get('tableId');
  632.         $typeTraitement $this->request->get('typeTraitement');
  633.         //var_dump($commandeId, $clientId );exit;
  634.         $listeProduit= array();
  635.         if($typeTraitement  == ){
  636.             $objetTable $tableMange->find($tableId);
  637.         }else{
  638.             $objetClient $clientRepository->find($clientId);
  639.         }
  640.         $this->initialiserClientTableCommande($em$commandeId);
  641.         //Recuperation de la liste des Produits que Symfony 2 accepte
  642.         $objetCommande $commandeRepository->find($commandeId);
  643.         if($typeTraitement  == ){
  644.             $objetCommande->setTableMange($objetTable);
  645.         }else{
  646.             $objetCommande->setClient($objetClient);
  647.         }
  648.         $em->persist($objetCommande);
  649.         $em->flush();
  650.         
  651.         
  652.         return $this->redirect($this->generateUrl('admin_vente_evoluee',["id"=>$commandeId]));
  653.         //return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/ligneCommandeTmp.html.twig', $this->data, $this->response);
  654.     }
  655.     /**
  656.      * Methode s'occupant de l'ajout d'une commande.
  657.      *
  658.      * @author armand.tevi@gmail.com
  659.      * @copyright ADMIN 2015
  660.      *
  661.      * @version 1
  662.      *
  663.      * @return twig d'ajout d'un abonne ajouterproduit.html.twig
  664.      */
  665.      public function venteEvolueeAction(Request $request$id$type,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  666.      ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  667.      TemplateRepository $templateRepositoryUtilisateurRepository $utilisateurRepositoryClientRepository $clientRepositoryTableRepository $tableMangeRepository,
  668.      CategorieProduitRepository $categorieProduitRepositoryProduitRepository $produitRepositoryTypeOperationRepository $typeOperationRepository,
  669.      CommandeRepository $commandeRepository
  670.        ) {
  671.         /**
  672.          * Nom de l'action en cours
  673.          */
  674.         $nomAction __FUNCTION__;
  675.         /*
  676.          * Description de l'action de l'action en cours
  677.          */
  678.         $descAction "Interface évoluée de vente ";
  679.         $locale ='fr';
  680.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc$loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository );
  681.         if($valRetour==1){
  682.             return $this->redirect($this->generateUrl('app_logout'));
  683.         }elseif($valRetour==2){
  684.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  685.         }
  686.         $em $this->getDoctrine()->getManager();
  687.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  688.         $listeProduit=array();
  689.         $this->request $request;
  690.         $this->session $this->get('session');
  691.         $this->flashMessage $this->get('session')->getFlashBag();
  692.         /*
  693.          * Création du formulaire par rapport a l'entité commandetmp
  694.          */
  695.         $uneLigneCommande = new LigneCommandeTmp();
  696.         $form $this->createForm(LigneCommandeTmpType::class, $uneLigneCommande);
  697.         $objetUtilisateur $utilisateurRepository->find($sessionData['id']);
  698.         
  699.         $listeClient $clientRepository->find($sessionData['id']);
  700.         if($objetUtilisateur->getCaisse() ==null ){
  701.             $listeClient  $clientRepository->findBy(['abonne'=>$objetUtilisateur->getAbonne(),'etatClient'=>1]);  //getAllClient(0, 0, 0, 0, 0, 0, 1, 1,0,5,0,0,$sessionData['abonneId']);
  702.         }else{
  703.             $listeClient  $clientRepository->getAllClientCaisse($objetUtilisateur->getAbonne()->getId(), $objetUtilisateur->getCaisse()->getId());  //getAllClient(0, 0, 0, 0, 0, 0, 1, 1,0,5,0,0,$sessionData['abonneId']);
  704.         }
  705.         $listeTable  $tableMangeRepository->findBy(['abonne'=>$objetUtilisateur->getAbonne(),'etatTable'=>1]);  //getAllClient(0, 0, 0, 0, 0, 0, 1, 1,0,5,0,0,$sessionData['abonneId']);
  706.         
  707.         $typeCatL =0;
  708.         $objetAbonne $this->getAbonne($em$sessionData['abonneId'],$abonneRepository);
  709.        // $listeCategorie = $categorieProduitRepository->getAllCategorieProduit($objetAbonne->getId()); 
  710.        $listeCategorieProd $categorieProduitRepository->getAllCategorieProduitByTypeSiAffichage($objetAbonne->getId(),0,1); 
  711.        $listeCategorieService $categorieProduitRepository->getAllCategorieProduitByTypeSiAffichage($objetAbonne->getId(),2); 
  712.             
  713.        if($objetUtilisateur->getCaisse() == null ){
  714.             foreach($listeCategorieProd as $uneCategorie){
  715.                 $listeProduit[$uneCategorie->getId()]  = $produitRepository->getAllProduitCaisseWithPrix($sessionData['abonneId'], 0$uneCategorie->getId());//getAllProduitCategorieAjax($uneCategorie->getId(),$sessionData['abonneId']);     //$uneCategorie->getId()          
  716.             }
  717.             
  718.         }else{
  719.             foreach($listeCategorieProd as $uneCategorie){
  720.                 $listeProduit[$uneCategorie->getId()]  = $produitRepository->getAllProduitCaisseWithPrix($sessionData['abonneId'], $objetUtilisateur->getCaisse()->getId(), $uneCategorie->getId());     //$uneCategorie->getId()     //getAllProduitCaisse     
  721.             
  722.            // var_dump(1);exit;
  723.         }
  724.         foreach($listeCategorieService as $uneCategorie){
  725.             $listeProduit[$uneCategorie->getId()]  = $produitRepository->getAllProduitCategorieAjax($uneCategorie->getId(), $sessionData['abonneId'] );     //$uneCategorie->getId()     //getAllProduitCaisse     
  726.             //var_dump($listeProduit[$uneCategorie->getId()] );exit;
  727.         
  728.        
  729.         //
  730.         if($objetUtilisateur->getCaisse()!=null)
  731.             $listeTypeOperation  $typeOperationRepository->getListeTypeOperationAPI($objetUtilisateur->getAbonne()->getId(), $type=2$objetUtilisateur->getCaisse()->getId()) ;
  732.         else
  733.             $listeTypeOperation  $typeOperationRepository->getListeTypeOperationAPI($objetUtilisateur->getAbonne()->getId(), $type=2) ;
  734.                 
  735.         
  736.         $d = new \DateTime();
  737.         $an $d->format('Y');
  738.         $m $d->format('m');
  739.         $j $d->format('d');
  740.         $refCommande $this->getRefCommande($em, (int) 1$an$m$entite 'COMMANDE'$taille 5$sessionData['abonneId']);
  741.         $dateJour $j."/".$m."/".$an;
  742.         
  743.         $uneCommande $commandeRepository->find($id);
  744.         
  745.         if($uneCommande == null ){
  746.                 $uneCommande $commandeRepository->findOneBy(['siRetrait'=>1'abonne'=>$objetUtilisateur->getAbonne()]);
  747.                
  748.                 if($uneCommande == null || $type=1){
  749.                     $uneCommande = new Commande();
  750.                     $uneCommande->setCodeCommande($refCommande);
  751.                     $uneCommande->setDescriptionCommande("Evoluer ".$refCommande);
  752.                 }
  753.                 $uneCommande->setAnnule(FALSE);
  754.                 $uneCommande->setEtatCommande(1);
  755.                 $uneCommande->setUtilisateur($objetUtilisateur);
  756.                 $uneCommande->setRefBonCommande($refCommande);
  757.                 $uneCommande->setCodeGenere($refCommande);
  758.                 $uneCommande->setTauxEchange(0);
  759.                 $uneCommande->setSiRetrait(1);
  760.                
  761.                 $uneCommande->setDateCommande(new \DateTime());
  762.                 $uneCommande->setDateModification(new \DateTime());
  763.                 $uneCommande->setAbonne($objetUtilisateur->getAbonne());
  764.                 $uneCommande->setDatePublication(new \DateTime());
  765.                 if($type == 0){
  766.                     $uneCommande->setMontantResteCommande(0);
  767.                 }
  768.                 
  769.                 $uneCommande->setTypeCommande(3);
  770.                 $em->persist($uneCommande);
  771.                 $em->flush();
  772.         }
  773.         //Mise ajour des donnees 
  774.        //$this->deleteLigneCommandeTmp($em,$id);
  775.        //$this->deleteCommandeTmp($em,$id);
  776.         $this->data['listeProduit'] = $listeProduit;
  777.         $this->data['listeTypeOperation'] = $listeTypeOperation ;
  778.         $this->data['listeCategorieProd'] = $listeCategorieProd;
  779.         $this->data['listeCategorieService'] = $listeCategorieService;
  780.         $this->data['listeClient'] = $listeClient;
  781.         $this->data['listeTable'] = $listeTable;
  782.         $this->data['dateJour'] = $dateJour ;
  783.         $this->data['uneCommande'] = $uneCommande;
  784.         $this->data['objetUtilisateur'] = $objetUtilisateur;
  785.         $this->data['objetAbonne'] = $objetUtilisateur->getAbonne();
  786.         //$this->data['id'] = $id;
  787.         $this->data['locale'] = $locale;
  788.         $this->data['actionRepository'] = $actionRepository;
  789.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/venteEvoluee.html.twig'$this->data$this->response);
  790.     }
  791.    
  792.     public function produitsDeLaCategorieAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  793.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  794.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  795.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  796.     TypeOperationRepository $typeOperationRepository
  797.     ) {
  798.                       /*
  799.          * Nom de l'action en cours
  800.          */
  801.         $nomAction __FUNCTION__;
  802.         /*
  803.          * Description de l'action de l'action en cours
  804.          */
  805.         $descAction "Recupérer les produits d'une catégorie ";
  806.         $locale ='fr';
  807.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc$loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository );
  808.         if($valRetour==1){
  809.             return $this->redirect($this->generateUrl('app_logout'));
  810.         }elseif($valRetour==2){
  811.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  812.         }
  813.         
  814.         $idCateg $this->request->get('categorie');
  815.         $idFournisseur $this->request->get('idFournisseur');
  816.         $type $this->request->get('type');
  817.         $listeProduit $produitRepository->getCategorieProduit($idCateg$idFournisseur$type);
  818.         return new Response(json_encode(array('donnee' => $listeProduit)));
  819.     }
  820.     public function getInfosProduitAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  821.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  822.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  823.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  824.     TypeOperationRepository $typeOperationRepository
  825.     ) {
  826.         $em $this->getDoctrine()->getManager();
  827.         $produit $request->get('produit');
  828.         $idproduit trim($produit);
  829.         $cde = (int) $request->get('cmdeid');
  830.         $cde $commandeTmpRepository->find($cde);
  831.         $leProduit $produitRepository->getProduit($idproduit);
  832.         $objetProduit $produitRepository->find($idproduit);
  833.         
  834.         //Recuperation du prix en cours du produit
  835.         $getPrix $prixRigueurRepository->findOneBy(array("produit"=>$objetProduit,"etatPrixRigueur"=>  TypeEtat::ACTIF));
  836.         $tab = array();
  837.         /*if ($cde->getTypeCommande() === 1) {
  838.             $tab['tauxtva'] = 0;
  839.             $tab['montantHtVente'] = $leProduit['montantHtAchat'];
  840.         } elseif ($cde->getTypeCommande() === 2) {
  841.             $tab['tauxtva'] = $leProduit['tauxTva'];
  842.             
  843.             $tab['montantHtVente'] = $leProduit['montantHtVente'];
  844.         }*/
  845.         if($getPrix !=null){
  846.             $tab['prix'] = $getPrix->getInfoPrixRigueur();
  847.             $tab['prixId'] = $getPrix->getId();
  848.         }else{
  849.         }
  850.         return new Response(json_encode(array('don' => $tab)));
  851.     }
  852.     public function getInfosProduitAutreAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  853.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  854.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  855.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  856.     TypeOperationRepository $typeOperationRepository
  857.     ) {
  858.         $em $this->getDoctrine()->getManager();
  859.         $produit $request->get('produit');
  860.         $cible $request->get('cible');
  861.         $caracteristique $request->get('caracteristique');
  862.         $idproduit trim($produit);
  863.         $cde = (int) $request->get('cmdeid');
  864.         //var_dump($caracteristique);exit;
  865.         $cde $commandeTmpRepository->find($cde);
  866.         $leProduit $produitRepository->getProduit($idproduit);
  867.         $objetProduit $produitRepository->find($idproduit);
  868.         $objetCible $cibleRepository->find($cible);
  869.         $objetCarateristique $caracteristiquePrixRepository->find($caracteristique);
  870.         
  871.         //Recuperation du prix en cours du produit
  872.         $getPrix $prixRigueurRepository->findBy(array("produit"=>$objetProduit,"cible"=>$objetCible"caracteristiquePrix"=>$objetCarateristique"etatPrixRigueur"=>  TypeEtat::ACTIF));
  873.         $tab = array();
  874.         /*if ($cde->getTypeCommande() === 1) {
  875.             $tab['tauxtva'] = 0;
  876.             $tab['montantHtVente'] = $leProduit['montantHtAchat'];
  877.         } elseif ($cde->getTypeCommande() === 2) {
  878.             $tab['tauxtva'] = $leProduit['tauxTva'];
  879.             
  880.             $tab['montantHtVente'] = $leProduit['montantHtVente'];
  881.         }*/
  882.         if($getPrix != null){
  883.             $tab['prix'] = $getPrix[0]->getInfoPrixRigueur();
  884.             $tab['prixId'] = $getPrix[0]->getId();
  885.             $tab['action'] = 1;
  886.         }else{
  887.             $tab['prix'] = "-";
  888.             $tab['action'] = 0;
  889.         }
  890.         
  891.         return new Response(json_encode(array('don' => $tab)));
  892.     }
  893.     public function addLineCmdeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  894.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  895.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  896.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  897.     TypeOperationRepository $typeOperationRepository
  898.     ) {
  899.         /*
  900.          * Nom de l'action en cours
  901.          */
  902.         $nomAction __FUNCTION__;
  903.         /*
  904.          * Description de l'action de l'action en cours
  905.          */
  906.         $descAction 'Ajouter une nouvelle ligne commande!';
  907.         /*
  908.          * Préparation du message de log 
  909.          */
  910.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  911.         /*
  912.          * Service de gestion des droits
  913.          */
  914.         
  915.         /*
  916.          * Informations de session
  917.          */
  918.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  919.         /*
  920.          * Locale en cours
  921.          */
  922.         $locale $loginManager->getLocale();
  923.         $this->data['locale'] = $locale;
  924.         /*
  925.          * On vérifie si l'utilisateur est connecté
  926.          */
  927.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  928.         //$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
  929.         //$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
  930.         $tabInfoDroit['nomControleur'] = $this->nom;
  931.         $tabInfoDroit['descControleur'] = $this->description;
  932.         $tabInfoDroit['nomAction'] = $nomAction;
  933.         $tabInfoDroit['descAction'] = $descAction;
  934.         
  935.         $locale $loginManager->getLocale();
  936.         $this->data['locale'] = $locale;
  937.         $this->request $request;
  938.         $em $this->getDoctrine()->getManager();
  939.         $p = (int) trim($this->request->get('produit'));
  940.         $produit $produitRepository->find($p);
  941.         $add = array();
  942.         $add['error'] = 0;
  943.         if (!$produit instanceof Produit) {
  944.             $add['error'] = 1;
  945.             return new Response(json_encode(array('add' => $add)));
  946.         }
  947.        
  948.         $commande trim($this->request->get('commande'));
  949.         $user $utilisateurRepository->find($sessionData['id']);
  950.         ($commande != '') ? $commande $commandeTmpRepository->find($commande) : $commande '';
  951.         $nbre trim($this->request->get('nbre'));
  952.         ($nbre != '') ? $nbre = (int) $nbre $nbre 0;
  953.         $total trim($this->request->get('total'));
  954.         $idFournisseur trim($this->request->get('idFournisseur'));
  955.         
  956.         
  957.         $prixachat trim($this->request->get('prixachat'));
  958.         // $total = trim($this->request->get('total'));
  959.         
  960.         
  961.         ($total != '') ? $total = (int) $total $total 0;
  962.         $montantHt trim($this->request->get('mttht'));
  963.         $siVenteCredit trim($this->request->get('siVenteCredit'));
  964.         ($montantHt != '') ? $montantHt = (int) $montantHt $montantHt 1;
  965.         
  966.         $statutAction = (int) trim($this->request->get('statut'));
  967.         
  968.         $em->getConnection()->beginTransaction();
  969.         try {
  970.                 if (($produit instanceof Produit) && ($commande instanceof CommandeTmp) && $nbre 0) {
  971.                    //$existe = $em->getRepository($this->stockBundle.'LigneCommandeTmp')->findOneBy(array('produit'=>$produit->getId(),'commandeTmp'=>$commande->getId()));;
  972.                    $existe $ligneCommandeTmpRepository->allLigneCommandeTmp($produit->getId(), $commande->getId(), $statutAction);
  973.                    if ($commande->getTypeCommande() == 1) {
  974.                        $produit->setMontantHtAchat($prixachat);
  975.                        $produit->setMontantHtVente($montantHt);
  976.                        $produit->setMontantTtcVente($montantHt);
  977.                        $em->persist($produit);
  978.                        $em->flush($produit);
  979.                    }
  980.                    //var_dump(1);exit;
  981.                    if ($existe 0) {
  982.                        return new Response(json_encode(array('add' => $add)));
  983.                    }
  984.                    if ($statutAction === 0) {
  985.                        $uneLigneCmde = new LigneCommandeTmp();
  986.                    } else {
  987.                        $uneLigneCmde $ligneCommandeTmpRepository->find($statutAction);
  988.                    }
  989.                    $objetPrix $prixRigueurRepository->findOneBy(['infoPrixRigueur'=>$prixachat'produit'=>$produit'typePrixRigueur'=> 1]); 
  990.                    //->find($prixId );
  991.                    if($objetPrix == null){
  992.                         $objetCible $cibleRepository->findOneBy(['etat'=>3'abonne'=>$user->getAbonne()]);
  993.                         $objetCarat $caracteristiquePrixRepository->findOneBy(['etat'=>3'abonne'=>$user->getAbonne()]);
  994.                         $objetPrix = new App\Entity\stock\PrixRigueur();
  995.                         if($user->getAbonne()->getTypeAbonne()->getId()!=1){
  996.                             $objetPrix->setCible($objetCible );
  997.                             $objetPrix->setCaracteristiquePrix($objetCarat);
  998.                         }
  999.                         
  1000.                         $objetPrix->setProduit($produit);
  1001.                         $objetPrix->setInfoPrixRigueur($prixachat);
  1002.                         $objetPrix->setTypePrixRigueur(1);
  1003.                         $objetPrix->setEtatPrixRigueur(1);
  1004.                         $objetPrix->setAbonne($user->getAbonne());
  1005.                         $em->persist($objetPrix);
  1006.                         $em->flush();
  1007.     
  1008.                     }
  1009.                    $uneLigneCmde->setAnnule(0);
  1010.                    $uneLigneCmde->setCommandeTmp($commande);
  1011.                    $uneLigneCmde->setMontantAutreTaxe(0);
  1012.                    $uneLigneCmde->setProduit($produit);
  1013.                  
  1014.                    $uneLigneCmde->setQuantite($nbre);
  1015.                    $uneLigneCmde->setPrixRigueur($objetPrix);
  1016.                    $uneLigneCmde->setMontantHt($total);
  1017.                    ($commande->getTypeCommande() == 2) ? $uneLigneCmde->setTauxTva((float) $produit->getTauxTva()) : $uneLigneCmde->setTauxTva(0);
  1018.                    $em->persist($uneLigneCmde);
  1019.                    $em->flush($uneLigneCmde);
  1020.                   /* if($user->getCaisse() ==null ){
  1021.                         $listeProduit = $produitRepository->getAllProduitAjax($sessionData['abonneId']);
  1022.                     }else{
  1023.                         //$listeProduit = $produitRepository->getAllProduitAjax($sessionData['abonneId']);  
  1024.                         $listeProduit = $produitRepository->getAllProduitCaisseAjax($sessionData['abonneId'], $user->getCaisse()->getId());
  1025.                     }*/
  1026.                     $listeProduit $produitRepository->getAllFournisseurProduitAjax$sessionData['abonneId'],  $idFournisseur);
  1027.                    $add['all'] = $listeProduit;
  1028.                    $add['existe'] = 0;
  1029.                    $add['id'] = $uneLigneCmde->getId();
  1030.                    $add['prod'] = $produit->getNomProduit();
  1031.                    $add['fourn'] = '-';//$produit->getFournisseur()->getNomFournisseur();
  1032.                    $add['qte'] = $uneLigneCmde->getQuantite();
  1033.                    $add['tauxTva'] = $uneLigneCmde->getTauxTva();
  1034.                    $add['montant'] = $uneLigneCmde->getMontantHt();
  1035.                    $add['linetotal'] = 0;
  1036.                }
  1037.            $em->getConnection()->commit();
  1038.         } catch (Exception $exc) {
  1039.             $em->getConnection()->rollBack();
  1040.             throw $exc;
  1041.         }
  1042.        
  1043.         return new Response(json_encode(array('add' => $add)));
  1044.     }
  1045.     public function updateLineCmdeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1046.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  1047.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  1048.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  1049.     TypeOperationRepository $typeOperationRepository,LigneCommandeRepository $ligneCommandeRepository
  1050.     ) {
  1051.         /*
  1052.          * Nom de l'action en cours
  1053.          */
  1054.         $nomAction __FUNCTION__;
  1055.         /*
  1056.          * Description de l'action de l'action en cours
  1057.          */
  1058.         $descAction 'mise à jour une nouvelle ligne commande!';
  1059.         /*
  1060.          * Préparation du message de log 
  1061.          */
  1062.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  1063.         /*
  1064.          * Service de gestion des droits
  1065.          */
  1066.         
  1067.         /*
  1068.          * Informations de session
  1069.          */
  1070.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  1071.         /*
  1072.          * Locale en cours
  1073.          */
  1074.         $locale $loginManager->getLocale();
  1075.         $this->data['locale'] = $locale;
  1076.         /*
  1077.          * On vérifie si l'utilisateur est connecté
  1078.          */
  1079.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  1080.         //$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
  1081.         //$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
  1082.         $tabInfoDroit['nomControleur'] = $this->nom;
  1083.         $tabInfoDroit['descControleur'] = $this->description;
  1084.         $tabInfoDroit['nomAction'] = $nomAction;
  1085.         $tabInfoDroit['descAction'] = $descAction;
  1086.         
  1087.         $locale $loginManager->getLocale();
  1088.         $this->data['locale'] = $locale;
  1089.         $this->request $request;
  1090.         $em $this->getDoctrine()->getManager();
  1091.         $p = (int) trim($this->request->get('produit'));
  1092.         $produit $produitRepository->find($p);
  1093.         $add = array();
  1094.         $add['error'] = 0;
  1095.         if (!$produit instanceof Produit) {
  1096.             $add['error'] = 1;
  1097.             return new Response(json_encode(array('add' => $add)));
  1098.         }
  1099.        
  1100.         $commande trim($this->request->get('commande'));
  1101.         $user $utilisateurRepository->find($sessionData['id']);
  1102.         ($commande != '') ? $commande $commandeRepository->find($commande) : $commande '';
  1103.         $nbre trim($this->request->get('nbre'));
  1104.         ($nbre != '') ? $nbre = (int) $nbre $nbre 0;
  1105.         $total trim($this->request->get('total'));
  1106.         $idFournisseur $commande->getFournisseur()->getId();
  1107.         
  1108.         
  1109.         $prixachat trim($this->request->get('prixachat'));
  1110.         // $total = trim($this->request->get('total'));
  1111.         
  1112.         
  1113.         ($total != '') ? $total = (int) $total $total 0;
  1114.         $montantHt trim($this->request->get('mttht'));
  1115.         $siVenteCredit trim($this->request->get('siVenteCredit'));
  1116.         ($montantHt != '') ? $montantHt = (int) $montantHt $montantHt 1;
  1117.         
  1118.         $statutAction = (int) trim($this->request->get('statut'));
  1119.         
  1120.         
  1121.         $em->getConnection()->beginTransaction();
  1122.         try {
  1123.             
  1124.                 if (($produit instanceof Produit) && ($commande instanceof Commande) && $nbre 0) {
  1125.                    //$existe = $em->getRepository($this->stockBundle.'LigneCommandeTmp')->findOneBy(array('produit'=>$produit->getId(),'commandeTmp'=>$commande->getId()));;
  1126.                   
  1127.                   // var_dump(1);exit;
  1128.                   
  1129.                    if ($statutAction === 0) {
  1130.                        $uneLigneCmde = new LigneCommande();
  1131.                    } else {
  1132.                        $uneLigneCmde $ligneCommandeRepository->find($statutAction);
  1133.                    }
  1134.                    $objetPrix $prixRigueurRepository->findOneBy(['infoPrixRigueur'=>$prixachat'produit'=>$produit'typePrixRigueur'=> 1]); 
  1135.                    
  1136.                    if($objetPrix == null){
  1137.                         //$objetCible = $cibleRepository->findOneBy(['etat'=>3, 'abonne'=>$user->getAbonne()]);
  1138.                         //$objetCarat = $caracteristiquePrixRepository->findOneBy(['etat'=>3, 'abonne'=>$user->getAbonne()]);
  1139.                         $objetPrix = new PrixRigueur();
  1140.                             //// $objetPrix->setCaracteristiquePrix($objetCarat);
  1141.                         $objetPrix->setProduit($produit);
  1142.                         $objetPrix->setInfoPrixRigueur($prixachat);
  1143.                         $objetPrix->setTypePrixRigueur(1);
  1144.                         $objetPrix->setEtatPrixRigueur(1);
  1145.                         $objetPrix->setAbonne($user->getAbonne());
  1146.                         $em->persist($objetPrix);
  1147.                         $em->flush();
  1148.                     }
  1149.                    $uneLigneCmde->setAnnule(0);
  1150.                    $uneLigneCmde->setCommande($commande);
  1151.                    $uneLigneCmde->setMontantAutreTaxe(0);
  1152.                    $uneLigneCmde->setProduit($produit);
  1153.                  
  1154.                    $uneLigneCmde->setQuantite($nbre);
  1155.                    $uneLigneCmde->setPrixRigueur($objetPrix);
  1156.                    $uneLigneCmde->setMontantHt($total);
  1157.                    ($commande->getTypeCommande() == 2) ? $uneLigneCmde->setTauxTva((float) $produit->getTauxTva()) : $uneLigneCmde->setTauxTva(0);
  1158.                    $em->persist($uneLigneCmde);
  1159.                    $em->flush($uneLigneCmde);
  1160.                   
  1161.                     $listeProduit $produitRepository->getAllFournisseurProduitAjax$sessionData['abonneId'],  $idFournisseur);
  1162.                    $add['all'] = $listeProduit;
  1163.                    $add['existe'] = 0;
  1164.                    $add['id'] = $uneLigneCmde->getId();
  1165.                    $add['prod'] = $produit->getNomProduit();
  1166.                    $add['fourn'] = '-';//$produit->getFournisseur()->getNomFournisseur();
  1167.                    $add['qte'] = $uneLigneCmde->getQuantite();
  1168.                    $add['tauxTva'] = $uneLigneCmde->getTauxTva();
  1169.                    $add['montant'] = $uneLigneCmde->getMontantHt();
  1170.                    $add['linetotal'] = 0;
  1171.                }
  1172.            $em->getConnection()->commit();
  1173.         } catch (Exception $exc) {
  1174.             $em->getConnection()->rollBack();
  1175.             throw $exc;
  1176.         }
  1177.        
  1178.         return new Response(json_encode(array('add' => $add)));
  1179.     }
  1180.     public function addClientLineCmdeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1181.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  1182.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  1183.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  1184.     TypeOperationRepository $typeOperationRepository
  1185.     ) {
  1186.        // var_dump(1);exit;
  1187.         /*
  1188.          * Nom de l'action en cours
  1189.          */
  1190.         $nomAction __FUNCTION__;
  1191.         /*
  1192.          * Description de l'action de l'action en cours
  1193.          */
  1194.         $descAction 'Ajouter une nouvelle ligne commande pour un client !';
  1195.         /*
  1196.          * Préparation du message de log 
  1197.          */
  1198.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  1199.         /*
  1200.          * Service de gestion des droits
  1201.          */
  1202.         
  1203.         /*
  1204.          * Informations de session
  1205.          */
  1206.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  1207.         /*
  1208.          * Locale en cours
  1209.          */
  1210.         $locale $loginManager->getLocale();
  1211.         $this->data['locale'] = $locale;
  1212.         /*
  1213.          * On vérifie si l'utilisateur est connecté
  1214.          */
  1215.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  1216.         //$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
  1217.         //$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
  1218.         $tabInfoDroit['nomControleur'] = $this->nom;
  1219.         $tabInfoDroit['descControleur'] = $this->description;
  1220.         $tabInfoDroit['nomAction'] = $nomAction;
  1221.         $tabInfoDroit['descAction'] = $descAction;
  1222.         $locale $loginManager->getLocale();
  1223.         $this->data['locale'] = $locale;
  1224.         $this->request $request;
  1225.         $em $this->getDoctrine()->getManager();
  1226.         $p = (int) trim($this->request->get('produit'));
  1227.         $ref $this->request->get('refCommande');
  1228.         $produit $produitRepository->find($p);
  1229.         $user $utilisateurRepository->find($sessionData['id']);
  1230.         
  1231.         $client $clientRepository->find(trim($this->request->get('clientId')));
  1232.         $add = array();
  1233.        // var_dump("ttt = ".$this->request->get('clientId'));exit;
  1234.         $add['error'] = 0;
  1235.         if (!$produit instanceof App\Entity\stock\Produit) {
  1236.             $add['error'] = 1;
  1237.             return new Response(json_encode(array('add' => $add)));
  1238.         }
  1239.         $nbre trim($this->request->get('nbre'));
  1240.         ($nbre != '') ? $nbre = (int) $nbre $nbre 0;
  1241.         $total trim($this->request->get('total'));
  1242.         
  1243.         $prixachat trim($this->request->get('prixachat'));
  1244.         $prixId trim($this->request->get('prixId'));
  1245.         $montantPaye trim($this->request->get('montantPaye'));
  1246.         $typeOperation trim($this->request->get('typeOperation'));
  1247.         // $total = trim($this->request->get('total'));
  1248.         
  1249.         
  1250.         ($total != '') ? $total = (int) $total $total 0;
  1251.         $montantHt trim($this->request->get('mttht'));
  1252.         //var_dump($montantHt);exit;
  1253.         $siVenteCredit trim($this->request->get('siVenteCredit'));
  1254.         $cible trim($this->request->get('cible'));
  1255.         $carateristique trim($this->request->get('carateristique'));
  1256.         ($montantHt != '') ? $montantHt = (int) $montantHt $montantHt 1;
  1257.         
  1258.         $statutAction = (int) trim($this->request->get('statut'));
  1259.         $typeCat = (int) trim($this->request->get('typeCat'));
  1260.         $commande $commandeTmpRepository->findOneBy(["refBonCommande"=>$ref]);
  1261.         if( $commande  == null){
  1262.             $commande  =  new CommandeTmp();
  1263.             $commande->setCodeCommande($ref);
  1264.             $commande->setRefBonCommande($ref);
  1265.             $commande->setClient($client);  
  1266.             $commande->setAbonne($client->getAbonne());
  1267.         }
  1268.         $commande->setTypeCategorie($typeCat);
  1269.         $commande->setTypeCommande($typeCat);
  1270.         $em->persist($commande);
  1271.         $em->flush();
  1272.         
  1273.         $em->getConnection()->beginTransaction();
  1274.         try {
  1275.                 if (($produit instanceof App\Entity\stock\Produit) && ($commande instanceof App\Entity\stock\CommandeTmp) ) {
  1276.                    //$existe = $em->getRepository($this->stockBundle.'LigneCommandeTmp')->findOneBy(array('produit'=>$produit->getId(),'commandeTmp'=>$commande->getId()));;
  1277.                    $existe $ligneCommandeTmpRepository->allLigneCommandeTmp($produit->getId(), $commande->getId(), $statutAction);
  1278.                    if ($commande->getTypeCommande() == 1) {
  1279.                        $produit->setMontantHtAchat($prixachat);
  1280.                        $produit->setMontantHtVente($montantHt);
  1281.                        $produit->setMontantTtcVente($montantHt);
  1282.                        $em->persist($produit);
  1283.                        $em->flush($produit);
  1284.                    }
  1285.                    /* if ($existe > 0) {
  1286.                        return new Response(json_encode(array('add' => $add)));
  1287.                     }*/
  1288.                    if ($statutAction === 0) {
  1289.                        $uneLigneCmde = new LigneCommandeTmp();
  1290.                    } else {
  1291.                        $uneLigneCmde $ligneCommandeTmpRepository->find($statutAction);
  1292.                    }
  1293.                    $objetPrix $prixRigueurRepository->findOneBy(['infoPrixRigueur'=>$prixachat'produit'=>$produit'typePrixRigueur'=> 1]); 
  1294.                    
  1295.                    if($objetPrix == null){
  1296.                        //var_dump($cible,$carateristique);exit;
  1297.                         $objetCible $cibleRepository->find($cible);
  1298.                         $objetCarat $caracteristiquePrixRepository->find($carateristique);
  1299.                         $objetPrix = new App\Entity\stock\PrixRigueur();
  1300.                         //$objetPrix->setCible($objetCible );
  1301.                         //$objetPrix->setCaracteristiquePrix($objetCarat);
  1302.                         $objetPrix->setProduit($produit);
  1303.                         $objetPrix->setInfoPrixRigueur($prixachat);
  1304.                         $objetPrix->setTypePrixRigueur(1);
  1305.                         $objetPrix->setEtatPrixRigueur(1);
  1306.                         $objetPrix->setAbonne($user->getAbonne());
  1307.                         $em->persist($objetPrix);
  1308.                         $em->flush();
  1309.     
  1310.                     }
  1311.                    
  1312.                    $uneLigneCmde->setAnnule(0);
  1313.                    $uneLigneCmde->setCommandeTmp($commande);
  1314.                    $uneLigneCmde->setMontantAutreTaxe(0);
  1315.                    $uneLigneCmde->setProduit($produit);
  1316.                    $uneLigneCmde->setClient($client);
  1317.                    $uneLigneCmde->setQuantite($nbre);
  1318.                    $uneLigneCmde->setTypeOperation($typeOperation);
  1319.                    //if( $user->getCaisse()->getTypeCaisse()!= 2 ){
  1320.                         $uneLigneCmde->setPrixrigueur($objetPrix);
  1321.                    //}
  1322.                    
  1323.                     if( $user->getCaisse()->getTypeCaisse()== ){
  1324.                         $uneLigneCmde->setMontantPaye($prixachat);
  1325.                         $uneLigneCmde->setMontantHt($prixachat);
  1326.                     }else{
  1327.                         $montantPaye = (int)$prixachat * (int)$nbre;
  1328.                         $uneLigneCmde->setMontantPaye($montantPaye);
  1329.                         $uneLigneCmde->setMontantHt($total);
  1330.                     }
  1331.                    
  1332.                    
  1333.                    ($commande->getTypeCommande() == 2) ? $uneLigneCmde->setTauxTva((float) $produit->getTauxTva()) : $uneLigneCmde->setTauxTva(0);
  1334.                    $em->persist($uneLigneCmde);
  1335.                    $em->flush($uneLigneCmde);
  1336.                    if($user->getCaisse() ==null ){
  1337.                     $listeProduit $produitRepository->getAllProduitAjax($sessionData['abonneId']);
  1338.                     }else{
  1339.                         //$listeProduit = $produitRepository->getAllProduitAjax($sessionData['abonneId']);  
  1340.                         $listeProduit $produitRepository->getAllProduitCaisseAjax($sessionData['abonneId'], $user->getCaisse()->getId());
  1341.                     }
  1342.                     $add['all'] = $listeProduit;
  1343.                    $add['existe'] = 0;
  1344.                    $add['id'] = $uneLigneCmde->getId();
  1345.                    $add['prod'] = $produit->getNomProduit();
  1346.                    $add['fourn'] = '-';//$produit->getFournisseur()->getNomFournisseur();
  1347.                    if( $user->getCaisse()->getTypeCaisse()== ){
  1348.                         $add['qte'] = "-";
  1349.                     }else{
  1350.                         $add['qte'] = $uneLigneCmde->getQuantite();
  1351.                     }
  1352.                   
  1353.                    $add['tauxTva'] = $uneLigneCmde->getTauxTva();
  1354.                    $add['montant'] = $uneLigneCmde->getMontantHt();
  1355.                    $add['paye'] = $uneLigneCmde->getMontantPaye();
  1356.                    $add['linetotal'] = 0;
  1357.                    $add['montantTotal'] = $ligneCommandeTmpRepository->sumLigneCommandeTmp($commande->getId());
  1358.                    
  1359.                    
  1360.                }
  1361.            $em->getConnection()->commit();
  1362.         } catch (Exception $exc) {
  1363.             $em->getConnection()->rollBack();
  1364.             throw $exc;
  1365.         }
  1366.        
  1367.         return new Response(json_encode(array('add' => $add)));
  1368.     }
  1369.     public function supprLineCmdeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1370.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  1371.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  1372.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  1373.     TypeOperationRepository $typeOperationRepository
  1374.     ) {
  1375.         /*
  1376.          * Nom de l'action en cours
  1377.          */
  1378.         $nomAction __FUNCTION__;
  1379.         /*
  1380.          * Description de l'action de l'action en cours
  1381.          */
  1382.         $descAction 'Ajouter une nouvelle ligne commande!';
  1383.         /*
  1384.          * Préparation du message de log 
  1385.          */
  1386.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  1387.         /*
  1388.          * Service de gestion des droits
  1389.          */
  1390.         
  1391.         /*
  1392.          * Informations de session
  1393.          */
  1394.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  1395.         /*
  1396.          * Locale en cours
  1397.          */
  1398.         $locale $loginManager->getLocale();
  1399.         $this->data['locale'] = $locale;
  1400.         /*
  1401.          * On vérifie si l'utilisateur est connecté
  1402.          */
  1403.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  1404.         //$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
  1405.         //$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
  1406.         $tabInfoDroit['nomControleur'] = $this->nom;
  1407.         $tabInfoDroit['descControleur'] = $this->description;
  1408.         $tabInfoDroit['nomAction'] = $nomAction;
  1409.         $tabInfoDroit['descAction'] = $descAction;
  1410.         $locale $loginManager->getLocale();
  1411.         $this->data['locale'] = $locale;
  1412.         $this->request $request;
  1413.         $em $this->getDoctrine()->getManager();
  1414.         $lc = (int) trim($this->request->get('linecmdesuppr'));
  1415.         $lineC $ligneCommandeTmpRepository->find($lc);
  1416.         $em->getConnection()->beginTransaction();
  1417.         try {
  1418.             if ($lineC instanceof LigneCommandeTmp) {
  1419.                 //var_dump('OKI');exit;
  1420.                 $cmde $lineC->getCommandeTmp();
  1421.                 $cmde->removeLignecommandeTmp($lineC);
  1422.                 $em->persist($cmde);
  1423.                 $em->persist($lineC);
  1424.                 $em->flush();
  1425.             }
  1426.             $em->getConnection()->commit();
  1427.         $sup = array();
  1428.         } catch (Exception $exc) {
  1429.             $em->getConnection()->rollBack();
  1430.             throw $exc;
  1431.         }
  1432.         
  1433.         return new Response(json_encode(array('suppr' => $sup)));
  1434.     }
  1435.     /**
  1436.      * Methode s'occupant de detail du Commande.
  1437.      *
  1438.      * @author armand.tevi@gmail.com
  1439.      * @copyright ADMIN 2015
  1440.      *
  1441.      * @version 1
  1442.      *
  1443.      * @return twig d'ajout d'un abonne detailCommande.html.twig
  1444.      */
  1445.     public function exportExcelCommandeAction(Request $request$id,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1446.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  1447.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  1448.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  1449.     TypeOperationRepository $typeOperationRepository
  1450.     ) {
  1451.                         /*
  1452.          * Nom de l'action en cours
  1453.          */
  1454.         $nomAction __FUNCTION__;
  1455.         /*
  1456.          * Description de l'action de l'action en cours
  1457.          */
  1458.         $descAction "Export en Excel d'une commande ";
  1459.         $locale ='fr';
  1460.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc$loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository );
  1461.         if($valRetour==1){
  1462.             return $this->redirect($this->generateUrl('app_logout'));
  1463.         }elseif($valRetour==2){
  1464.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  1465.         }
  1466.         $em $this->getDoctrine()->getManager();
  1467.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  1468.         $objetAbonne $this->getAbonne($em$sessionData['abonneId'],$abonneRepository);
  1469.         try {
  1470.             /*
  1471.              * Récupération du détail de l'utilisateur
  1472.              */
  1473.            
  1474.             $detailCommande $commandeRepository->getOneCommande($id);
  1475.             $listeCategorie$categorieProduitRepository->getAllCategorieProduit($objetAbonne->getId());
  1476.             $i 0;
  1477.             foreach ($listeCategorie as $uneCategorie) {
  1478.                 $listeProduit[$uneCategorie->getId()] = $commandeRepository->getListeCommandeByCategorie($detailCommande[0]->getId(), $uneCategorie->getId());
  1479.                
  1480.             }
  1481.         } catch (\Exception $e) {
  1482.             var_dump($e->getMessage());
  1483.             exit;
  1484.         }
  1485.         $locale "fr";
  1486.         /*
  1487.          * Préparation des informations que nous allons traiter  sur le twig
  1488.          */
  1489.         $this->data['detailCommande'] = $detailCommande;
  1490.         $this->data['listeProduit'] = $listeProduit;
  1491.         $this->data['listeCategorie'] = $listeCategorie;
  1492.         //$this->data['listeCommandeOneCommande'] = $listeCommandeOneCommande;
  1493.         $this->data['locale'] = $locale;
  1494.         $this->data['listeCommandeOneCommande'] = array();
  1495.         $file = new CommandeByCategorieExcelBuilder(); 
  1496.         $file->hydrate($this->data);
  1497.        
  1498.         $response = new BinaryFileResponse($file->build());
  1499.         $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT,'commande.xlsx');
  1500.         return $response;
  1501.     
  1502. }
  1503.     
  1504.     /**
  1505.      * Methode s'occupant de detail du Commande.
  1506.      *
  1507.      * @author armand.tevi@gmail.com
  1508.      * @copyright ADMIN 2015
  1509.      *
  1510.      * @version 1
  1511.      *
  1512.      * @return twig d'ajout d'un abonne detailCommande.html.twig
  1513.      */
  1514.     public function detailCommandeAction(Request $request$id,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1515.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  1516.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  1517.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  1518.     TypeOperationRepository $typeOperationRepository
  1519.     ) {
  1520.                 /*
  1521.                 * Nom de l'action en cours
  1522.                 */
  1523.                 $nomAction __FUNCTION__;
  1524.                 /*
  1525.                 * Description de l'action de l'action en cours
  1526.                 */
  1527.                 $descAction "Détail d'une commande ";
  1528.                 $locale ='fr';
  1529.                 $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc$loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository );
  1530.                 $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  1531.       
  1532.                 if($valRetour==1){
  1533.                     return $this->redirect($this->generateUrl('app_logout'));
  1534.                 }elseif($valRetour==2){
  1535.                     return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  1536.                 }
  1537.                 try {
  1538.                     /*
  1539.                     * Récupération du détail de l'utilisateur
  1540.                     */
  1541.                     $em $this->getDoctrine()->getManager();
  1542.                     $detailCommande $commandeRepository->getOneCommande($id);
  1543.                     $i 0;
  1544.                     foreach ($detailCommande[0]->getFournisseur()->getFournisseurproduits() as $unProduitFournisseur) {
  1545.                         $listeProduit[$i] = $produitRepository->find($unProduitFournisseur->getProduit()->getId());
  1546.                         ++$i;
  1547.                     }
  1548.                     // Recuperation des dernieres commandes liees à ce commande
  1549.                     // $listeCommandeOneCommande = $commandeRepository->getAllcommandeCommande($id);            
  1550.                     //Afficher les 
  1551.                 } catch (\Exception $e) {
  1552.                 var_dump($e->getMessage());
  1553.                 exit;
  1554.                 }
  1555.                 $locale "fr";
  1556.                 /*
  1557.                 * Préparation des informations que nous allons traiter  sur le twig
  1558.                 */
  1559.                 $this->data['detailCommande'] = $detailCommande;
  1560.                 $this->data['listeProduit'] = $listeProduit;
  1561.                 //$this->data['listeCommandeOneCommande'] = $listeCommandeOneCommande;
  1562.                 $this->data['locale'] = $locale;
  1563.                 $this->data['listeCommandeOneCommande'] = array();
  1564.                 $this->data['actionRepository'] = $actionRepository;
  1565.                 return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/detailCommande.html.twig'$this->data$this->response);
  1566. }
  1567.      /**
  1568.      * Methode s'occupant de detail du Commande.
  1569.      *
  1570.      * @author armand.tevi@gmail.com
  1571.      * @copyright ADMIN 2015
  1572.      *
  1573.      * @version 1
  1574.      *
  1575.      * @return twig d'ajout d'un abonne detailCommande.html.twig
  1576.      */
  1577.     public function imprimerBonCommandeAction(Request $request$id,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1578.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  1579.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  1580.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  1581.     TypeOperationRepository $typeOperationRepository
  1582.     ) {
  1583.        /*
  1584.         * Nom de l'action en cours
  1585.         */
  1586.         $nomAction __FUNCTION__;
  1587.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  1588.         try {
  1589.             /*
  1590.             * Récupération du détail de l'utilisateur
  1591.             */
  1592.             $em $this->getDoctrine()->getManager();
  1593.             $objetCommande $commandeRepository->find($id); ///getOneCommande($id);
  1594.             $objetAbonne $abonneRepository->find($sessionData['abonneId']);
  1595.             $objetUtilisateur $utilisateurRepository->find($sessionData['id']);
  1596.            
  1597.             // Recuperation des dernieres commandes liees à ce commande
  1598.             // $listeCommandeOneCommande = $commandeRepository->getAllcommandeCommande($id);            
  1599.             //Afficher les 
  1600.         } catch (\Exception $e) {
  1601.             var_dump($e->getMessage());
  1602.             exit;
  1603.         }
  1604.         $locale "fr";
  1605.        /*
  1606.         * Préparation des informations que nous allons traiter  sur le twig
  1607.         */
  1608.         $this->data['objetCommande'] = $objetCommande;
  1609.         $this->data['objetAbonne'] = $objetAbonne;
  1610.         $this->data['objetUtilisateur'] = $objetUtilisateur;
  1611.         $this->data['actionRepository'] = $actionRepository;
  1612.         
  1613.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/imprimerBonCommande.html.twig'$this->data$this->response);
  1614.     }
  1615.     /**
  1616.      * Methode s'occupant des entree sortie des commandes.
  1617.      *
  1618.      * @author armand.tevi@gmail.com
  1619.      * @copyright ADMIN 2015
  1620.      *
  1621.      * @version 1
  1622.      *
  1623.      * @return twig d'ajout d'un abonne livraisionUneCommande.html.twig
  1624.      */
  1625.     public function livraisonCommandeAction(Request $request$id$type,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1626.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  1627.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  1628.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  1629.     TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository
  1630.     ) {
  1631.                         /*
  1632.          * Nom de l'action en cours
  1633.          */
  1634.         $nomAction __FUNCTION__;
  1635.         /*
  1636.          * Description de l'action de l'action en cours
  1637.          */
  1638.         $descAction "Gérer les livraisons de commande ";
  1639.         $locale ='fr';
  1640.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc$loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository );
  1641.           $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  1642.         if($valRetour==1){
  1643.             return $this->redirect($this->generateUrl('app_logout'));
  1644.         }elseif($valRetour==2){
  1645.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  1646.         }        
  1647.         try {
  1648.             /*
  1649.              * Récupération du détail de l'utilisateur
  1650.              */
  1651.             $em $this->getDoctrine()->getManager();
  1652.             $detailCommande $commandeRepository->getOneCommande($id);
  1653.             $objetAbonne $this->getAbonne($em,$sessionData['abonneId'], $abonneRepository);
  1654.             // Recuperation des dernieres commandes liees à ce commande
  1655.             // $listeCommandeOneCommande = $commandeRepository->getAllcommandeCommande($id);             
  1656.         } catch (\Exception $e) {
  1657.             var_dump($e->getMessage());
  1658.             exit;
  1659.         }
  1660.         $objetlocalisation $localisationRepository->findOneBy(array("commande"=>$detailCommande) );
  1661.        
  1662.         $latitude =0;
  1663.         $longitude =0;
  1664.         if ($objetlocalisation != null) {
  1665.             $latitude $objetlocalisation->getLatitude();
  1666.             $longitude =$objetlocalisation->getLongitude();
  1667.         }
  1668.         $listeGroupement $groupementRepository->findBy(['abonne'=> $objetAbonne'etatGroupement'=>1]);
  1669.        
  1670.         $queryResult $producteurRepository->getAllProducteur(0000000100000,0,5,0,0,$sessionData['abonneId']);
  1671.             
  1672.         // $listePointLocalisation= $localisationRepository->findBy(array("commande"=>$detailCommande, "typeLocalisation"=>2));
  1673.         /*
  1674.          * Préparation des informations que nous allons traiter  sur le twig
  1675.          */
  1676.          $listeRechercheProducteur $queryResult['data'];  
  1677.          $this->data['listeProducteur'] = $listeRechercheProducteur;
  1678.          $this->data['listeGroupement'] =$listeGroupement;
  1679.         $this->data['detailCommande'] = $detailCommande;
  1680.         $this->data['latitude'] = $latitude;
  1681.         $this->data['longitude'] = $longitude;
  1682.         //$this->data['listeCommandeOneCommande'] = $listeCommandeOneCommande;
  1683.         $this->data['locale'] = $locale;
  1684.         //$this->data['listePointLocalisation'] = $listePointLocalisation;
  1685.         $this->data['type'] = $type;
  1686.         $this->data['listeCommandeOneCommande'] = array();
  1687.         $this->data['actionRepository'] = $actionRepository;
  1688.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/livraisonCommande.html.twig'$this->data$this->response);
  1689.     }
  1690.     
  1691.     /**
  1692.      * Methode s'occupant des entree sortie des commandes.
  1693.      *
  1694.      * @author armand.tevi@gmail.com
  1695.      * @copyright ADMIN 2015
  1696.      *
  1697.      * @version 1
  1698.      * @ParamConverter("fournisseur", options={"mapping": {"id": "id"}})
  1699.      * 
  1700.      * @return twig d'ajout d'un abonne livraisionUneCommande.html.twig
  1701.      */
  1702.     public function livraisonDirectCommandeAction(Request $request$id,    $type,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1703.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  1704.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  1705.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  1706.     TypeOperationRepository $typeOperationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
  1707.     ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository
  1708.     ) {
  1709.         /*
  1710.          * Nom de l'action en cours
  1711.          */
  1712.         $nomAction __FUNCTION__;
  1713.         /*
  1714.          * Description de l'action de l'action en cours
  1715.          */
  1716.         $descAction "Gérer les livraisons de commande ";
  1717.         $locale ='fr';
  1718.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc$loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository );
  1719.         if($valRetour==1){
  1720.             return $this->redirect($this->generateUrl('app_logout'));
  1721.         }elseif($valRetour==2){
  1722.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  1723.         }
  1724.         $unFournisseur =null;
  1725.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  1726.         $em $this->getDoctrine()->getManager();
  1727.                 $prod $sessionData["produit_id"];
  1728.         /*
  1729.          * Préparation des informations que nous allons traiter  sur le twig
  1730.          */
  1731.         //Recuperer la liste des collecteurs
  1732.         $objetUtilisateur $utilisateurRepository->find($sessionData['id']);
  1733.        // $listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($objetUtilisateur->getVille()->getId(),$prod);
  1734.        $villeId =0;
  1735.        $typeProd TypeFournisseur::FOURNISSEUR;;
  1736.        $listeFournisseur $fournisseurRepository->getAllFournisseurByZone($villeId,$typeProd,$sessionData['abonneId']);
  1737.         //$listeFournisseur = $fournisseurRepository->getAllFournisseur();
  1738.         if($id !=0){
  1739.             $unFournisseur $fournisseurRepository->find($id);            
  1740.         }
  1741.         $listeCritere $critereRepository->getAllCritere();
  1742.          
  1743.         $listeTypeCritere $typeCritereRepository->getAllTypeCritere();
  1744.         $listeChauffeur $chauffeurRepository->getAllChauffeur($sessionData['abonneId']);
  1745.         $tabInfoCritere $infoCritereRepository->getTabListeInfoCritere();
  1746.         $listePrix $prixRigueurRepository->findAll();
  1747.         // $listeProducteur = $producteurRepository->findAll();
  1748.         $listeProduit $produitRepository->findBy(['abonne'=>$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository),'siAgricole'=>1,'siAgricoleParent'=>0]);
  1749.         $d = new \DateTime();
  1750.         $an $d->format('Y');
  1751.         $m $d->format('m');
  1752.         $j $d->format('d');
  1753.         
  1754.          $refLiv $this->getRefCommande($em1$an$m$entite 'LIVRER'$taille 5$objetUtilisateur->getId());
  1755.         // var_dump($tabInfoCritere);exit;
  1756.         $this->data['unFournisseur'] = $unFournisseur;
  1757.         $this->data['listeCritere'] = $listeCritere;
  1758.         $this->data['listeTypeCritere'] = $listeTypeCritere;
  1759.         $this->data['tabInfoCritere'] = $tabInfoCritere;
  1760.         $this->data['listeChauffeur'] = $listeChauffeur;
  1761.         $this->data['locale'] = $locale;
  1762.         //$this->data['listeProducteur'] = $listeProducteur;
  1763.         $this->data['listeFournisseur'] = $listeFournisseur;
  1764.         $this->data['listePrix'] = $listePrix;
  1765.         $this->data['listeProduit'] = $listeProduit;
  1766.         $this->data['idCol'] = $id;
  1767.         $this->data['refLiv'] = "L".$refLiv;
  1768.         $this->data['type'] = $type;
  1769.         $this->data['listeCommandeOneCommande'] = array();
  1770.         $this->data['actionRepository'] = $actionRepository;
  1771.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/livraisonDirectCommande.html.twig'$this->data$this->response);
  1772.     }
  1773.     /**
  1774.      * Activation, suppression, désactivation de categorie.
  1775.      * @return Response
  1776.      */
  1777.     public function traiterLivraisonAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1778.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  1779.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  1780.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  1781.     TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
  1782.     ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,LigneCommandeRepository $ligneCommandeRepository
  1783.     ) {
  1784.         $rep = array('etat' => false'msg' => 'Erreur survenue lors du traitement');
  1785.         /*
  1786.          * Nom de l'action en cours
  1787.          */
  1788.         $nomAction 'traiterLivraisonAction';
  1789.         /*
  1790.          * Description de l'action de l'action en cours
  1791.          */
  1792.         $descAction 'traiter une commande';
  1793.         /*
  1794.          * Préparation du message de log 
  1795.          */
  1796.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  1797.         /*
  1798.          * Service de gestion des droits
  1799.          */
  1800.         
  1801.         /*
  1802.          * Informations de session
  1803.          */
  1804.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  1805.         /*
  1806.          * Locale en cours
  1807.          */
  1808.         $locale $loginManager->getLocale();
  1809.         $this->data['locale'] = $locale;
  1810.         /*
  1811.          * On vérifie si l'utilisateur est connecté
  1812.          */
  1813.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  1814.         if ($status['isConnecte']) {
  1815.             /*
  1816.              * Au cas ou l'utilisateur est connecté on vérifie s'il nest pas innactif. S'il est innactif
  1817.              * on garde en mémoire flash la route actuelle pour effectuer une redirection lors de la prochaine connexion
  1818.              */
  1819.             if ($status['isInnactif']) {
  1820.                 $rep['msg'] = "Vous avez accusé un long moment d'inactivité. Veuillez-vous connecter de nouveau";
  1821.                 $loginManager->logout(LoginManager::SESSION_DATA_NAME);
  1822.                 return new Response(json_encode($rep));
  1823.             }
  1824.             /*
  1825.              * Seuls les utilisateurs admins ont le droit d'acceder Ã  cette action
  1826.              */
  1827.             if (!$status['isUser']) {
  1828.                 return new Response(json_encode($rep));
  1829.             }
  1830.         } else {
  1831.             $rep['msg'] = 'Vous Ãªtes déconnecté. Veuillez-vous connecter de nouveau';
  1832.             return new Response(json_encode($rep));
  1833.         }
  1834.         $em $this->getDoctrine()->getManager();
  1835.         //$request = $this->getRequest();
  1836.         $em $this->getDoctrine()->getManager();
  1837.         if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
  1838.             $tempIds $request->request->get('codeLivr');
  1839.             $typeAction $request->request->get('typeAction');
  1840.             $codeCommande $request->request->get('codeCommande');
  1841.             $tabIds explode('|'$tempIds);
  1842.             $oneOk false;
  1843.             //Generation des reference pour la livraison et autres
  1844.             $d = new \DateTime();
  1845.             $an $d->format('Y');
  1846.             $m $d->format('m');
  1847.             $j $d->format('d');
  1848.             $objetCommande $commandeRepository->findOneBy(['codeCommande'=>$codeCommande]);
  1849.             //var_dump($tabIds );exit;
  1850.             $uneInfoLivraison = new App\Entity\stock\InfoLivrer();
  1851.             $uneInfoLivraison->setCommande($objetCommande);
  1852.             $uneInfoLivraison->setRefBonLivraison("xxx");
  1853.             $uneInfoLivraison->setRefBonReception("xxx");
  1854.             $uneInfoLivraison->setNbreTotalLivre(count($objetCommande->getLignecommandes()));
  1855.             $uneInfoLivraison->setNbreSaisie(count($objetCommande->getLignecommandes()));
  1856.             $em->persist($uneInfoLivraison);
  1857.             
  1858.             foreach ($tabIds as $idS) {
  1859.                 if ($idS != "") {
  1860.                     $newTabIds explode('-'$idS);
  1861.                     $LigneCommande $ligneCommandeRepository->find((int) $newTabIds[0]);
  1862.                     $uneLivraison = new App\Entity\stock\Livrer();
  1863.                     $resteLivre = (int) $LigneCommande->getQuantiteReste() - (int) $newTabIds[1];
  1864.                     $uneLivraison->setNbreReste(0);//$resteLivre
  1865.                     $uneLivraison->setinfolivrer($uneInfoLivraison);
  1866.                    // var_dump($request->get('quantite'.$LigneCommande->getId()), $LigneCommande->getId());exit;
  1867.                     $uneLivraison->setNbreLivre$LigneCommande->getQuantite()); //(int) $newTabIds[1] //$LigneCommande->getQuantite()
  1868.                     // Nombre total livré
  1869.                     $nombreTotalLivre = (int) $LigneCommande->getQuantiteLivre() + (int) $newTabIds[1];
  1870.                     $nombreResteTotalLivre = (int) $LigneCommande->getQuantite() - (int) $nombreTotalLivre;
  1871.                     $LigneCommande->setQuantiteLivre($LigneCommande->getQuantite());
  1872.                     if ($resteLivre <= 0) {
  1873.                         $LigneCommande->setEtatLigneCommande(2);
  1874.                     }
  1875.                     $LigneCommande->setQuantiteReste(0); //$nombreResteTotalLivre
  1876.                     //$LigneCommande
  1877.                     $em->persist($LigneCommande);
  1878.                     
  1879.                     $uneLivraison->setLignecommande($LigneCommande);
  1880.                     $uneLivraison->setDateLivraison(new \DateTime());
  1881.                     $uneLivraison->setEtatLivraison(1);
  1882.                     $unProduit $produitRepository->find($LigneCommande->getProduit()->getId());
  1883.                     if ($typeAction == 1) {
  1884.                         $action 'Livraison de la commande';
  1885.                         $uneLivraison->setRefBonReception("xxxx");
  1886.                         $uneLivraison->setRefBonLivraison('xxxx');
  1887.                         $nombretRestant = (int) $unProduit->getEnStockProduit() + (int) $newTabIds[1];
  1888.                         $unProduit->setEnStockProduit($nombretRestant);
  1889.                     } else {
  1890.                         $action 'Reception  de la commande';
  1891.                         $uneLivraison->setRefBonLivraison("xxxx");
  1892.                         $uneLivraison->setRefBonReception('xxxx');
  1893.                         $nombretRestant = (int) $unProduit->getEnStockProduit() - (int) $newTabIds[1];
  1894.                         $unProduit->setEnStockProduit($nombretRestant);
  1895.                     }
  1896.                     $em->persist($unProduit);
  1897.                     $em->persist($uneLivraison);
  1898.                     $this->manageStock($em, $$LigneCommande->getProduit()->getId(), $LigneCommande->getQuantite(), 1);
  1899.                     $oneOk true;
  1900.                     //           $infoLivraison = $infoLivraison.'|Nombre commandé :'.getQuantite().' - Livre : '+(int) $newTabIds[1].' - Reste Ã  livrer : '.$nombreResteTotalLivre;
  1901.                 }
  1902.                 $objetCommande->setSiRetrait(1);
  1903.                 $em->persist($objetCommande);
  1904.                     $em->flush();
  1905.             }
  1906.            
  1907.             //Enregistrer les information sur les producteurs
  1908.             $tabQuantiteProducteur $request->request->get('tabQuantiteProducteur');
  1909.             $tabInfoQuantiteProducteur =  explode('|'$tabQuantiteProducteur);
  1910.             // var_dump($tabInfoQuantiteProducteur);exit;
  1911.             foreach ($tabInfoQuantiteProducteur as $infoQuantiteProducteur) {
  1912.                 if($infoQuantiteProducteur != "" ){
  1913.                     $newTabData explode('-'$infoQuantiteProducteur);
  1914.                     $objetProducteurLivraison = new App\Entity\stock\ProducteurLivraison();
  1915.                     //Objet Producteur
  1916.                     $objetProducteur $producteurRepository->find($newTabData[1]);
  1917.                     $objetLigneCommande $ligneCommandeRepository->find($newTabData[2]);
  1918.                     $objetLivrer $livrerRepository->findOneBy(['lignecommande'=> $objetLigneCommande]);
  1919.                     $quantite $newTabData[0];
  1920.                     $objetProducteurLivraison->setProducteur($objetProducteur);
  1921.                     $objetProducteurLivraison->setLivrer($objetLivrer);
  1922.                     $objetProducteurLivraison->setQuantite($quantite);
  1923.                     $em->persist($objetProducteurLivraison);
  1924.                     $em->flush();
  1925.                 }
  1926.             }
  1927.             if ($oneOk) {
  1928.                 $this->get('session')->getFlashBag()->add('categorie.modifier.success''Opération Ã©ffectuée avec succès');
  1929.                 $rep['msg'] = '';
  1930.                 $rep['ref'] = $objetCommande->getFactures()[0]->getCodeFacture();//$refFacture;
  1931.                 // Preparation de l'envoi de mail 
  1932.                 //  $message = $action.' n° '.$codeCommande.' numéro de bon généré '.$refFacture.' '.$infoLivraison;
  1933.                 //   $mailManager = $this->get('mail_manager');
  1934.                 //   $mailManager->sendMessage('',' Traitement de commande ',$message);
  1935.                 $rep['etat'] = true;
  1936.             }
  1937.             return new Response(json_encode($rep));
  1938.         }
  1939.         return new Response(json_encode($rep));
  1940.     }
  1941.     /**
  1942.      * Activation, suppression, désactivation de categorie.
  1943.      * @return Response
  1944.      */
  1945.     public function traiterLivraisonDirectAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1946.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  1947.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  1948.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  1949.     TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
  1950.     ChauffeurRepository $chauffeurRepository,SurPlusRepository $surPlusRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,LigneCommandeRepository $ligneCommandeRepository
  1951.     ) {
  1952.         $rep = array('etat' => false'msg' => 'Erreur survenue lors du traitement');
  1953.         /*
  1954.          * Nom de l'action en cours
  1955.          */
  1956.         $nomAction 'traiterLivraisonAction';
  1957.         /*
  1958.          * Description de l'action de l'action en cours
  1959.          */
  1960.         $descAction 'traiter une commande';
  1961.         /*
  1962.          * Préparation du message de log 
  1963.          */
  1964.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  1965.         /*
  1966.          * Service de gestion des droits
  1967.          */
  1968.         
  1969.         /*
  1970.          * Informations de session
  1971.          */
  1972.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  1973.         /*
  1974.          * Locale en cours
  1975.          */
  1976.         $locale $loginManager->getLocale();
  1977.         $this->data['locale'] = $locale;
  1978.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  1979.         /*
  1980.          * On vérifie si l'utilisateur est connecté
  1981.          */
  1982.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  1983.         if ($status['isConnecte']) {
  1984.             /*
  1985.              * Au cas ou l'utilisateur est connecté on vérifie s'il nest pas innactif. S'il est innactif
  1986.              * on garde en mémoire flash la route actuelle pour effectuer une redirection lors de la prochaine connexion
  1987.              */
  1988.             if ($status['isInnactif']) {
  1989.                 $rep['msg'] = "Vous avez accusé un long moment d'inactivité. Veuillez-vous connecter de nouveau";
  1990.                 $loginManager->logout(LoginManager::SESSION_DATA_NAME);
  1991.                 return new Response(json_encode($rep));
  1992.             }
  1993.             /*
  1994.              * Seuls les utilisateurs admins ont le droit d'acceder Ã  cette action
  1995.              */
  1996.             if (!$status['isUser']) {
  1997.                 return new Response(json_encode($rep));
  1998.             }
  1999.         } else {
  2000.             $rep['msg'] = 'Vous Ãªtes déconnecté. Veuillez-vous connecter de nouveau';
  2001.             return new Response(json_encode($rep));
  2002.         }
  2003.         /*
  2004.          * Gestion des droits
  2005.          */
  2006.         //        if (!$loginManager->getOrSetActions(Module::MOD_GEST_COM, Module::MOD_GEST_COM_DESC, $this->nom, $this->description, $nomAction, $descAction, $sessionData['id'])) {
  2007.         //            $this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
  2008.         //            $rep['msg'] = "Vous n'avez pas le droit d'effectuer cette action";
  2009.         //
  2010.         //            return new Response(json_encode($rep));
  2011.         //        }
  2012.        
  2013.         $em $this->getDoctrine()->getManager();
  2014.         $objetUtilisateur $utilisateurRepository->find($sessionData['id']);
  2015.         if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
  2016.            
  2017.             $quantiteLivre $request->request->get('qteLivre');
  2018.             $chauffeurId $request->request->get('chauffeurId');
  2019.             $numVoiture $request->request->get('numVoiture') ;
  2020.             $idCollecteur $request->request->get('colId'); //Fournisseur = Collecteur
  2021.             $objetCol $fournisseurRepository->find($idCollecteur); 
  2022.             $objetChauffeur $chauffeurRepository->find($chauffeurId);
  2023.             //var_dump($quantiteLivre);exit;
  2024.             //Enrégistrer les infos concernants la livraison            
  2025.             $oneOk false;
  2026.             //Generation des reference pour la livraison et autres
  2027.             $d = new \DateTime();
  2028.             $an $d->format('Y');
  2029.             $m $d->format('m');
  2030.             $j $d->format('d');
  2031.            // $refFacture = $this->getRefLivrer($em, 1, $an, $m, $entite = 'LIVRER', $taille = 5, $j);
  2032.             $em->getConnection()->beginTransaction();
  2033.             $quantiteLivrerAEnregistre $quantiteLivre;
  2034.             $quantiteLivre = (int) $quantiteLivre + (int)$this->recupererSurPlus($em$objetCol->getCodeFournisseur(), $fournisseurRepository,$surPlusRepository );
  2035.             try {
  2036. //                    //creation de l'entite fature
  2037. //                $uneFacture = new Facture();
  2038. //                $uneFacture->setCodeFacture($refFacture);
  2039. //                $uneFacture->setDatePublication($d);
  2040. //                //var_dump($typeAction);exit;
  2041. //                $uneFacture->setTypeFacture(1);
  2042. //                $em->persist($uneFacture);
  2043. //                $em->flush();
  2044.                 
  2045.                 $oneOk true;
  2046.                 $arreter =1;
  2047.                 $prod $request->get("produit") ;//$sessionData["produit_id"];
  2048.                 $valinfosac $request->get("valinfosac") ;
  2049.                 $numLivraison$request->get("numLivraison") ;
  2050.                 $infoPrix$request->get("prixachatchoice") ;
  2051.                 $siVente$request->get("siVenteCredit") ;
  2052.                 
  2053.                 $quantitesaisie $request->get("quantitesaisie") ;
  2054.                 $dateLivraison$request->get("dateLivraison") ;
  2055.                 $dateLivraison = new \DateTime(implode("-",array_reverseexplode('-'str_replace("/","-",$dateLivraison)) )));
  2056.                 //var_dump($prod);exit;
  2057.                 //Recuperation de la derniere ligne commande concernéé
  2058.                 $LigneCommande $ligneCommandeRepository->findBy(array('etatLigneCommande'=>1,'fournisseur'=>$objetCol'annule'=>0));
  2059.                 $objetProduit $produitRepository->find($prod);
  2060.                 if($infoPrix != 0){
  2061.                     $prixEnRigueur $prixRigueurRepository->findOneBy(array('infoPrixRigueur'=>  $infoPrix));
  2062.                 }else{
  2063.                   
  2064.                     if($LigneCommande!= null){
  2065.                         $prixEnRigueur $prixRigueurRepository->findOneBy(array('produit'=>$LigneCommande[0]->getProduit(),'etatPrixRigueur'=>  TypeEtat::ACTIF));
  2066.                         $prod $LigneCommande[0]->getProduit()->getId();
  2067.                     }else{
  2068.                         $prixEnRigueur $prixRigueurRepository->findOneBy(array('etatPrixRigueur'=>  TypeEtat::ACTIF));
  2069.                         
  2070.                     }
  2071.                 }
  2072.                 $infoLivre = new InfoLivrer();
  2073.                 $infoLivre->setNbreTotalLivre($quantiteLivrerAEnregistre);
  2074.                 $infoLivre->setNbreSaisie($quantitesaisie);
  2075.                 $infoLivre->setRefBonLivraison($numLivraison);
  2076.                 $infoLivre->setRefBonReception($numLivraison);
  2077.                 $infoLivre->setCodeGenere($numLivraison);
  2078.                 $infoLivre->setFournisseur($objetCol);
  2079.                 $infoLivre->setAbonne($this->getAbonne($em$sessionData['abonneId'],$abonneRepository));
  2080.                 $infoLivre->setPrixrigueur($prixEnRigueur);
  2081.                 $infoLivre->setTypeInfoLivrer($prod);
  2082.                 if($LigneCommande!=null)
  2083.                     $infoLivre->setVariete($LigneCommande[0]->getProduit());
  2084.                 else
  2085.                     $infoLivre->setVariete($objetProduit);
  2086.                 $infoLivre->setTypeOperation(1);
  2087.                 $infoLivre->setDateLivraison($dateLivraison);
  2088.                 $em->persist($infoLivre);
  2089.                 $em->flush();
  2090.                 
  2091.                 $montantLivraison $prixEnRigueur->getInfoPrixRigueur()* $quantitesaisie;
  2092.                 $institule "Livraison de ".$quantitesaisie." Kg";
  2093.                 //Ajouter les informations concernant  les sac
  2094.                 $this->genereLigneSuivieLivraison($em$objetUtilisateur->getVille(),$montantLivraison,2$instituleNULL$infoLivre);
  2095.                 $tabInfoSac explode('|'$valinfosac);
  2096.                 foreach ($tabInfoSac as $infoSac) {
  2097.                     if($infoSac !=''){
  2098.                         $donneInfoSac explode('-',$infoSac);
  2099.                         $objetSac = new App\Entity\stock\Sac();
  2100.                         $objetSac->setNombreSac($donneInfoSac[0]);
  2101.                         $objetSac->setHumiditeSac($donneInfoSac[1]);
  2102.                         $objetSac->setInfolivrer($infoLivre);
  2103.                         $objetSac->setQuantiteRetire($donneInfoSac[2]);
  2104.                         $objetSac->setDatePublication(new \DateTime());
  2105.                         $em->persist($objetSac);
  2106.                         $em->flush();
  2107.                     }
  2108.                 }
  2109.                 //Traitement des informations concernant les critères
  2110.                 $valcritere $request->get("valcritere") ;
  2111.                 $encompte $request->get("encompte") ;
  2112.                 $infonombrededuit $request->get("infonombrededuit") ;
  2113.                 $tabIds explode('|'$valcritere);
  2114.                 $tabNombre explode('|'$infonombrededuit);
  2115.                 foreach ($tabIds as $idS) {
  2116.                     if($idS !=''){
  2117.                         $objetInfoCritere $infoCritereRepository->find((int)$idS);
  2118.                         $objetExtraLivr = new App\Entity\stock\ExtraLivraison();
  2119.                         $objetExtraLivr->setInfocritere($objetInfoCritere);
  2120.                         $objetExtraLivr->setInfolivrer($infoLivre);
  2121.                         $em->persist($objetExtraLivr);
  2122.                         $em->flush();
  2123.                     }
  2124.                 }
  2125.                 $j=1;
  2126.                 
  2127.                 //var_dump(count($LigneCommande));exit;
  2128.                 foreach ( $LigneCommande as $unObjetLigneCommande) {
  2129.                     //var_dump($unObjetLigneCommande->getId());exit;
  2130.                     if ($unObjetLigneCommande->getQuantiteReste() != 0) {                    
  2131.                         $uneLivraison = new App\Entity\stock\Livrer(); //Création de l'abjet Livrer
  2132.                         if($arreter ==1){                        
  2133.                             if ((int) $unObjetLigneCommande->getQuantiteReste() >= (int) $quantiteLivre) { //si La Quantite a livre est inférieur ou 
  2134.                               // egale a la quantité commandée pour une commande
  2135.                                 //Calcul quantite totale
  2136.                                 $QuantiteTotal $unObjetLigneCommande->getQuantiteLivre() + $quantiteLivre;//Recuperation de la quantité total livrée pour le produit
  2137.                                 //set de la quantité total 
  2138.                                 $unObjetLigneCommande->setQuantiteLivre($QuantiteTotal);//Quant donné a l'objet  Ligne commande
  2139.                                 $uneLivraison->setNbreLivre($quantiteLivre);//On ecrit la quantité livre durant la livraison
  2140.                                 if ($unObjetLigneCommande->getQuantiteReste() == (int) $quantiteLivre) { //Si c'est pour soldé la livraison
  2141.                                     //Tout les produits sont livrés Soldé                                       
  2142.                                     $unObjetLigneCommande->setEtatLigneCommande(2);
  2143.                                     //Mettre a jour la commande concenant ce produit
  2144.                                     $this->mettreAJourCommande($em,$unObjetLigneCommande->getCommande()->getId());
  2145.                                    // $this->mettreAJourLigneCommande($em, $unObjetLigneCommande->getId());
  2146.                                     $QuantiteTotalReste=0;
  2147.                                 } else {
  2148.                                     $QuantiteTotalReste $unObjetLigneCommande->getQuantite() - $QuantiteTotal;   
  2149.                                 }
  2150.                                 $unObjetLigneCommande->setQuantiteReste($QuantiteTotalReste);
  2151.                                 $arreter =2
  2152.                                 $quantiteLivre 0;
  2153.                             } else { //Dans le cas ou la quantité a livrer est supérieur a ce qu'on doit livrer pour une commande
  2154.                                 //Recuperation de la quantité a livrer pour la commande
  2155.                                 $QteDoitLivrer $unObjetLigneCommande->getQuantite() - $unObjetLigneCommande->getQuantiteLivre();
  2156.                                 //Recuperation de la quantité  livrer
  2157.                                 //$QteLivrer = $unObjetLigneCommande->getQuantiteLivre()+$doitLivrer;
  2158.                                 $unObjetLigneCommande->setEtatLigneCommande(2); //Dans ca on solde a coup sur les livraisons
  2159.                                 $this->mettreAJourCommande($em,$unObjetLigneCommande->getCommande()->getId()); 
  2160.                                // $this->mettreAJourLigneCommande($em, $unObjetLigneCommande->getId());
  2161.                                 $unObjetLigneCommande->setQuantiteLivre($unObjetLigneCommande->getQuantite());                            
  2162.                                // $uneLivraison->setNbreLivre($unObjetLigneCommande->getQuantiteReste());//Rucuperation de la quantité livrer pour la commande
  2163.                                 $uneLivraison->setNbreLivre($QteDoitLivrer);//Rucuperation de la quantité livrer pour la commande
  2164.                                 $quantiteLivre $quantiteLivre $QteDoitLivrer;//$unObjetLigneCommande->getQuantiteReste();
  2165.                                 // var_dump($quantiteLivre,$unObjetLigneCommande->getId());exit;
  2166.                                 $unObjetLigneCommande->setQuantiteReste(0); //Comme on a tout livré On met la quantité restante a 0
  2167.                                 $QuantiteTotalReste=0;       
  2168.                             }
  2169.                             $uneLivraison->setLignecommande($unObjetLigneCommande);
  2170.                             $uneLivraison->setDateLivraison(new \DateTime());
  2171.                             $uneLivraison->setEtatLivraison(1);
  2172.                             $uneLivraison->setNbreReste($QuantiteTotalReste);
  2173.                             $uneLivraison->setNombreRestantLivrer($tabNombre[$j]);
  2174.                             $uneLivraison->setEnCompte((int)$encompte);
  2175.                             $uneLivraison->setDateLivraison($dateLivraison);
  2176.                             $uneLivraison->setInfolivrer($infoLivre);
  2177.                             $uneLivraison->setRefBonLivraison('L'.$unObjetLigneCommande->getCommande()->getCodeCommande());
  2178.                             $uneLivraison->setRefBonReception($numLivraison);
  2179.                             $em->persist($unObjetLigneCommande);
  2180.                             $em->persist($uneLivraison);
  2181.                             $em->flush();
  2182.                         }
  2183.                         $j++;
  2184.                     }
  2185.                 }
  2186.                 //var_dump($QuantiteTotalReste)
  2187.                 if($quantiteLivre == 0){
  2188.                     $objetInfoLivre $infoLivrerRepository->find($infoLivre->getId());
  2189.                     $objetInfoLivre->setEtatInfoLivrer(2);
  2190.                     $em->persist($objetInfoLivre);
  2191.                     $em->flush();
  2192.                 }
  2193.                 
  2194.                 
  2195.                 $this->upDateSurPlus($em$objetCol->getCodeFournisseur(),$quantiteLivre$fournisseurRepository,$surPlusRepository); 
  2196.                 
  2197.                 $d = new \DateTime();
  2198.                 $an $d->format('Y');
  2199.                 $m $d->format('m');
  2200.                 $j $d->format('d');
  2201.                  $refLiv $this->reinitialiserRef($em1$an$m$entite 'LIVRER'$taille 5$sessionData["id"]);
  2202.                  //Enregistrement des chauffeurs
  2203.                  $chauffeurLivraision = new ChauffeurLivraison();
  2204.                  $chauffeurLivraision ->setInfolivrer($infoLivre);
  2205.                  $chauffeurLivraision ->setChauffeur($objetChauffeur);
  2206.                  $chauffeurLivraision ->setPlaqueCamion($numVoiture);
  2207.                  $em->persist($chauffeurLivraision);
  2208.                  $em->flush();
  2209.                  $em->getConnection()->commit();
  2210.             } catch (Exception $exc) {
  2211.                 $em->getConnection()->rollBack();
  2212.                 throw $exc;
  2213.             }
  2214.             
  2215.             if ($oneOk) {
  2216.                 $this->get('session')->getFlashBag()->add('categorie.modifier.success''Opération effectuée avec succès');
  2217.                 $rep['msg'] = '';
  2218.                 $rep['ref'] = "";
  2219.                 $rep['etat'] = true;
  2220.             }
  2221.             return new Response(json_encode($rep));
  2222.         }
  2223.         return new Response(json_encode($rep));
  2224.     }
  2225.     
  2226.     
  2227.     /**
  2228.      * Activation, suppression, désactivation de categorie.
  2229.      * @return Response
  2230.      */
  2231.     public function traiterInfoLivraisonAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  2232.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  2233.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  2234.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  2235.     TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
  2236.     ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,LigneCommandeRepository $ligneCommandeRepository
  2237.     ) {
  2238.         $rep = array('etat' => false'msg' => 'Erreur survenue lors du traitement');
  2239.         /*
  2240.          * Nom de l'action en cours
  2241.          */
  2242.         $nomAction 'traiterInfoLivraisonAction';
  2243.         /*
  2244.          * Description de l'action de l'action en cours
  2245.          */
  2246.         $descAction 'traiter une commande';
  2247.         /*
  2248.          * Préparation du message de log 
  2249.          */
  2250.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  2251.         /*
  2252.          * Service de gestion des droits
  2253.          */
  2254.         
  2255.         /*
  2256.          * Informations de session
  2257.          */
  2258.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  2259.         /*
  2260.          * Locale en cours
  2261.          */
  2262.         $locale $loginManager->getLocale();
  2263.         $this->data['locale'] = $locale;
  2264.         /*
  2265.          * On vérifie si l'utilisateur est connecté
  2266.          */
  2267.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  2268.         if ($status['isConnecte']) {
  2269.             /*
  2270.              * Au cas ou l'utilisateur est connecté on vérifie s'il nest pas innactif. S'il est innactif
  2271.              * on garde en mémoire flash la route actuelle pour effectuer une redirection lors de la prochaine connexion
  2272.              */
  2273.             if ($status['isInnactif']) {
  2274.                 $rep['msg'] = "Vous avez accusé un long moment d'inactivité. Veuillez-vous connecter de nouveau";
  2275.                 $loginManager->logout(LoginManager::SESSION_DATA_NAME);
  2276.                 return new Response(json_encode($rep));
  2277.             }
  2278.             /*
  2279.              * Seuls les utilisateurs admins ont le droit d'acceder Ã  cette action
  2280.              */
  2281.             if (!$status['isUser']) {
  2282.                 return new Response(json_encode($rep));
  2283.             }
  2284.         } else {
  2285.             $rep['msg'] = 'Vous Ãªtes déconnecté. Veuillez-vous connecter de nouveau';
  2286.             return new Response(json_encode($rep));
  2287.         }
  2288.         /*
  2289.          * Gestion des droits
  2290.          */
  2291.         //        if (!$loginManager->getOrSetActions(Module::MOD_GEST_COM, Module::MOD_GEST_COM_DESC, $this->nom, $this->description, $nomAction, $descAction, $sessionData['id'])) {
  2292.         //            $this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
  2293.         //            $rep['msg'] = "Vous n'avez pas le droit d'effectuer cette action";
  2294.         //
  2295.         //            return new Response(json_encode($rep));
  2296.         //        }
  2297.         $em $this->getDoctrine()->getManager();
  2298.         $quantiteLivre $request->request->get('qteLivre');
  2299.         $arreter =1;
  2300.         
  2301.         if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {           
  2302.             $quantiteLivre $request->request->get('qteLivre');
  2303.             $idCollecteur $request->request->get('colId'); //Fournisseur = Collecteur
  2304.             $objetCol $fournisseurRepository->find($idCollecteur); 
  2305.             $LigneCommande $ligneCommandeRepository->findBy(array('etatLigneCommande'=>1,'fournisseur'=>$objetCol,'annule'=>0));            
  2306.             //Recuperation du prix en cours
  2307.             $prixRigueur $prixRigueurRepository->findOneBy(array('etatPrixRigueur'=>1));
  2308.             $oneOk false;
  2309.             $tabInfo = array();
  2310.             $quantiteRestante $quantiteLivre;
  2311.             $i 0;
  2312.             $em->getConnection()->beginTransaction();
  2313.             try {
  2314.                 foreach ( $LigneCommande as $unObjetLigneCommande) {
  2315.                     if ($quantiteRestante !=0) {   
  2316.                         $oneOk true;
  2317.                         if($arreter ==1){
  2318.                             $tabInfo[$i]["prixRigueurActuel"] = $prixRigueur->getInfoPrixRigueur();
  2319.                             $tabInfo[$i]["prixRigueurAchat"] =  $unObjetLigneCommande->getPrixrigueur()->getInfoPrixRigueur();
  2320.                             $tabInfo[$i]["codeCommande"] =  $unObjetLigneCommande->getCommande()->getCodeCommande();
  2321.                             if ((int) $unObjetLigneCommande->getQuantiteReste() >= (int) $quantiteLivre) { //si La Quantite a livre est inférieur ou 
  2322.                                 $tabInfo[$i]["totalPrixRigueur"] = (int)$quantiteLivre * (int)$prixRigueur->getInfoPrixRigueur();
  2323.                                 $tabInfo[$i]["totalPrixAchat"]= (int)$quantiteLivre * (int)$unObjetLigneCommande->getPrixrigueur()->getInfoPrixRigueur();
  2324.                                 $tabInfo[$i]["quantiteReel"] = (int)$quantiteLivre;
  2325.                                 $quantiteRestante =0;                    
  2326.                             } else { //Dans le cas ou la quantité a livrer est supérieur a ce qu'on doit livrer pour une commande
  2327.                                 $tabInfo[$i]["totalPrixRigueur"] = (int)$unObjetLigneCommande->getQuantiteReste() * (int)$prixRigueur->getInfoPrixRigueur();
  2328.                                 $tabInfo[$i]["totalPrixAchat"] = (int)$unObjetLigneCommande->getQuantiteReste() * (int)$unObjetLigneCommande->getPrixrigueur()->getInfoPrixRigueur();  
  2329.                                 $tabInfo[$i]["quantiteReel"] = (int)$unObjetLigneCommande->getQuantiteReste();
  2330.                                 $QteDoitLivrer $unObjetLigneCommande->getQuantite() - $unObjetLigneCommande->getQuantiteLivre();
  2331.                                 $quantiteLivre $quantiteLivre $QteDoitLivrer;
  2332.                                 if($quantiteLivre == 0){
  2333.                                     $quantiteRestante =0
  2334.                                 }
  2335.                             }
  2336.                             if($tabInfo[$i]["totalPrixAchat"] > $tabInfo[$i]["totalPrixRigueur"]){
  2337.                                $tabInfo[$i]["quantiteALivreApres"] =  ($tabInfo[$i]["totalPrixAchat"]-$tabInfo[$i]["totalPrixRigueur"])/$tabInfo[$i]["prixRigueurAchat"];
  2338.                             }else{
  2339.                                $tabInfo[$i]["quantiteALivreApres"] = 0;
  2340.                             }
  2341.                             $i++ ;
  2342.                         }
  2343.                     }
  2344.                 }
  2345.                 $em->getConnection()->rollBack();
  2346.             } catch (Exception $exc) {
  2347.                 $em->getConnection()->rollBack();
  2348.                     throw $exc;
  2349.             }
  2350.            
  2351.             //var_dump($tabInfo);exit;
  2352.             if ($oneOk) {
  2353.                 $rep['msg'] = 'ok';
  2354.                 $this->get('session')->getFlashBag()->add('categorie.modifier.success''Opération Ã©ffectuée avec succès');
  2355.                 $rep['tabInfo'] = $tabInfo;
  2356.                 $rep['etat'] = true;
  2357.             }else{
  2358.                 $rep['msg'] = 'no';
  2359.             }
  2360.             return new Response(json_encode($rep));
  2361.         }
  2362.         return new Response(json_encode($rep));
  2363.     }
  2364.     
  2365.     
  2366.     
  2367.     /**
  2368.      * Activation, suppression, désactivation de categorie.
  2369.      * @return Response
  2370.      */
  2371.     public function traiterInfoCriteretAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  2372.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  2373.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  2374.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  2375.     TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
  2376.     ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository
  2377.     ) {
  2378.         $rep = array('etat' => false'msg' => 'Erreur survenue lors du traitement');
  2379.         /*
  2380.          * Nom de l'action en cours
  2381.          */
  2382.         $nomAction 'traiterLivraisonAction';
  2383.         /*
  2384.          * Description de l'action de l'action en cours
  2385.          */
  2386.         $descAction 'traiter une commande';
  2387.         /*
  2388.          * Préparation du message de log 
  2389.          */
  2390.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  2391.         /*
  2392.          * Service de gestion des droits
  2393.          */
  2394.         
  2395.         /*
  2396.          * Informations de session
  2397.          */
  2398.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  2399.         /*
  2400.          * Locale en cours
  2401.          */
  2402.         $locale $loginManager->getLocale();
  2403.         $this->data['locale'] = $locale;
  2404.         /*
  2405.          * On vérifie si l'utilisateur est connecté
  2406.          */
  2407.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  2408.         if ($status['isConnecte']) {
  2409.             /*
  2410.              * Au cas ou l'utilisateur est connecté on vérifie s'il nest pas innactif. S'il est innactif
  2411.              * on garde en mémoire flash la route actuelle pour effectuer une redirection lors de la prochaine connexion
  2412.              */
  2413.             if ($status['isInnactif']) {
  2414.                 $rep['msg'] = "Vous avez accusé un long moment d'inactivité. Veuillez-vous connecter de nouveau";
  2415.                 $loginManager->logout(LoginManager::SESSION_DATA_NAME);
  2416.                 return new Response(json_encode($rep));
  2417.             }
  2418.             /*
  2419.              * Seuls les utilisateurs admins ont le droit d'acceder Ã  cette action
  2420.              */
  2421.             if (!$status['isUser']) {
  2422.                 return new Response(json_encode($rep));
  2423.             }
  2424.         } else {
  2425.             $rep['msg'] = 'Vous Ãªtes déconnecté. Veuillez-vous connecter de nouveau';
  2426.             return new Response(json_encode($rep));
  2427.         }
  2428.         /*
  2429.          * Gestion des droits
  2430.          */
  2431.         //        if (!$loginManager->getOrSetActions(Module::MOD_GEST_COM, Module::MOD_GEST_COM_DESC, $this->nom, $this->description, $nomAction, $descAction, $sessionData['id'])) {
  2432.         //            $this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
  2433.         //            $rep['msg'] = "Vous n'avez pas le droit d'effectuer cette action";
  2434.         //
  2435.         //            return new Response(json_encode($rep));
  2436.         //        }
  2437.         $rep =array();
  2438.         $em $this->getDoctrine()->getManager();
  2439.         
  2440.         if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
  2441.             $em->getConnection()->beginTransaction();
  2442.             try {
  2443.                 $idLivraison $request->request->get('idLiv');
  2444.                //Enrégistrer les infos concernants la livraison            
  2445.                $oneOk false;
  2446.                //Generation des reference pour la livraison et autres
  2447.                //Recuperation de la derniere ligne commande concernéé
  2448.                $infoLivre = new InfoLivrer();
  2449.                $objetInfoCritere $infoCritereRepository->find((int)$idLivraison);
  2450.                //Traitement des informations concernant les critères
  2451.                $valcritere $request->get("valcritere") ;
  2452.                $tabIds explode('|'$valcritere);
  2453.                foreach ($tabIds as $idS) {
  2454.                    if($idS !=''){
  2455.                        $objetInfoCritere $infoCritereRepository->find((int)$idS);
  2456.                        $objetExtraLivr = new App\Entity\stock\ExtraLivraison();
  2457.                        $objetExtraLivr->setInfocritere($objetInfoCritere);
  2458.                        $objetExtraLivr->setInfolivrer($infoLivre);
  2459.                        $em->persist($objetExtraLivr);
  2460.                        $em->flush();
  2461.                    }
  2462.                }   
  2463.                $em->getConnection()->commit();
  2464.             } catch (Exception $exc) {
  2465.                 $em->getConnection()->rollBack();
  2466.                 throw $exc;
  2467.             }
  2468.             
  2469.            
  2470.             return new Response(json_encode($rep));
  2471.         }
  2472.         return new Response(json_encode($rep));
  2473.     }    
  2474.     /**
  2475.      * Methode s'occupant de traiter les bons de Livraison et de reception .
  2476.      *
  2477.      * @author armand.tevi@gmail.com
  2478.      * @copyright ADMIN 2015
  2479.      *
  2480.      * @version 1
  2481.      *
  2482.      * @return twig d'ajout d'un abonne ajouterFournisseur.html.twig
  2483.      */
  2484.     public function traiteBonAction(Request $request$id$type$ref,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  2485.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  2486.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  2487.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  2488.     TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
  2489.     ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository
  2490.     ) {
  2491.         $em $this->getDoctrine()->getManager();
  2492.         //Recuperation des informations concernant le client
  2493.         //$infoClient = $commandeRepository->getClientCommande($id);
  2494.         //Recuperation des informations concernant les lignes commande
  2495.         $ligneCommande $commandeRepository->getLigneCommande($id);
  2496.         //Recuperation des informations concernant les operation de la commande 
  2497.         $ligneOperation $operationRepository->getListeOperationCommande($id);
  2498.         /*
  2499.          * Preparation des informations à traiter sur les twig 
  2500.          */
  2501.         $this->data['infoClient'] = array();
  2502.         $this->data['type'] = $type;
  2503.         $this->data['ref'] = $ref;
  2504.         $this->data['ligneCommande'] = $ligneCommande;
  2505.         $this->data['ligneOperation'] = $ligneOperation;
  2506.         $this->data['actionRepository'] = $actionRepository;
  2507.         return $this->render($this->stockBundle 'Operation:genereBon.html.twig'$this->data$this->response);
  2508.     }
  2509.     /**
  2510.      * Methode s'occupant de recupérer les infos d'un client .
  2511.      *
  2512.      * @author armand.tevi@gmail.com
  2513.      * @copyright ADMIN 2015
  2514.      *
  2515.      * @version 1
  2516.      *
  2517.      * @return twig d'ajout d'un abonne ajouterFournisseur.html.twig
  2518.      */
  2519.     
  2520.     public function getIdentiteClientAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  2521.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  2522.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  2523.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  2524.     TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
  2525.     ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository
  2526.     ) {
  2527.         $em $this->getDoctrine()->getManager();
  2528.         $refc $request->request->get('refclient');
  2529.         //Recuperation des informations concernant le client
  2530.         $infoClient $abonneRepository->findOneBy(array('codeBase' => $refc));
  2531.         ($infoClient instanceof App\Entity\user\Abonne) ?
  2532.                         $this->data['client'] = trim($infoClient->getNom()) . ' ' trim($infoClient->getPrenoms()) :
  2533.                         $this->data['client'] = '';
  2534.         return new Response(json_encode($this->data));
  2535.     }
  2536.     /**
  2537.      * Methode s'occupant de recupérer les infos d'un client .
  2538.      *
  2539.      * @author armand.tevi@gmail.com
  2540.      * @copyright ADMIN 2015
  2541.      *
  2542.      * @version 1
  2543.      *
  2544.      * @return twig d'ajout d'un abonne ajouterFournisseur.html.twig
  2545.      */
  2546.     public function getIdentiteClientCodeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  2547.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  2548.     TemplateRepository $templateRepository
  2549.     ,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepository,TypeOperationRepository $typeOperationRepositoryCommandeRepository $commandeRepository,  $prixRigeurRepository
  2550.     ,LigneCommandeRepository $ligneCommandeRepository,ClientRepository $clientRepository,CategorieProduitRepository $categorieProduitRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,ChauffeurRepository $chauffeurRepository,InfoLivrerRepository $infoLivrerRepository) {
  2551.         $em $this->getDoctrine()->getManager();
  2552.         $refc $request->request->get('refclient');
  2553.         //Recuperation des informations concernant le client
  2554.         $infoClient $abonneRepository->findOneBy(array('nom' => $refc));
  2555.         ($infoClient instanceof App\Entity\user\Abonne) ?
  2556.                         $this->data['client'] = trim($infoClient->getCodeBase()) :
  2557.                         $this->data['client'] = '';
  2558.         //var_dump($this->data['client']);exit;
  2559.         return new Response(json_encode($this->data));
  2560.     }
  2561.     /**
  2562.      * Methode s'occupant de copier les commandes en attente vers les commandes validees .
  2563.      *
  2564.      * @author armand.tevi@gmail.com
  2565.      * @copyright ADMIN 2015
  2566.      *
  2567.      * @version 1
  2568.      *
  2569.      * @return twig d'ajout d'un abonne ajouterFournisseur.html.twig
  2570.      */
  2571.     protected function validateLigneCommande(Request $request$idCommande$siLivreImmedia$remiseCommande,$montanthtunitchoice =0$idFournisseur=0,
  2572.     FournisseurRepository $fournisseurRepository,  PrixRigueurRepository $prixRigeurRepository
  2573.     InfoLivrerRepository $infoLivrerRepositoryCommandeTmpRepository $commandeTmpRepository,SurPlusRepository $surPlusRepository,
  2574.     PrixRigueurRepository $prixRigueurRepositoryLivrerRepository $livrerRepositoryLigneCommandeRepository $ligneCommandeRepository) {
  2575.     
  2576.         
  2577.         $em $this->getDoctrine()->getManager();
  2578.         $infoCmde $commandeTmpRepository->find($idCommande);
  2579.         if($idFournisseur !=0){
  2580.             $infoCmde->setFournisseur($fournisseurRepository->find($idFournisseur)) ;
  2581.             $em->persist($infoCmde);
  2582.             $em->flush();
  2583.         }
  2584.         
  2585.        /* if($siLivreImmedia == 1){
  2586.             $this->saveLivraison($em, $infoCmde, null) ;
  2587.         }*/
  2588.         //if($siLivreImmedia ==1)
  2589.             
  2590.         if ($infoCmde instanceof CommandeTmp) {
  2591.             
  2592.             
  2593.             $em->getConnection()->beginTransaction();
  2594.             //(
  2595.             try {
  2596.             
  2597.                 $uneCommande = new Commande();
  2598.                 $uneCommande->setAnnule(FALSE);
  2599.                 $uneCommande->setCodeCommande($infoCmde->getCodeCommande());
  2600. //                if ($infoCmde->getAbonne() != NULL) {
  2601. //                    $uneCommande->setAbonne($infoCmde->getAbonne());
  2602. //                }
  2603.                 
  2604.                 $uneCommande->setDescriptionCommande($infoCmde->getDescriptionCommande());
  2605.                 $uneCommande->setEtatCommande(1);
  2606.                 $uneCommande->setUtilisateur($infoCmde->getUtilisateur());
  2607.                 $uneCommande->setRefBonCommande($infoCmde->getRefBonCommande());
  2608.                 $uneCommande->setCodeGenere($infoCmde->getRefBonCommande());
  2609.                 $uneCommande->setTauxEchange($infoCmde->getTauxEchange());
  2610.                 $uneCommande->setFournisseur($infoCmde->getFournisseur());
  2611.                 $uneCommande->setDateCommande($infoCmde->getDatePublication());
  2612.                 $uneCommande->setDateModification($infoCmde->getDateModification());
  2613.                 $uneCommande->setAbonne($infoCmde->getAbonne());
  2614.                 $uneCommande->setDatePublication(new \DateTime());
  2615.                 $uneCommande->setMontantResteCommande(0);
  2616.                 
  2617.                 $uneCommande->setTypeCommande($infoCmde->getTypeCommande());
  2618.                 $em->persist($uneCommande);
  2619.                 $em->flush();
  2620.                 $lc $infoCmde->getLignecommandeTmps();
  2621.                 
  2622.                 $montantCommande 0;
  2623.                 //Recuperation des informations sur le le sur-plus de l'utilisateur
  2624.                 $surPlus $surPlusRepository->findOneBy(array('fournisseur'=>$infoCmde->getFournisseur()));
  2625.                 if (count($lc) > 0) {
  2626.                      //var_dump($tabIds );exit;
  2627.                         $uneInfoLivraison = new InfoLivrer();
  2628.                         $uneInfoLivraison->setCommande($uneCommande);
  2629.                         $uneInfoLivraison->setRefBonLivraison("L".$infoCmde->getRefBonCommande());
  2630.                         $uneInfoLivraison->setRefBonReception("L".$infoCmde->getRefBonCommande());
  2631.                         $uneInfoLivraison->setEtatInfoLivrer(1);
  2632.                         $uneInfoLivraison->setFournisseur($infoCmde->getFournisseur());
  2633.                         $uneInfoLivraison->setAbonne($infoCmde->getAbonne());
  2634.                         $uneInfoLivraison->setNbreTotalLivre(0);
  2635.                         $uneInfoLivraison->setNbreSaisie(0);
  2636.                         $em->persist($uneInfoLivraison);
  2637.                         $em->flush();
  2638.                         foreach ($lc as $ligneCde) {
  2639.                             // var_dump($ligneCde->getMontantHt());exit;
  2640.                             //Recuperer le prix de la commande
  2641.                                 if($siLivreImmedia == 1){
  2642.                                      $prixEnRigueur $prixRigueurRepository->findOneBy(array('infoPrixRigueur'=>$montanthtunitchoice));
  2643.                                 }else{
  2644.                                      $prixEnRigueur $prixRigueurRepository->findOneBy(array('produit'=>$ligneCde->getProduit(),'etatPrixRigueur'=>  TypeEtat::ACTIF));  
  2645.                                 }
  2646.                               
  2647.                             $this->initialiserSuiviHistoriqueCommande($em12$ligneCde->getProduit()->getId());
  2648.                             $this->initialiserSuiviHistoriqueCommande($em01$ligneCde->getProduit()->getId());
  2649.                             
  2650.                             $uneLigneCommande = new LigneCommande();
  2651.                             $uneLigneCommande->setAnnule(false);
  2652.                             $uneLigneCommande->setEtatLigneCommande(1);
  2653.                             $uneLigneCommande->setProduit($ligneCde->getProduit());
  2654.                             $uneLigneCommande->setFournisseur($infoCmde->getFournisseur());
  2655.                             $uneLigneCommande->setMontantAutreTaxe($ligneCde->getMontantAutreTaxe());
  2656.                             $uneLigneCommande->setMontantHt($ligneCde->getMontantHt());
  2657.                             $uneLigneCommande->setQuantite($ligneCde->getQuantite());
  2658.                             $uneLigneCommande->setQuantiteLivre($ligneCde->getQuantite());
  2659.                             $uneLigneCommande->setPrixrigueur($ligneCde->getPrixRigueur());
  2660.                             $uneLigneCommande->setAbonne($infoCmde->getAbonne());
  2661.                             $uneLigneCommande->setQuantiteReste(0);
  2662.                             $uneLigneCommande->setTauxTva($ligneCde->getTauxTva());
  2663.                             $uneLigneCommande->setCommande($uneCommande);
  2664.                             //$uneCommande->addLignecommande($uneLigneCommande);
  2665.                             $montantCommande = (int) $montantCommande + (int) $ligneCde->getMontantHt();
  2666.                             $em->persist($uneLigneCommande);
  2667.                             $em->flush();
  2668.                             $this->initialiserCommandeSuivant($em1$ligneCde->getProduit()->getId(), $uneLigneCommande->getId()) ;
  2669.                             //Recuperer les informations sur le dernier infoLivrer
  2670.                             $listeLivrer $infoLivrerRepository->findBy(array('fournisseur'=>$infoCmde->getFournisseur(), 'etatInfoLivrer'=>1),array('id'=>'ASC'));
  2671.                             $traiteFait 0;
  2672.                             
  2673.                             
  2674.                             if($surPlus!=null){
  2675.                                 $quantiteSurPlus $surPlus->getQuantite();    
  2676.                             }else{
  2677.                                 $quantiteSurPlus 0;
  2678.                             }
  2679.                             if($siLivreImmedia == 1)
  2680.                                 $this->validateLigneCommandeInterne($em"L_".rand(), $uneInfoLivraison$uneCommandeNULL$uneLigneCommande->getPrixRigueur(), $uneLigneCommande->getQuantite(), $uneLigneCommande$ligneCommandeRepository$livrerRepository) ;
  2681.                   
  2682.                                  
  2683.                                                 
  2684.                             $quantiteCommande $uneLigneCommande->getQuantite();
  2685.                                 /*
  2686.                                 foreach ( $listeLivrer as $infoLivrer) {
  2687.                                     //var_dump(1);exit;
  2688.                                     //Recuperer le nombre livré par l'utilisateur
  2689.                                     $nombreLivre = $infoLivrerRepository->getTotalRenseigneLivraison($infoLivrer->getId());                       
  2690.                                     //Traitement à faire 
  2691.                                     //Quand il existe un surpris il faut creer 
  2692.                                     if($nombreLivre[0]["nombreTotal"] == null){
  2693.                                         $infoTotalLivre = 0; 
  2694.                                     }else{
  2695.                                         $infoTotalLivre = $nombreLivre[0]["nombreTotal"];
  2696.                                     }
  2697.                                     if($infoLivrer->getTraiteInfoLivrer()!=0 ){
  2698.                                         $nombreRestantTraiteLivraison  = $infoLivrer->getTraiteInfoLivrer() ;   
  2699.                                     }else{
  2700.                                         $nombreRestantTraiteLivraison  = $infoLivrer->getNbreTotalLivre() - (int)$infoTotalLivre; 
  2701.                                     }                              
  2702.                                     //var_dump($infoLivrer->getTraiteInfoLivrer(), $nombreRestantTraiteLivraison, $infoLivrer->getNbreTotalLivre(), (int)$infoTotalLivre);exit;
  2703.                                     //if ($quantiteSurPlus >0) {
  2704.                                         $uneLivrer = new \Entity\stock\Livrer();
  2705.                                         $uneLivrer->setDateLivraison($infoCmde->getDatePublication());
  2706.                                         $uneLivrer->setEtatLivraison(1);
  2707.                                         $uneLivrer->setLignecommande($uneLigneCommande);
  2708.                                         if($nombreRestantTraiteLivraison >= $quantiteCommande){
  2709.                                             $uneLivrer->setNbreLivre($quantiteCommande);
  2710.                                             $uneLigneCommande->setQuantiteLivre($quantiteCommande);
  2711.                                             $uneLigneCommande->setQuantiteReste(0);
  2712.                                             $uneLigneCommande->setEtatLigneCommande(2);
  2713.                                             $uneCommande->setEtatCommande(2);
  2714.                                             $enleveSurPlus = $quantiteSurPlus - $quantiteCommande;
  2715.                                             $totalTraiteInfo = $nombreRestantTraiteLivraison - $quantiteCommande;
  2716.                                             $infoLivrer->setTraiteInfoLivrer($totalTraiteInfo);
  2717.                                             $traiteFait = 1;    
  2718.                                             if($nombreRestantTraiteLivraison == $quantiteCommande){
  2719.                                             $infoLivrer->setEtatInfoLivrer(2);                                    
  2720.                                             }
  2721.                                             $resteALivre = 0;
  2722.                                         }else{
  2723.                                           //  if($nombreRestantTraiteLivraison)
  2724.                                             $resteALivre = $quantiteCommande - $nombreRestantTraiteLivraison;
  2725.                                             $uneLivrer->setNbreLivre($quantiteCommande); //$nombreRestantTraiteLivraison
  2726.                                             $infoLivrer->setEtatInfoLivrer(2);
  2727.                                             $uneLigneCommande->setQuantiteLivre($nombreRestantTraiteLivraison);
  2728.                                             $uneLigneCommande->setQuantiteReste($resteALivre);
  2729.                                             $enleveSurPlus = $quantiteSurPlus - $nombreRestantTraiteLivraison;
  2730.                                             $quantiteCommande = $quantiteCommande - $nombreRestantTraiteLivraison;
  2731.                                             
  2732.                                         }
  2733.                                         $uneLivrer->setNbreReste($resteALivre);
  2734.                                         $uneLivrer->setInfoLivrer($infoLivrer);
  2735.                                         $uneLivrer->setNombreRestantLivrer(0);
  2736.                                         $uneLivrer->setRefBonLivraison($infoLivrer->getRefBonLivraison());
  2737.                                         $uneLivrer->setRefBonReception($infoLivrer->getRefBonLivraison());
  2738.                                         if ($quantiteSurPlus >0){
  2739.                                             $surPlus->setQuantite($enleveSurPlus); 
  2740.                                             $em->persist($surPlus); 
  2741.                                         }                            
  2742.                                                                         
  2743.                                         $em->persist($uneLigneCommande);
  2744.                                         
  2745.                                         $em->persist($uneLivrer);
  2746.                                         $em->persist($infoLivrer);
  2747.                                         $em->flush();
  2748.                                         //Livraison imediate il faut retirer le produit en stoch
  2749.                                         $unProduit = $produitRepository->find($ligneCde->getProduit()->getId());
  2750.                                         $nombretRestant = (int) $unProduit->getEnStockProduit() - (int) $uneLigneCommande->getQuantite();
  2751.                                         $unProduit->setEnStockProduit($nombretRestant);
  2752.                                         $em->persist($unProduit);
  2753.                                         $em->flush();
  2754.                                         if($traiteFait == 1){
  2755.                                             break;
  2756.                                         }
  2757.                                     //}
  2758.                                 }*/
  2759.                             }
  2760.                 }
  2761.                 
  2762.                 $objetFournisseur $fournisseurRepository->find($infoCmde->getFournisseur()->getId());
  2763.                 $objetFournisseur->setDepassementFournisseur(0);
  2764.                 //Mise a jour des informations concernant la commande
  2765.                 $montantCommandeFinal = (int) $montantCommande - (int) $remiseCommande;
  2766.                 $uneCommande->setMontantCommande($montantCommandeFinal);
  2767.                 $uneCommande->setMontantResteCommande($montantCommandeFinal);
  2768.                 //$em->persist($objetFournisseur);
  2769.                 $em->persist($uneLigneCommande);
  2770.                 //var_dump(3);exit;
  2771.                 $em->flush();
  2772.                 $em->getConnection()->commit();
  2773.                 
  2774.                 return $uneCommande;
  2775.             } catch (\Exception $e) {
  2776.                 $em->getConnection()->rollback();
  2777.                 $em->close();
  2778.                 throw $e;
  2779.                 exit;
  2780.             }
  2781.         }
  2782.     }
  2783.     /**
  2784.      * Methode s'occupant de copier les commandes en attente vers les commandes validees .
  2785.      *
  2786.      * @author armand.tevi@gmail.com
  2787.      * @copyright ADMIN 2015
  2788.      *
  2789.      * @version 1
  2790.      *
  2791.      * @return twig d'ajout d'un abonne ajouterFournisseur.html.twig
  2792.      */
  2793.      protected function validateLigneCommandeClient(Request $request$idCommande$siLivreImmedia$remiseCommande,$montanthtunitchoice =0$idUtilisateur,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  2794.      ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  2795.      TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  2796.      CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  2797.      TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
  2798.      ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository
  2799.        ) {
  2800.     
  2801.         $em $this->getDoctrine()->getManager();
  2802.         $infoCmde $commandeTmpRepository->find($idCommande);
  2803.         $objetUtilisateur $utilisateurRepository->find($idUtilisateur);
  2804.         if ($infoCmde instanceof CommandeTmp) {
  2805.             $em->getConnection()->beginTransaction();
  2806.             try {
  2807.                 $uneCommande = new Commande();
  2808.                 $uneCommande->setAnnule(FALSE);
  2809.                 $uneCommande->setCodeCommande($infoCmde->getCodeCommande());
  2810.                 //                if ($infoCmde->getAbonne() != NULL) {
  2811.                 //                    $uneCommande->setAbonne($infoCmde->getAbonne());
  2812.                 //                }
  2813.                 $uneCommande->setDescriptionCommande($infoCmde->getDescriptionCommande());
  2814.                 $uneCommande->setEtatCommande(1);
  2815.                  $uneCommande->setUtilisateur($objetUtilisateur);
  2816.                 $uneCommande->setRefBonCommande($infoCmde->getRefBonCommande());
  2817.                 $uneCommande->setTauxEchange($infoCmde->getTauxEchange());
  2818.                 $uneCommande->setFournisseur($infoCmde->getFournisseur());
  2819.                 $uneCommande->setDateCommande($infoCmde->getDatePublication());
  2820.                 $uneCommande->setDateModification($infoCmde->getDateModification());
  2821.                 $uneCommande->setMontantResteCommande(0);
  2822.                 $uneCommande->setTypeCommande(3);
  2823.                 $uneCommande->setUtilisateur($objetUtilisateur);
  2824.                 $uneCommande->setCaisse($objetUtilisateur->getCaisse());
  2825.                 $uneCommande->setAbonne($objetUtilisateur->getAbonne());
  2826.                 $uneCommande->setClient($infoCmde->getClient());
  2827.                 
  2828.                 $em->persist($uneCommande);
  2829.                 $em->flush();
  2830.                 $lc $infoCmde->getLignecommandeTmps();
  2831.                 
  2832.                 $montantCommande 0;
  2833.                 //Recuperation des informations sur le le sur-plus de l'utilisateur
  2834.                 $surPlus $surPlusRepository->findOneBy(array('fournisseur'=>$infoCmde->getFournisseur()));
  2835.                // var_dump($infoCmde->getId());exit;
  2836.                 if($infoCmde->getClient() != null){
  2837.                     if($infoCmde->getClient()->getSiInterne()==1){
  2838.                         $autoObjetCommande $this->saveCommande($em"R".$infoCmde->getRefBonCommande(),  0$infoCmde->getClient(), $objetUtilisateur );
  2839.                         $autoObjetLivraison $this->saveLivraison($em$autoObjetCommande$infoCmde->getClient(),$infoLivrerRepository) ;
  2840.                         
  2841.                     }
  2842.                 }
  2843.                 if (count($lc) > 0) {
  2844.                    
  2845.                         foreach ($lc as $ligneCde) {
  2846.                             
  2847.                             if($siLivreImmedia == 1){
  2848.                                  $prixEnRigueur $prixRigueurRepository->findOneBy(array('infoPrixRigueur'=>$montanthtunitchoice));
  2849.                             }else{
  2850.                                 $prixEnRigueur $prixRigueurRepository->findOneBy(array('produit'=>$ligneCde->getProduit(),'etatPrixRigueur'=>  TypeEtat::ACTIF));  
  2851.                             }
  2852.                                                        
  2853.                             $uneLigneCommande = new LigneCommande();
  2854.                             $uneLigneCommande->setAnnule(false);
  2855.                             $uneLigneCommande->setEtatLigneCommande(1);
  2856.                             $uneLigneCommande->setProduit($ligneCde->getProduit());
  2857.                             $uneLigneCommande->setFournisseur($infoCmde->getFournisseur());
  2858.                             $uneLigneCommande->setMontantAutreTaxe($ligneCde->getMontantAutreTaxe());
  2859.                             $uneLigneCommande->setMontantHt($ligneCde->getMontantHt());
  2860.                                                        
  2861.                             $uneLigneCommande->setQuantite($ligneCde->getQuantite());
  2862.                             $uneLigneCommande->setQuantiteLivre(0);
  2863.                             //if($objetUtilisateur->getCaisse()->getTypeCaisse() !=2){
  2864.                                 $uneLigneCommande->setPrixrigueur($ligneCde->getPrixrigueur());
  2865.                             //}
  2866.                             
  2867.                             $uneLigneCommande->setAbonne($infoCmde->getAbonne());
  2868.                             $uneLigneCommande->setQuantiteReste($ligneCde->getQuantite());
  2869.                             $uneLigneCommande->setTypeOperation($ligneCde->getTypeOperation());
  2870.                             $uneLigneCommande->setTauxTva($ligneCde->getTauxTva());
  2871.                             $uneLigneCommande->setClient($ligneCde->getClient());
  2872.                             $uneLigneCommande->setCommande($uneCommande);
  2873.                             $uneLigneCommande->setCodeGenere("L_".rand());
  2874.                             //$uneLigneCommande->setCaisse($objetUtilisateur->getCaisse());
  2875.                             $uneLigneCommande->setAbonne($objetUtilisateur->getAbonne());
  2876.                             $uneLigneCommande->setTypeLigneCommande(1);
  2877.                             
  2878.                             $montantCommande = (int) $montantCommande + (int) $ligneCde->getMontantHt();
  2879.                             $em->persist($uneLigneCommande);
  2880.                             $em->flush();
  2881.                             
  2882.                             //Recuperer les informations sur le dernier infoLivrer
  2883.                             $listeLivrer $infoLivrerRepository->findBy(array('fournisseur'=>$infoCmde->getFournisseur(), 'etatInfoLivrer'=>1),array('id'=>'ASC'));
  2884.                             $traiteFait 0;
  2885.                             if($infoCmde->getClient() != null){
  2886.                                 if($infoCmde->getClient()->getSiInterne()==1){
  2887.                                     $this->validateLigneCommandeInterne($em"teste"$autoObjetLivraison$autoObjetCommande$ligneCde->getProduit(), $ligneCde->getPrixrigueur(), $ligneCde->getQuantite(),0$ligneCommandeRepository$livrerRepository);
  2888.                                 }
  2889.                             }
  2890.                             if($surPlus!=null){
  2891.                                  
  2892.                             $quantiteSurPlus $surPlus->getQuantite();                        
  2893.                             $quantiteCommande $uneLigneCommande->getQuantite();
  2894.                                 foreach ( $listeLivrer as $infoLivrer) {
  2895.                                     //var_dump(1);exit;
  2896.                                     //Recuperer le nombre livré par l'utilisateur
  2897.                                     $nombreLivre $infoLivrerRepository->getTotalRenseigneLivraison($infoLivrer->getId());                       
  2898.                                     //Traitement à faire 
  2899.                                     //Quand il existe un surpris il faut creer 
  2900.                                     if($nombreLivre[0]["nombreTotal"] == null){
  2901.                                         $infoTotalLivre 0
  2902.                                     }else{
  2903.                                         $infoTotalLivre $nombreLivre[0]["nombreTotal"];
  2904.                                     }
  2905.                                     if($infoLivrer->getTraiteInfoLivrer()!=){
  2906.                                         $nombreRestantTraiteLivraison  $infoLivrer->getTraiteInfoLivrer() ;   
  2907.                                     }else{
  2908.                                         $nombreRestantTraiteLivraison  $infoLivrer->getNbreTotalLivre() - (int)$infoTotalLivre
  2909.                                     }                              
  2910.                                     //var_dump($infoLivrer->getTraiteInfoLivrer(), $nombreRestantTraiteLivraison, $infoLivrer->getNbreTotalLivre(), (int)$infoTotalLivre);exit;
  2911.                                     if ($quantiteSurPlus >0) {
  2912.                                         $uneLivrer = new App\Entity\stock\Livrer();
  2913.                                         $uneLivrer->setDateLivraison($infoCmde->getDatePublication());
  2914.                                         $uneLivrer->setEtatLivraison(1);
  2915.                                         $uneLivrer->setLignecommande($uneLigneCommande);
  2916.                                         if($nombreRestantTraiteLivraison >= $quantiteCommande){
  2917.                                             $uneLivrer->setNbreLivre($quantiteCommande);
  2918.                                             $uneLigneCommande->setQuantiteLivre($quantiteCommande);
  2919.                                             $uneLigneCommande->setQuantiteReste(0);
  2920.                                             $uneLigneCommande->setEtatLigneCommande(2);
  2921.                                             $uneCommande->setEtatCommande(2);
  2922.                                             $enleveSurPlus $quantiteSurPlus $quantiteCommande;
  2923.                                             $totalTraiteInfo $nombreRestantTraiteLivraison $quantiteCommande;
  2924.                                             $infoLivrer->setTraiteInfoLivrer($totalTraiteInfo);
  2925.                                             $traiteFait 1;    
  2926.                                             if($nombreRestantTraiteLivraison == $quantiteCommande){
  2927.                                             $infoLivrer->setEtatInfoLivrer(2);                                    
  2928.                                             }
  2929.                                             $resteALivre 0;
  2930.                                         }else{
  2931.                                             $resteALivre $quantiteCommande $nombreRestantTraiteLivraison;
  2932.                                             $uneLivrer->setNbreLivre($nombreRestantTraiteLivraison);
  2933.                                             $infoLivrer->setEtatInfoLivrer(2);
  2934.                                             $uneLigneCommande->setQuantiteLivre($nombreRestantTraiteLivraison);
  2935.                                             $uneLigneCommande->setQuantiteReste($resteALivre);
  2936.                                             $enleveSurPlus $quantiteSurPlus $nombreRestantTraiteLivraison;
  2937.                                             $quantiteCommande $quantiteCommande $nombreRestantTraiteLivraison;
  2938.                                             
  2939.                                         }
  2940.                                         $uneLivrer->setNbreReste($resteALivre);
  2941.                                         $uneLivrer->setInfoLivrer($infoLivrer);
  2942.                                         $uneLivrer->setNombreRestantLivrer(0);
  2943.                                         $uneLivrer->setRefBonLivraison($infoLivrer->getRefBonLivraison());
  2944.                                         $uneLivrer->setRefBonReception($infoLivrer->getRefBonLivraison());
  2945.                                                                         
  2946.                                         $surPlus->setQuantite($enleveSurPlus);                                 
  2947.                                         $em->persist($uneLigneCommande);
  2948.                                         $em->persist($surPlus); 
  2949.                                         $em->persist($uneLivrer);
  2950.                                         $em->persist($infoLivrer);
  2951.                                         $em->flush();
  2952.                                         //Livraison imediate il faut retirer le produit en stoch
  2953.                                         $unProduit $produitRepository->find($ligneCde->getProduit()->getId());
  2954.                                         $nombretRestant = (int) $unProduit->getEnStockProduit() - (int) $uneLigneCommande->getQuantite();
  2955.                                         $unProduit->setEnStockProduit($nombretRestant);
  2956.                                         $em->persist($unProduit);
  2957.                                         $em->flush();
  2958.                                         if($traiteFait == 1){
  2959.                                             break;
  2960.                                         }
  2961.                                     }
  2962.                                 }
  2963.                         }
  2964.                     }
  2965.                 }
  2966.                 //$objetFournisseur = $fournisseurRepository->find($infoCmde->getFournisseur()->getId());
  2967.                 //$objetFournisseur->setDepassementFournisseur(0);
  2968.                 //Mise a jour des informations concernant la commande
  2969.                 $montantCommandeFinal = (int) $montantCommande - (int) $remiseCommande;
  2970.                 $uneCommande->setMontantCommande($montantCommandeFinal);
  2971.                 $uneCommande->setMontantResteCommande($montantCommandeFinal);
  2972.                 //$em->persist($objetFournisseur);
  2973.               
  2974.                 //var_dump(3);exit;
  2975.                 $em->flush();
  2976.                 $em->getConnection()->commit();
  2977.                 return $uneCommande;
  2978.             } catch (\Exception $e) {
  2979.                 $em->getConnection()->rollback();
  2980.                 $em->close();
  2981.                 throw $e;
  2982.             }
  2983.         }
  2984.     }
  2985.     public function ValideCommandeLigneCommandeAction(Request $request$idCommande,LoginManager $loginManager,ParamRepository $paramRepositor,OperationManager $operationManager,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  2986.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  2987.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  2988.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  2989.     TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
  2990.     ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository,LigneCommandeRepository  $ligneCommandeRepositoryCaisseRepository $caisseRepository,
  2991.     PrixRigueurRepository $prixRigeurRepository 
  2992.     ) {
  2993.         /**
  2994.          * Nom de l'action en cours
  2995.          */
  2996.         $nomAction __FUNCTION__;
  2997.         /*
  2998.          * Description de l'action de l'action en cours
  2999.          */
  3000.         $descAction 'Enregistrer la commande et ses details!';
  3001.         /*
  3002.          * Préparation du message de log 
  3003.          */
  3004.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  3005.         /*
  3006.          * Service de gestion des droits
  3007.          */
  3008.         
  3009.         /*
  3010.          * Informations de session
  3011.          */
  3012.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  3013.         /*
  3014.          * Locale en cours
  3015.          */
  3016.         $locale $loginManager->getLocale();
  3017.         $this->data['locale'] = $locale;
  3018.         /*
  3019.          * On vérifie si l'utilisateur est connecté
  3020.          */
  3021.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  3022.         //$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
  3023.         //$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
  3024.         $tabInfoDroit['nomControleur'] = $this->nom;
  3025.         $tabInfoDroit['descControleur'] = $this->description;
  3026.         $tabInfoDroit['nomAction'] = $nomAction;
  3027.         $tabInfoDroit['descAction'] = $descAction;
  3028.         
  3029.         $this->request $request;
  3030.         $em $this->getDoctrine()->getManager();
  3031.         $lc = (int) trim($this->request->get('linecmde'));
  3032.         //$lineCom = $ligneCommandeTmpRepository->find($lc);
  3033.         $uneCommande $commandeRepository->find($idCommande);
  3034.         //Récuperation du siLivreImmédiatement
  3035.         $siLivreImmedia $this->request->get('actioncommande');
  3036.         //Récuperation du siLivreImmédiatement
  3037.         $idFournisseur $this->request->get('idFournisseur');
  3038.         //Recuperation du remise fait au client
  3039.         $remiseCommande $this->request->get('remisecommande');
  3040.         $siVenteCredit $this->request->get('siVenteCredit');
  3041.         $montanthtunitchoice $this->request->get('montanthtunitchoice');
  3042.         //var_dump($idFournisseur);exit;
  3043.         
  3044.         $em->getConnection()->beginTransaction();
  3045.         if ($idCommande 0) {
  3046.             //try {
  3047.                 //var_dump($idCommande);exit;
  3048.                 $infoCommande $this->validateLigneCommande($request$idCommande$siLivreImmedia$remiseCommande,$montanthtunitchoice$idFournisseur,
  3049.                 $fournisseurRepository,$prixRigeurRepository$infoLivrerRepository$commandeTmpRepository$surPlusRepository$prixRigueurRepository$livrerRepository,$ligneCommandeRepository );
  3050.                 
  3051.                 
  3052.                 $this->data['Produit'] = $uneCommande;
  3053.                 $siConfiguration false;
  3054.                                                         //Valider la ligne de commande
  3055.                 if($siConfiguration){    //configuration des donnees
  3056.                     // var_dump(1);exit;
  3057.                     
  3058.                     // var_dump($idCommande);exit;
  3059.                     $criteria = array('commande' => $infoCommande);
  3060.                     $lineCom $ligneCommandeRepository->findOneBy($criteria);
  3061.                     //Tratement à faire pour aligner la table des opérations
  3062.                     
  3063.                 // if ($siVenteCredit == 1) {
  3064.                         //recuperation de la ville 
  3065.                         $objetUtilisateur $utilisateurRepository->find($sessionData['id']);
  3066.                         $idVille $objetUtilisateur->getVille()->getId();
  3067.                         //Recuperation  de la caisse de la ville de l'utilisateur
  3068.                         $tabCompteId =  $operationManager->getCompteCaisse($em,$objetUtilisateur->getCaisse()->getId(),$caisseRepository);
  3069.                         //recuperation de l'identifiant du produit
  3070.                         $idProduit $lineCom->getProduit()->getId();
  3071.                         $idTypeOp \Types\stock\TypeStock::TYPEOPERACHATCACAO;
  3072.                         $montantEsp $infoCommande->getMontantCommande();
  3073.                         $tabCompteMontant $operationManager->getRecuperationCompte($em,$idTypeOp,$montantEsp,$typeOperationRepository);            
  3074.                         $compteAuxi =$tabCompteId['compte'];
  3075.                         $infoDepo 'Avance à '.$infoCommande->getFournisseur()->getNomFournisseur();
  3076.                         $d = new \DateTime(); //$sessionData['dateChoisie'];
  3077.                         $dateChoisie $d->format('Y/m/d');
  3078.                         $operationManager->geneLigneOperationComptable($infoCommande->getId(), $tabCompteId['id'], $tabCompteMontant['montant'], $infoDepo$telDepo ''$infoCommande->getCodeCommande(), ''$tabCompteMontant['compte'], $idTypeOp$piece 0$nomCompte ''$typePaie=1$idProduit$compteAuxi$dateChoisie,$idVille,\Types\stock\TypeStock::OPERATIONAVANCE,0,null$utilisateurRepository,$caisseRepository);
  3079.                 }    
  3080.                $em->getConnection()->commit();                   
  3081.            /* } catch (\Exception $e) {
  3082.                 $em->getConnection()->rollback();
  3083.                 $em->close();
  3084.                 var_dump($e->getMessage());
  3085.                 exit;
  3086.             }*/
  3087.             if($infoCommande == null )  {
  3088.                 return $this->redirect($this->generateUrl('admin_commandes', array('type' => 1)));
  3089.                                
  3090.             } else if ($infoCommande->getTypeCommande() == && $siVenteCredit != 1) {
  3091.                 return $this->redirect($this->generateUrl('admin_operation_get_operation_vente', array('type' => $infoCommande->getTypeCommande(), 'codecommande' => $infoCommande->getCodeCommande())));
  3092.             } else {
  3093.                 return $this->redirect($this->generateUrl('admin_commandes', array('type' => $infoCommande->getTypeCommande())));
  3094.             }
  3095.             
  3096.         }
  3097.         
  3098.         
  3099.         
  3100.     }
  3101.     public function valideClientCommandeLigneCommandeAction(Request $request$idCommande,LoginManager $loginManager,OperationManager $operationManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  3102.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  3103.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  3104.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  3105.     TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
  3106.     ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository,LigneCommandeRepository $ligneCommandeRepositoryCaisseRepository $caisseRepository
  3107.     ) {
  3108.         /**
  3109.          * Nom de l'action en cours
  3110.          */
  3111.         $nomAction __FUNCTION__;
  3112.         /*
  3113.          * Description de l'action de l'action en cours
  3114.          */
  3115.         $descAction 'Enregistrer la commande  du client et ses details!';
  3116.         /*
  3117.          * Préparation du message de log 
  3118.          */
  3119.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  3120.         /*
  3121.          * Service de gestion des droits
  3122.          */
  3123.         
  3124.         /*
  3125.          * Informations de session
  3126.          */
  3127.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  3128.         /*
  3129.          * Locale en cours
  3130.          */
  3131.         $locale $loginManager->getLocale();
  3132.         $this->data['locale'] = $locale;
  3133.         /*
  3134.          * On vérifie si l'utilisateur est connecté
  3135.          */
  3136.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  3137.         //$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
  3138.         //$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
  3139.         $tabInfoDroit['nomControleur'] = $this->nom;
  3140.         $tabInfoDroit['descControleur'] = $this->description;
  3141.         $tabInfoDroit['nomAction'] = $nomAction;
  3142.         $tabInfoDroit['descAction'] = $descAction;
  3143.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  3144.         
  3145.         $this->request $request;
  3146.         $em $this->getDoctrine()->getManager();
  3147.         $lc = (int) trim($this->request->get('linecmde'));
  3148.         $clientId $request->get("clientId");
  3149.         $commandeId $request->get("refCommande");
  3150.         //var_dump($clientId , $commandeId);exit;
  3151.         //Se base sur le code de l'achat
  3152.         $client $clientRepository->find($clientId );
  3153. //        var_dump($idCommande);exit;
  3154.         $uneCommande $commandeTmpRepository->findOneBy(['codeCommande'=>$commandeId]);
  3155.         $objetUtilisateur $utilisateurRepository->find($sessionData['id']);
  3156.         $idVille 1;//$objetUtilisateur->getVille()->getId();
  3157.        // var_dump(1);exit;
  3158.         //Récuperation du siLivreImmédiatement
  3159.         $siLivreImmedia $this->request->get('actioncommande');
  3160.         //Recuperation du remise fait au client
  3161.         $remiseCommande $this->request->get('remisecommande');
  3162.         $siVenteCredit $this->request->get('siVenteCredit');
  3163.         $montantAPaye $this->request->get('montantAPaye');
  3164.         $dateRetrait $this->request->get('dateRetrait');
  3165.         //var_dump($montantAPaye);exit;
  3166.         $montanthtunitchoice $this->request->get('montanthtunitchoice');
  3167.        
  3168.         //var_dump($siVenteCredit);exit;
  3169.         $em->getConnection()->beginTransaction();
  3170.                 if ($uneCommande != null) {
  3171.                     if($uneCommande->getTypeCommande()==) {      
  3172.                         // try {
  3173.                         // if($objetUtilisateur->getCaisse()->getTypeCaisse() != 2){
  3174.                             $infoCommande $this->validateLigneCommandeClient($request$uneCommande->getId(), $siVenteCredit$remiseCommande,$montanthtunitchoice$sessionData['id']);
  3175.                         
  3176.                             //Mise ajour de la date de retrait
  3177.                             $dateRetrait = new \DateTime();
  3178.                             $this->data['Produit'] = $uneCommande;
  3179.                             $siConfiguration false;
  3180.                             if( $siVenteCredit != null ){
  3181.                                 $siConfiguration true;
  3182.                             }
  3183.                             
  3184.                             
  3185.                             //Valider la ligne de commande
  3186.                                 if($siConfiguration){    //configuration des donnees  
  3187.                                    
  3188.                                     //var_dump($idCommande);exit;
  3189.                                     //Generation de la reference de la facture.
  3190.                                     $d = new \DateTime();
  3191.                                     $an $d->format('Y');
  3192.                                     $m $d->format('m');
  3193.                                     
  3194.                                     $refFacture $this->getRefLivrer($em1$an$m$entite 'LIVRER'$taille 5);
  3195.                                     
  3196.                                     //creation de l'entite fature
  3197.                                     $uneFacture = new Facture();
  3198.                                     $uneFacture->setCodeFacture($refFacture);
  3199.                                     $uneFacture->setDatePublication($d);
  3200.                                     $uneFacture->setTypeFacture(0);
  3201.                                     $uneFacture->setCommande($infoCommande);
  3202.                                     $em->persist($uneFacture);
  3203.                                     $em->flush();
  3204.                                     
  3205.                                     $criteria = array('commande' => $infoCommande);
  3206.                                     $lineCom $ligneCommandeRepository->findBy($criteria);
  3207.                                     //Tratement à faire pour aligner la table des opérations
  3208.                                     // if ($siVenteCredit == 1) {
  3209.                                     //recuperation de la ville 
  3210.                                     //  $objetUtilisateur = $utilisateurRepository->find($sessionData['id']);
  3211.                                     
  3212.                                     if($objetUtilisateur->getCaisse() == null){
  3213.                                         $this->get('session')->getFlashBag()->add('caisse.non.configure'"Vous n'avez pas de caisse configurée, Contacter l'administrateur ! ");
  3214.                                         return $this->redirect($this->generateUrl('admin_lignecommande_add_client_form', array('id'=> $client->getId())));
  3215.                                         
  3216.                                     }
  3217.                                     //Recuperation  de la caisse de la ville de l'utilisateur
  3218.                                     $tabCompteId =  $operationManager->getCompteCaisse($em,$objetUtilisateur->getCaisse()->getId(),$caisseRepository);
  3219.                                     
  3220.                                     $etatLigneCommande =;
  3221.                                     //Voir si le montant payer = montant de la commande
  3222.                                     $montantTotal $ligneCommandeRepository->sumLigneCommande($infoCommande->getId());
  3223.                                     if($montantTotal == $montantAPaye){
  3224.                                         $etatLigneCommande 2;
  3225.                                     }else{
  3226.                                         if($montantAPaye == 0){
  3227.                                             $etatLigneCommande 0;
  3228.                                         }else{
  3229.                                             $etatLigneCommande 1;
  3230.                                         }
  3231.                                     }
  3232.                                 // var_dump($lineCom);exit;
  3233.                                     foreach ( $lineCom as $uneLigneCommande) {
  3234.                                             $uneLigneCommande->setEtatLigneCommande($etatLigneCommande);
  3235.                                             $em->persist($uneLigneCommande);
  3236.                                             // if($objetUtilisateur->getCaisse()->getTypeCaisse() == 2){
  3237.                                             // var_dump($uneLigneCommande->getId());exit;
  3238.                                            // var_dump($uneLigneCommande->getTypeOperation(), $uneLigneCommande->getCaisse()); exit;
  3239.                                             $idProduit $uneLigneCommande->getProduit()->getId();
  3240.                                             $objetTypeOperation $typeOperationRepository->findOneBy(['abonne'=>$this->getAbonne($em$sessionData['abonneId'],$abonneRepository), 'codeOpInt'=>$uneLigneCommande->getTypeOperation(), 'caisse'=>$objetUtilisateur->getCaisse() ]);
  3241.                                             if($objetTypeOperation != null){
  3242.                                                 $idTypeOp =  $objetTypeOperation->getId();                            //$montantEsp = $infoCommande->getMontantCommande();
  3243.                                                 $tabCompteMontant $operationManager->getRecuperationCompte($em,$idTypeOp,$montantAPaye,$typeOperationRepository);            
  3244.                                                 $compteAuxi =$tabCompteId['compte'];
  3245.                                                 $infoDepo $objetTypeOperation ->getLibTypeOperation()."/".$infoCommande->getClient()->getUtilisateur()->getNom();
  3246.                                                 $d = new \DateTime(); //$sessionData['dateChoisie'];
  3247.                                                 $dateChoisie $d->format('Y/m/d');
  3248.                                                 $operationManager->geneLigneOperationComptable($infoCommande->getId(), $tabCompteId['id'], $tabCompteMontant['montant'], $infoDepo$telDepo ''$refFacture''$tabCompteMontant['compte'], $idTypeOp$piece 0$nomCompte ''$typePaie=2$idProduit$compteAuxi$dateChoisie,$idVille,$sessionData['abonneId']);
  3249.                                             }
  3250.                                                 
  3251.                                     } 
  3252.                                     $em->flush();
  3253.                                     
  3254.                                     //recuperation de l'identifiant du produit
  3255.                                    /* if($objetUtilisateur->getCaisse()->getTypeCaisse() == 3 ){
  3256.                                             $idProduit = $lineCom->getProduit()->getId();
  3257.                                             $objetTypeOperation = $typeOperationRepository->findOneBy(['abonne'=>$this->getAbonne($em, $sessionData['abonneId'],$abonneRepository), 'codeOpInt'=>1 ]);
  3258.                                             $idTypeOp =  $objetTypeOperation->getId();                            //$montantEsp = $infoCommande->getMontantCommande();
  3259.                                             $tabCompteMontant = $operationManager->getRecuperationCompte($em,$idTypeOp,$montantAPaye,$typeOperationRepository);            
  3260.                                             $compteAuxi =$tabCompteId['compte'];
  3261.                                             $infoDepo = 'Avance à '.$infoCommande->getClient()->getUtilisateur()->getNom();
  3262.                                             $d = new \DateTime(); //$sessionData['dateChoisie'];
  3263.                                             $dateChoisie = $d->format('Y/m/d H:i:s');
  3264.                                             $operationManager->geneLigneOperationComptable($infoCommande->getId(), $tabCompteId['id'], $tabCompteMontant['montant'], $infoDepo, $telDepo = '', $refFacture, '', $tabCompteMontant['compte'], $idTypeOp, $piece = 0, $nomCompte = '', $typePaie=2, $idProduit, $compteAuxi, $dateChoisie,$idVille,$sessionData['abonneId']);
  3265.                                     }*/
  3266.                                 }    
  3267.                                 $em->getConnection()->commit();                   
  3268.                                 /*} catch (\Exception $e) {
  3269.                                     $em->getConnection()->rollback();
  3270.                                     $em->close();
  3271.                                     var_dump($e->getMessage());
  3272.                                     //exit;
  3273.                                 }*/
  3274.                                 
  3275.                                 //}
  3276.                                 if ($infoCommande->getTypeCommande() == && $siVenteCredit != 1) {
  3277.                                     return $this->redirect($this->generateUrl('admin_operation_get_operation_vente', array('type' => $infoCommande->getTypeCommande(), 'codecommande' => $infoCommande->getCodeCommande())));
  3278.                                 } else {
  3279.                                     //var_dump(55555);exit;
  3280.                                     return $this->redirect($this->generateUrl('admin_commandes', array('type' => $infoCommande->getTypeCommande())));
  3281.                                 }                     
  3282.                                
  3283.                                 
  3284.                         }else{
  3285.                             $tabCompteId =  $operationManager->getCompteCaisse($em,$objetUtilisateur->getCaisse()->getId(),$caisseRepository);
  3286.                             $refFacture $uneCommande->getCodeCommande();
  3287.                             foreach ( $uneCommande->getlignecommandeTmps() as $uneLigneCommandeTmp) {
  3288.                                 $idProduit $uneLigneCommandeTmp->getProduit()->getId();
  3289.                                 //var_dump($uneLigneCommandeTmp->getTypeOperation());
  3290.                                // var_dump($uneLigneCommandeTmp->getTypeOperation(), $objetUtilisateur->getCaisse()->getId()); exit;
  3291.                                 $objetTypeOperation $typeOperationRepository->findOneBy(['abonne'=>$this->getAbonne($em$sessionData['abonneId'],$abonneRepository), 'codeOpInt'=>$uneLigneCommandeTmp->getTypeOperation(), 'caisse'=>$objetUtilisateur->getCaisse() ]);
  3292.                                 $idTypeOp =  $objetTypeOperation->getId();                            //$montantEsp = $infoCommande->getMontantCommande();
  3293.                                 $tabCompteMontant $operationManager->getRecuperationCompte($em,$idTypeOp,$montantAPaye,$typeOperationRepository);            
  3294.                                 $compteAuxi =$tabCompteId['compte'];
  3295.                                 $infoDepo $objetTypeOperation->getLibTypeOperation()."/".$uneLigneCommandeTmp->getQuantite()."_".$uneLigneCommandeTmp->getProduit()->getNomProduit()."/".$uneLigneCommandeTmp->getClient()->getUtilisateur()->getNom();
  3296.                                             
  3297.                                 //var_dump( $idTypeOp );exit;
  3298.                                 $d = new \DateTime(); //$sessionData['dateChoisie'];
  3299.                                 $dateChoisie $d->format('Y/m/d H:i:s');
  3300.                                 
  3301.                                 $operationManager->geneLigneOperationComptable(null$tabCompteId['id'], $tabCompteMontant['montant'], $infoDepo$telDepo ''$refFacture''$tabCompteMontant['compte'], $idTypeOp$piece 0$nomCompte ''$typePaie=2$idProduit$compteAuxi$dateChoisie,$idVille,$sessionData['abonneId'],0,null$utilisateurRepository,$caisseRepository);
  3302.                             } 
  3303.                             $em->flush();
  3304.                             $em->getConnection()->commit();   
  3305.                             return $this->redirect($this->generateUrl('admin_commandes', array('type' => $uneCommande->getTypeCommande())));
  3306.                         
  3307.                         }   
  3308.                        
  3309.                         
  3310.                     }else{
  3311.                         $this->get('session')->getFlashBag()->add('caisse.non.configure'"Vous n'avez pas de caisse configurée, Contacter l'administrateur ! ");
  3312.                         return $this->redirect($this->generateUrl('admin_lignecommande_add_client_form', array('id'=> 0)));
  3313.                         
  3314.                     }
  3315.         
  3316.         
  3317.         
  3318.     }
  3319.     public function modifyLineCmdeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  3320.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  3321.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  3322.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  3323.     TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
  3324.     ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository,LigneCommandeRepository $ligneCommandeRepository
  3325.     ) {
  3326.         /*
  3327.          * Nom de l'action en cours
  3328.          */
  3329.         $nomAction __FUNCTION__;
  3330.         /*
  3331.          * Description de l'action de l'action en cours
  3332.          */
  3333.         $descAction 'Ajouter une nouvelle ligne commande!';
  3334.         /*
  3335.          * Préparation du message de log 
  3336.          */
  3337.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  3338.         /*
  3339.          * Service de gestion des droits
  3340.          */
  3341.         
  3342.         /*
  3343.          * Informations de session
  3344.          */
  3345.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  3346.         /*
  3347.          * Locale en cours
  3348.          */
  3349.         $locale $loginManager->getLocale();
  3350.         $this->data['locale'] = $locale;
  3351.         /*
  3352.          * On vérifie si l'utilisateur est connecté
  3353.          */
  3354.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  3355.         //$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
  3356.         //$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
  3357.         $tabInfoDroit['nomControleur'] = $this->nom;
  3358.         $tabInfoDroit['descControleur'] = $this->description;
  3359.         $tabInfoDroit['nomAction'] = $nomAction;
  3360.         $tabInfoDroit['descAction'] = $descAction;
  3361.         $locale $loginManager->getLocale();
  3362.         $this->data['locale'] = $locale;
  3363.         $this->request $request;
  3364.         $em $this->getDoctrine()->getManager();
  3365.         $lc = (int) trim($this->request->get('linecmde'));
  3366.         $lineCom $ligneCommandeTmpRepository->find($lc);
  3367.         $mod = array();
  3368.         if ($lineCom instanceof App\Entity\stock\LigneCommandeTmp) {
  3369.             $idcat $lineCom->getProduit()->getCategorie()->getId();
  3370.             $mod['typecom'] = $lineCom->getCommandeTmp()->getTypeCommande();
  3371.             $mod['id'] = $lineCom->getId();
  3372.             $mod['cat'] = $idcat;
  3373.             $mod['listprod'] = $produitRepository->getCategorieProduit($idcat);
  3374.             $mod['prod'] = $lineCom->getProduit()->getId(); //$produit->getNomProduit();
  3375.             $mod['fourn'] = $lineCom->getCommandeTmp()->getFournisseur()->getId();
  3376.             $mod['qte'] = $lineCom->getQuantite();
  3377.             $mod['tauxTva'] = $lineCom->getTauxTva();
  3378.             $mod['montant'] = $lineCom->getMontantHt();
  3379.             $ttc = ( + ($lineCom->getTauxTva() / 100)) * $lineCom->getMontantHt();
  3380.             $mod['mtt_ttc'] = $ttc;
  3381.             $mod['total_line'] = $ttc $lineCom->getQuantite();
  3382.         }
  3383.         //var_dump($mod);exit;
  3384.         return new Response(json_encode(array('mod' => $mod)));
  3385.     }
  3386.     
  3387.     public function mettreAJourCommande($em,$idCom){
  3388.        
  3389.         $laCommande $commandeRepository->find($idCom);
  3390.         $laCommande->setEtatCommande(TypeEtat::INACTIF);
  3391.         $laCommande->setMontantResteCommande(TypeEtat::APRODUIRE);
  3392.         $em->persist($laCommande);
  3393.         $em->flush();
  3394.     }
  3395.     public function mettreAJourLigneCommande($em,$idLigneCom){
  3396.        
  3397.         $laLigneCommande $ligneCommandeRepository->find($idLigneCom);
  3398.         $laLigneCommande->setEtatLigneCommande(TypeEtat::INACTIF);
  3399.         $em->persist($laLigneCommande);
  3400.         $em->flush();
  3401.     }
  3402.      
  3403.           /**
  3404.      * Methode s'occupant de l'ajout d'une commande.
  3405.      *
  3406.      * @author armand.tevi@gmail.com
  3407.      * @copyright ADMIN 2015
  3408.      *
  3409.      * @version 1
  3410.      *
  3411.      * @return twig d'ajout d'un abonne ajouterproduit.html.twig
  3412.      */
  3413.     public function modifOperationCollecteurAction(Request $request$typeCom$ref,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  3414.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  3415.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  3416.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  3417.     TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
  3418.     ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository,LigneCommandeRepository $ligneCommandeRepository
  3419.     ) {
  3420.            /*
  3421.          * Nom de l'action en cours
  3422.          */
  3423.         $nomAction __FUNCTION__;
  3424.         /*
  3425.          * Description de l'action de l'action en cours
  3426.          */
  3427.         $descAction "Modifier les opérations des collecteurs (augmenter ou diminuer une avance à un colleteur) ";
  3428.          /*
  3429.          * Informations de session
  3430.          */
  3431.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  3432.         $locale ='fr';
  3433.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc$loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository );
  3434.         if($valRetour==1){
  3435.             return $this->redirect($this->generateUrl('app_logout'));
  3436.         }elseif($valRetour==2){
  3437.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  3438.         }
  3439.         $prod $sessionData["produit_id"];
  3440.         /*
  3441.          * Création du formulaire par rapport a l'entité commandetmp
  3442.          */
  3443.         $em $this->getDoctrine()->getManager();
  3444.         $user $utilisateurRepository->find($sessionData['id']);
  3445.         $uneCommande = new CommandeTmp();
  3446.         
  3447.         $d = new \DateTime();
  3448.         $an $d->format('Y');
  3449.         $m $d->format('m');
  3450.         $j $d->format('d');
  3451.         $refCommande $this->getRefCommande($em, (int) $typeCom$an$m$entite 'COMMANDE'$taille 5$user->getId());
  3452.         $uneCommande->setCodeCommande($refCommande);
  3453.         $form $this->createForm(CommandeTmpType::class, $uneCommande);
  3454.         /*
  3455.          * Declaration des principales methodes Symfony2 pour traiter les informations
  3456.          */
  3457.         $this->request $request;
  3458.         $this->session $this->get('session');
  3459.         $this->flashMessage $this->get('session')->getFlashBag();
  3460.         //Recuperation de la liste des Produits que Symfony 2 accepte
  3461.         //$listeFournisseur = $em->getRepository($this->stockBundle.'Fournisseur')->findBy(array('etatFournisseur'=>1));        
  3462.         /*
  3463.          * Donnée à afficher sur le twig
  3464.          */
  3465.         //Recuperation des informations concernant le client
  3466.         $infoClient =array();
  3467.         $prixEnCours $prixRigueurRepository->getActifPrixRigueur($prod);
  3468.         
  3469.         if ($this->request->isMethod('POST')) {
  3470.             $form->handleRequest($this->request);
  3471.             //  $refc = $request->request->get('refclt');
  3472.             $idFournisseur $request->request->get('idFournisseur');
  3473.             // $tauxechange = $request->request->get('tauxechange');
  3474.             
  3475.             $typeChoix $request->request->get('typeChoix');
  3476.             $typeAction $request->request->get('typeAction');
  3477.             $nameQuantiteMontant $request->request->get('donneeOperation');
  3478.         
  3479.             // var_dump($infoClient);exit;
  3480.             /*
  3481.              * Vérifier si les élément du formulaire sont valides
  3482.              */
  3483.            // if ($form->isSubmitted()) {
  3484.             //var_dump(1);exit;
  3485.                 $em->getConnection()->beginTransaction();
  3486.                 try { 
  3487.                    
  3488.                         $objetFournisseur $fournisseurRepository->find($idFournisseur);
  3489.                         $ObjetModifierDonneeCollecteur = new  ModifierDonneeCollecteur();
  3490.                         $ObjetModifierDonneeCollecteur->setTypeOperation($typeChoix );
  3491.                         $ObjetModifierDonneeCollecteur->setTypeAction($typeAction );
  3492.                         $ObjetModifierDonneeCollecteur->setQuantite($nameQuantiteMontant);
  3493.                         $ObjetModifierDonneeCollecteur->setComptable($user);
  3494.                         $ObjetModifierDonneeCollecteur->setFournisseur($objetFournisseur);
  3495.                         $em->persist($ObjetModifierDonneeCollecteur);
  3496.                         $em->flush();                        
  3497.                        $em->getConnection()->commit();   
  3498.                                                            
  3499.                 } catch (\Exception $e) {
  3500.                     $em->getConnection()->rollBack();
  3501.                     throw $e;
  3502.                 }
  3503.                 
  3504.             /*} else {
  3505.                 $this->flashMessage->add('commande.ajout.error', $this->translator->trans("site.formulaire.invalide"));
  3506.                 return $this->redirect($this->generateUrl('admin_commande_type', array('typeCom' => 1)));
  3507.             }*/
  3508.         }
  3509.         $listeClient = array();
  3510.         // var_dump(in_array($sessionData['idProfil'],\Types\user\TypeProfil::PROFIL_COMPTABLE));exit;
  3511.          if (in_array($sessionData['idProfil'],\Types\user\TypeProfil::PROFIL_COMPTABLE)) {
  3512.                 //$listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($sessionData['id']);
  3513.                 $objetUtilisateur $utilisateurRepository->find($sessionData['id']);
  3514.                 $listeFournisseur $fournisseurRepository->getAllFournisseurByZone($objetUtilisateur->getVille()->getId(),$prod);
  3515.                 
  3516.             } else {
  3517.                 
  3518.                 $listeFournisseur $fournisseurRepository->getAllFournisseur($prod);
  3519.             }
  3520.        
  3521.         //$listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($sessionData['id']);
  3522.         $this->data['formuView'] = $form->createView();
  3523.         $this->data['Produit'] = $uneCommande;
  3524.         $this->data['listeClient'] = $listeClient;
  3525.         $this->data['prixEnCours'] = $prixEnCours;
  3526.         $this->data['listeFournisseur'] = $listeFournisseur;
  3527.         $this->data['typecom'] = $typeCom;
  3528.         $this->data['locale'] = $locale;
  3529.         $this->data['actionRepository'] = $actionRepository;
  3530.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/modifOperationCollecteur.html.twig'$this->data$this->response);
  3531.     }
  3532.     /**
  3533.      * Activation, suppression, désactivation de categorie.
  3534.      * @return Response
  3535.      */
  3536.     public function traiterAddChauffeurAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  3537.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  3538.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  3539.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  3540.     TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
  3541.     ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository,LigneCommandeRepository $ligneCommandeRepository
  3542.     ) {
  3543.         $rep = array('etat' => false'msg' => 'Erreur survenue lors du traitement');
  3544.         /*
  3545.          * Nom de l'action en cours
  3546.          */
  3547.         $nomAction 'traiterAddChauffeurAction';
  3548.         /*
  3549.          * Description de l'action de l'action en cours
  3550.          */
  3551.         $descAction "traiter l'ajout d'un chauffeur ";
  3552.         /*
  3553.          * Préparation du message de log 
  3554.          */
  3555.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  3556.         /*
  3557.          * Service de gestion des droits
  3558.          */
  3559.         
  3560.         /*
  3561.          * Informations de session
  3562.          */
  3563.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  3564.         /*
  3565.          * Locale en cours
  3566.          */
  3567.         $locale $loginManager->getLocale();
  3568.         $this->data['locale'] = $locale;
  3569.         /*
  3570.          * On vérifie si l'utilisateur est connecté
  3571.          */
  3572.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  3573.         if ($status['isConnecte']) {
  3574.             /*
  3575.              * Au cas ou l'utilisateur est connecté on vérifie s'il nest pas innactif. S'il est innactif
  3576.              * on garde en mémoire flash la route actuelle pour effectuer une redirection lors de la prochaine connexion
  3577.              */
  3578.             if ($status['isInnactif']) {
  3579.                 $rep['msg'] = "Vous avez accusé un long moment d'inactivité. Veuillez-vous connecter de nouveau";
  3580.                 $loginManager->logout(LoginManager::SESSION_DATA_NAME);
  3581.                 return new Response(json_encode($rep));
  3582.             }
  3583.             /*
  3584.              * Seuls les utilisateurs admins ont le droit d'acceder Ã  cette action
  3585.              */
  3586.             if (!$status['isUser']) {
  3587.                 return new Response(json_encode($rep));
  3588.             }
  3589.         } else {
  3590.             $rep['msg'] = 'Vous Ãªtes déconnecté. Veuillez-vous connecter de nouveau';
  3591.             return new Response(json_encode($rep));
  3592.         }
  3593.         /*
  3594.          * Gestion des droits
  3595.          */
  3596.         //        if (!$loginManager->getOrSetActions(Module::MOD_GEST_COM, Module::MOD_GEST_COM_DESC, $this->nom, $this->description, $nomAction, $descAction, $sessionData['id'])) {
  3597.         //            $this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
  3598.         //            $rep['msg'] = "Vous n'avez pas le droit d'effectuer cette action";
  3599.         //
  3600.         //            return new Response(json_encode($rep));
  3601.         //        }
  3602.         $rep =array();
  3603.         $em $this->getDoctrine()->getManager();
  3604.         
  3605.         if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
  3606.             $em->getConnection()->beginTransaction();
  3607.             try {
  3608.                 $nomChauffeur $request->request->get('nomChauffeur');
  3609.                 $telChauffeur $request->request->get('telChauffeur');
  3610.                //Enrégistrer les infos concernants la livraison            
  3611.                 $objetChauffeur = new Chauffeur();
  3612.                 $objetChauffeur->setNomChauffeur($nomChauffeur);
  3613.                 $objetChauffeur->setTelChauffeur($telChauffeur);
  3614.                 $objetChauffeur->setAbonne($this->getAbonne($em$sessionData['abonneId'],$abonneRepository));
  3615.                 $em->persist($objetChauffeur);
  3616.                 $em->flush();
  3617.                 
  3618.                  
  3619.                $em->getConnection()->commit();
  3620.             } catch (Exception $exc) {
  3621.                 $em->getConnection()->rollBack();
  3622.                 throw $exc;
  3623.             }
  3624.             $listeChauffeur $chauffeurRepository->getAjaxChauffeur($sessionData['abonneId']);
  3625.             $rep['listechauffeur'] = $listeChauffeur ;
  3626.             return new Response(json_encode($rep));
  3627.         }
  3628.         return new Response(json_encode($rep));
  3629.     }   
  3630.       /**
  3631.      * Methode s'occupant de detail du Commande.
  3632.      *
  3633.      * @author armand.tevi@gmail.com
  3634.      * @copyright ADMIN 2015
  3635.      *
  3636.      * @version 1
  3637.      *
  3638.      * @return twig d'ajout d'un abonne detailCommande.html.twig
  3639.      */
  3640.     public function annulerCommandeAction(Request $request$id,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  3641.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  3642.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  3643.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  3644.     TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
  3645.     ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository,LigneCommandeRepository $ligneCommandeRepository
  3646.     ) {
  3647.         /*
  3648.          * Nom de l'action en cours
  3649.          */
  3650.          $nomAction __FUNCTION__;
  3651.          $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  3652.          try {
  3653.              /*
  3654.              * Récupération du détail de l'utilisateur
  3655.              */
  3656.              $em $this->getDoctrine()->getManager();
  3657.              $objetCommande $commandeRepository->find($id); ///getOneCommande($id);
  3658.              $objetAbonne $abonneRepository->find($sessionData['abonneId']);
  3659.             //var_dump(1);exit;
  3660.              $objetCommande->setAnnule(1);
  3661.              $objetCommande->setSiCredit(1);
  3662.              $em->persist($objetCommande);
  3663.              $em->flush();
  3664.              // Recuperation des dernieres commandes liees à ce commande
  3665.              // $listeCommandeOneCommande = $commandeRepository->getAllcommandeCommande($id);            
  3666.              //Afficher les 
  3667.              return $this->redirect($this->generateUrl('admin_suivi_vente'));
  3668.          } catch (\Exception $e) {
  3669.              var_dump($e->getMessage());
  3670.              exit;
  3671.          }
  3672.          $locale "fr";
  3673.     }
  3674.     public function getLineCmdeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  3675.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  3676.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  3677.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  3678.     TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
  3679.     ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository,LigneCommandeRepository $ligneCommandeRepository
  3680.     ) {
  3681.         /*
  3682.          * Nom de l'action en cours
  3683.          */
  3684.         $nomAction __FUNCTION__;
  3685.         /*
  3686.          * Description de l'action de l'action en cours
  3687.          */
  3688.         $descAction 'mise à jour une nouvelle ligne commande!';
  3689.         /*
  3690.          * Préparation du message de log 
  3691.          */
  3692.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  3693.         /*
  3694.          * Service de gestion des droits
  3695.          */
  3696.         
  3697.         /*
  3698.          * Informations de session
  3699.          */
  3700.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  3701.         /*
  3702.          * Locale en cours
  3703.          */
  3704.         $locale $loginManager->getLocale();
  3705.         $this->data['locale'] = $locale;
  3706.         /*
  3707.          * On vérifie si l'utilisateur est connecté
  3708.          */
  3709.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  3710.         //$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
  3711.         //$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
  3712.         $tabInfoDroit['nomControleur'] = $this->nom;
  3713.         $tabInfoDroit['descControleur'] = $this->description;
  3714.         $tabInfoDroit['nomAction'] = $nomAction;
  3715.         $tabInfoDroit['descAction'] = $descAction;
  3716.         $em $this->getDoctrine()->getManager();
  3717.         
  3718.         $locale $loginManager->getLocale();
  3719.         $this->data['locale'] = $locale;
  3720.         $this->request $request;
  3721.         
  3722.     
  3723.         $id $request->request->get('ids');
  3724.        // var_dump($id);exit;
  3725.         
  3726.        // $em->getConnection()->beginTransaction();
  3727.         try {
  3728.             
  3729.                
  3730.                  $uneLigneCmde $ligneCommandeRepository->find($id );
  3731.                    
  3732.             
  3733.             if($uneLigneCmde != null){
  3734.                 $add['produit'] = $uneLigneCmde->getProduit()->getNomProduit();
  3735.                 $add['prodId'] = $uneLigneCmde->getProduit()->getId();
  3736.                 
  3737.                 $add['id'] = $uneLigneCmde->getId();
  3738.                
  3739.                
  3740.                 $add['qte'] = $uneLigneCmde->getQuantite();
  3741.                 $mtttc $uneLigneCmde->getQuantite() * $uneLigneCmde->getPrixRigueur()->getInfoPrixrigueur();
  3742.                 $add['mtttc'] = $mtttc ;
  3743.                 $add['prix'] = $uneLigneCmde->getPrixRigueur()->getInfoPrixrigueur();
  3744.             }else{
  3745.                 $add['produit'] = "";
  3746.                    $add['prodId'] = "";
  3747.                    
  3748.                    $add['id'] = 0;
  3749.                   
  3750.                   
  3751.                    $add['qte'] = "";
  3752.                   
  3753.                    $add['mtttc'] ="";
  3754.                    $add['prix'] = "";
  3755.             }
  3756.                    
  3757.                
  3758.                    
  3759.                
  3760.            //$em->getConnection()->commit();
  3761.         } catch (Exception $exc) {
  3762.             //$em->getConnection()->rollBack();
  3763.             throw $exc;
  3764.         }
  3765.        
  3766.         return new Response(json_encode(array('add' => $add)));
  3767.     }
  3768.     public function deleteLineCmdeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  3769.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  3770.     TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepositoryUtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
  3771.     CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
  3772.     TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
  3773.     ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository,LigneCommandeRepository $ligneCommandeRepository
  3774.     ) {
  3775.         /*
  3776.          * Nom de l'action en cours
  3777.          */
  3778.         $nomAction __FUNCTION__;
  3779.         /*
  3780.          * Description de l'action de l'action en cours
  3781.          */
  3782.         $descAction 'mise à jour une nouvelle ligne commande!';
  3783.         /*
  3784.          * Préparation du message de log 
  3785.          */
  3786.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  3787.         /*
  3788.          * Service de gestion des droits
  3789.          */
  3790.         
  3791.         /*
  3792.          * Informations de session
  3793.          */
  3794.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  3795.         /*
  3796.          * Locale en cours
  3797.          */
  3798.         $locale $loginManager->getLocale();
  3799.         $this->data['locale'] = $locale;
  3800.         /*
  3801.          * On vérifie si l'utilisateur est connecté
  3802.          */
  3803.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  3804.         //$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
  3805.         //$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
  3806.         $tabInfoDroit['nomControleur'] = $this->nom;
  3807.         $tabInfoDroit['descControleur'] = $this->description;
  3808.         $tabInfoDroit['nomAction'] = $nomAction;
  3809.         $tabInfoDroit['descAction'] = $descAction;
  3810.         $em $this->getDoctrine()->getManager();
  3811.         
  3812.         $locale $loginManager->getLocale();
  3813.         $this->data['locale'] = $locale;
  3814.         $this->request $request;
  3815.         
  3816.     
  3817.         $id $request->request->get('ids');
  3818.        // var_dump($id);exit;
  3819.         
  3820.        // $em->getConnection()->beginTransaction();
  3821.         try {
  3822.             $add["rep"]="0k";
  3823.             
  3824.                
  3825.                  $uneLigneCmde $ligneCommandeRepository->find($id );
  3826.                  $em->remove($uneLigneCmde );
  3827.                  $em->flush();
  3828.                
  3829.                    
  3830.                
  3831.            //$em->getConnection()->commit();
  3832.         } catch (Exception $exc) {
  3833.             //$em->getConnection()->rollBack();
  3834.             throw $exc;
  3835.         }
  3836.        
  3837.         return new Response(json_encode(array('add' => $add)));
  3838.     }
  3839. /* @copyright ADMIN 2015
  3840.     *
  3841.     * @version 1
  3842.     *
  3843.     * @return twig d'ajout d'un abonne detailOperation.html.twig
  3844.     */
  3845. public function incrementerLigneCommandeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,OperationManager $operationManager,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  3846. ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  3847. TemplateRepository $templateRepository
  3848. ,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepository,TypeOperationRepository $typeOperationRepositoryCommandeRepository $commandeRepositoryPrixRigueurRepository $prixRigueurRepository
  3849. ,LigneCommandeRepository $ligneCommandeRepository,ClientRepository $clientRepository,CategorieProduitRepository $categorieProduitRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,ChauffeurRepository $chauffeurRepository,InfoLivrerRepository $infoLivrerRepository ,
  3850. UtilisateurRepository $utilisateurRepositoryCaisseRepository $caisseRepository,  CibleRepository $cibleRepositoryCaracteristiquePrixRepository $caracteristiquePrixRepository
  3851.   ) {
  3852.     $rep = array('etat' => 0'msg' => 'Operation bien reussi''logout' => FALSE);
  3853.     /*
  3854.         * Nom de l'action en cours
  3855.         */
  3856.     $nomAction __FUNCTION__;
  3857.     /*
  3858.         * Description de l'action de l'action en cours
  3859.         */
  3860.     $descAction "incrementer les lignes de commande";
  3861.     /*
  3862.         * Préparation du message de log 
  3863.         */
  3864.     $this->logMessage .= ' [ ' $nomAction ' ] ';
  3865.     /*
  3866.         * Service de gestion des droits
  3867.         */
  3868.     
  3869.     /*
  3870.         * Informations de session
  3871.         */
  3872.     $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  3873.     /*
  3874.         * Locale en cours
  3875.         */
  3876.     $locale $loginManager->getLocale();
  3877.     $this->data['locale'] = $locale;
  3878.     /*
  3879.         * On vérifie si l'utilisateur est connecté
  3880.         */
  3881.     $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  3882.     if ($status['isConnecte']) {
  3883.         /*
  3884.             * Au cas ou l'utilisateur est connecté on vérifie s'il nest pas innactif. S'il est innactif
  3885.             * on garde en mémoire flash la route actuelle pour effectuer une redirection lors de la prochaine connexion
  3886.             */
  3887.         if ($status['isInnactif']) {
  3888.             $rep['msg'] = "Vous avez accusé un long moment d'inactivité. Veuillez-vous connecter de nouveau";
  3889.             $loginManager->logout(LoginManager::SESSION_DATA_NAME);
  3890.             return new Response(json_encode($rep));
  3891.         }
  3892.         /*
  3893.             * Seuls les utilisateurs admins ont le droit d'acceder à cette action
  3894.             */
  3895.         if (!$status['isUser']) {
  3896.             return new Response(json_encode($rep));
  3897.         }
  3898.     } else {
  3899.         $rep['msg'] = "Vous êtes déconnecté. Veuillez-vous connecter de nouveau";
  3900.         $rep['etat'] =false
  3901.         return new Response(json_encode($rep));
  3902.     }
  3903.     /*
  3904.         * Gestion des droits
  3905.     
  3906.     if (!$loginManager->getOrSetActions(Module::MOD_GEST_FOUR, Module::MOD_GEST_FOUR_DESC, $this->getNomClassRun(__CLASS__), $this->description, $nomAction, $descAction, $sessionData['idProfil'], $moduleRepository, $controleurRepository, $actionRepository, $profilRepository)) {
  3907.         $this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
  3908.         $rep['msg'] = "Vous n'avez pas le droit de recuperer la liste des operations d'une commande";
  3909.         return new Response(json_encode($rep));
  3910.     } */
  3911.     $tabLivrer = array();
  3912.     $tabLigneCommande = array();
  3913.     /*
  3914.         * Traitement de la requete qui vient de la vue
  3915.         * on vérifie si la requete est Ajax et si la methode est post
  3916.         */
  3917.     if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
  3918.         //Recuperation du code de la commande 
  3919.         $commandeId$request->get('commandeId');
  3920.         
  3921.         $produitId$request->get('produitId');
  3922.         $quantite $request->get('quantite');
  3923.         $siQuantite $request->get('siQuantite');
  3924.         $typeOperation $request->get('typeOperation');
  3925.         $prix=$request->get('prix');
  3926.         //var_dump($prix);exit;
  3927.         $em $this->getDoctrine()->getManager();
  3928.         $objetUtilisateur =  $utilisateurRepository->find($sessionData['id']);
  3929.        
  3930.         $objetProduit $produitRepository->find($produitId);
  3931.         $objetCommande $commandeRepository->find($commandeId);
  3932.         if($objetProduit->getCategorie()->getTypeCategorie() != 2){
  3933.             $objetPrixRigueur $this->savePrix($em$prix$objetProduit2$objetUtilisateur$prixRigueurRepository,  $cibleRepository$caracteristiquePrixRepository) ;
  3934.             $detailLigneCommande $ligneCommandeRepository->findOneBy(['produit'=>$objetProduit'commande'=>$objetCommande"prixrigueur"=>$objetPrixRigueur]);
  3935.             if($detailLigneCommande == null){
  3936.                 $codeVente "RV".rand();
  3937.                 
  3938.                 $this->saveLigneCommande($em$codeVentenull$objetCommande $objetProduit$objetPrixRigueur$quantite01,$ligneCommandeRepository) ;
  3939.             } else{
  3940.                 $quantite $detailLigneCommande->getQuantite()+$quantite;
  3941.                 $detailLigneCommande->setQuantite($quantite);
  3942.                 $em->persist($detailLigneCommande);
  3943.                 $em->flush();
  3944.             } 
  3945.         }else{
  3946.                 $tabCompteId =  $operationManager->getCompteCaisse($em,$objetUtilisateur->getCaisse()->getId(),$caisseRepository);
  3947.                 $refFacture "ReT3562";//$ligneCommande["factCodeGenere"] ;//$uneCommande->getCodeCommande();
  3948.             
  3949.                 $idProduit $objetProduit->getId();
  3950.                 //var_dump($uneLigneCommandeTmp->getTypeOperation(), $objetUtilisateur->getCaisse()->getId()); exit;
  3951.                 $objetTypeOperation $typeOperationRepository->find($typeOperation);
  3952.                 $idTypeOp =  $objetTypeOperation->getId();                            //$montantEsp = $infoCommande->getMontantCommande();
  3953.                 $montantAPaye=$prix;  
  3954.                 $tabCompteMontant $operationManager->getRecuperationCompte($em,$idTypeOp,$montantAPaye,$typeOperationRepository);  
  3955.                 
  3956.                 
  3957.                 $compteAuxi =$tabCompteId['compte'];
  3958.                 $infoDepo $objetTypeOperation->getLibTypeOperation()."/".$objetProduit->getNomProduit(); //.$uneCommande->getClient()->getUtilisateur()->getNom();       
  3959.                 //var_dump( $idTypeOp );exit;
  3960.                 if($objetUtilisateur->getVille() == null){
  3961.                     $idVille 1;
  3962.                 }else{
  3963.                     $idVille $objetUtilisateur->getVille()->getId();
  3964.                 }
  3965.                 $d = new \DateTime(); //$sessionData['dateChoisie'];
  3966.                 $dateChoisie $d->format('Y/m/d H:i:s');
  3967.                 $operationManager->geneLigneOperationComptable(null$tabCompteId['id'], $tabCompteMontant['montant'], $infoDepo$telDepo ''$refFacture''$tabCompteMontant['compte'], $idTypeOp$piece 0$nomCompte ''$typePaie=2$idProduit$compteAuxi$dateChoisie,$idVille,$objetUtilisateur->getAbonne()->getId(),0,null$utilisateurRepository,$caisseRepository);
  3968.         }
  3969.        
  3970.         $j 0;
  3971.         $tabInfoGeneral = array();
  3972.         foreach ($objetCommande->getLigneCommandes() as $uneLigneCommande) {
  3973.             $i 0;
  3974.             $prixTotalReel 0;
  3975.             $reference 0;
  3976.             $totalLivre 0;
  3977.             foreach ($uneLigneCommande->getLivrers() as $uneLivraison) {
  3978.                 $tabLivrer[$uneLigneCommande->getId()][$i]['nbreLivre'] = $uneLivraison->getNbreLivre();
  3979.                 $tabLivrer[$uneLigneCommande->getId()][$i]['dateLivraison'] = $uneLivraison->getDateLivraison();
  3980.                 $tabLivrer[$uneLigneCommande->getId()][$i]['nbreReste'] = $uneLivraison->getNbreReste();
  3981.                 $tabLivrer[$uneLigneCommande->getId()][$i]['ref'] = $uneLivraison->getRefBonLivraison();
  3982.                 $tabLivrer[$uneLigneCommande->getId()][$i]['prixUnitaire'] = $uneLivraison->getLigneCommande()->getPrixrigueur()->getInfoPrixRigueur();
  3983.                 $prixTotal = (int) $uneLivraison->getNbreLivre() * $uneLivraison->getLigneCommande()->getPrixrigueur()->getInfoPrixRigueur();
  3984.                 $tabLivrer[$uneLigneCommande->getId()][$i]['prixTotal'] = (String) $prixTotal;
  3985.                 $i++;
  3986.                 $reference $uneLivraison->getRefBonLivraison();
  3987.                 $prixTotalReel$prixTotalReel $prixTotal;
  3988.                 $totalLivre $totalLivre $uneLivraison->getNbreLivre();
  3989.             }
  3990.             //Get Information dernierre commande
  3991.             $ligneDernCommande $ligneCommandeRepository->findOneby(['produit'=>$uneLigneCommande->getProduit(),'suivantCommande'=>$uneLigneCommande->getId()]);
  3992.             $tabLigneCommande[$j]["id"] = $uneLigneCommande->getId();
  3993.             $tabLigneCommande[$j]["produit"] = $uneLigneCommande->getProduit()->getNomProduit();
  3994.             if($ligneDernCommande != null){
  3995.                 $tabLigneCommande[$j]["oldQuantite"] = $ligneDernCommande->getQuantite();
  3996.                 $tabLigneCommande[$j]["oldDateCommande"] = $ligneDernCommande->getCommande()->getDateCommande()->format("d/m/Y");
  3997.                 $tabLigneCommande[$j]["oldPrix"] = $ligneDernCommande->getPrixRigueur()->getInfoPrixRigueur();
  3998.             }else{
  3999.                 $tabLigneCommande[$j]["oldQuantite"] = "-";
  4000.                 $tabLigneCommande[$j]["oldDateCommande"] = "-";
  4001.                 $tabLigneCommande[$j]["oldPrix"] = "-";
  4002.             }
  4003.             $tabLigneCommande[$j]["quantite"] = $uneLigneCommande->getQuantite();
  4004.             $tabLigneCommande[$j]["dateCommande"] = $objetCommande->getDateCommande()->format("d/m/Y");
  4005.             $tabLigneCommande[$j]["prix"] = $uneLigneCommande->getPrixRigueur()->getInfoPrixRigueur();
  4006.             $tabLigneCommande[$j]["nombreLivrer"] = $totalLivre ;
  4007.             $tabLigneCommande[$j]["nombrePrix"] = $uneLigneCommande->getPrixRigueur()->getInfoPrixRigueur();
  4008.             $j++;
  4009.         }
  4010.         
  4011.         
  4012.         $montantTotalCommande $ligneCommandeRepository->sumLigneCommande($objetCommande->getId());
  4013.         $objetCommande->setMontantCommande($montantTotalCommande); //
  4014.         $em->persist($objetCommande);    
  4015.         $em->flush($objetCommande);
  4016.         
  4017.         
  4018.         $tabInfoGeneral['prixTotalReel']= $prixTotalReel;
  4019.         $tabInfoGeneral['reference'] = $reference;
  4020.         $tabInfoGeneral['codeCommande'] =  $objetCommande->getCodeCommande();
  4021.         $tabInfoGeneral['commandeId'] =  $objetCommande->getId();
  4022.         $tabInfoGeneral['fournisseur'] =   "TEST";//$detailCommande[0]->getFournisseur()->getNomFournisseur();
  4023.         $tabInfoGeneral['dateCommande'] =  $objetCommande->getDateCommande()->format("d/m/Y");
  4024.         $tabInfoGeneral['totalLivre'] = $totalLivre;
  4025.         $rep['reponse'] = $tabLivrer;
  4026.         $rep['infoGenerale'] = $tabInfoGeneral;
  4027.         $rep['lignecommande'] = $tabLigneCommande;
  4028.         // var_dump($listeLigneCommande);exit;
  4029.         $rep['etat'] = true;
  4030.     }
  4031.     return new Response(json_encode($rep));
  4032. }
  4033. public function getProduitFournisseurAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  4034. ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
  4035. TemplateRepository $templateRepository
  4036. ,FournisseurRepository $fournisseurRepositoryProduitRepository $produitRepository,TypeOperationRepository $typeOperationRepositoryCommandeRepository $commandeRepositoryPrixRigueurRepository $prixRigeurRepository
  4037. ,LigneCommandeRepository $ligneCommandeRepository,ClientRepository $clientRepository,CategorieProduitRepository $categorieProduitRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,ChauffeurRepository $chauffeurRepository,InfoLivrerRepository $infoLivrerRepository ,
  4038. UtilisateurRepository $utilisateurRepository ) {
  4039.    
  4040.     
  4041.         //$locale = $loginManager->getLocale();
  4042.         //$this->data['locale'] = $locale;
  4043.         //$this->request = $request;
  4044.         $em $this->getDoctrine()->getManager();
  4045.         /*
  4046.         * Informations de session
  4047.         */
  4048.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  4049.         $fournisseurId $request->request->get('fournisseurId');
  4050.     // var_dump($id);exit;
  4051.         try {
  4052.             $listeProduit $produitRepository->getAllFournisseurProduitAjax$sessionData['abonneId'],  $fournisseurId);
  4053.             $infoFournisseur $fournisseurRepository->getOneFournisseurAPI($fournisseurId);
  4054.             $add['all'] = $listeProduit;
  4055.             $add['fournisseur'] = $infoFournisseur;
  4056.         } catch (Exception $exc) {
  4057.             //$em->getConnection()->rollBack();
  4058.             throw $exc;
  4059.         }
  4060.     
  4061.         return new Response(json_encode(array('add' => $add))); //'add'
  4062. }
  4063. }