src/Controller/stock/CommandeController.php line 3063

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