src/Controller/stock/CommandeController.php line 3285

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