src/Controller/stock/CaisseController.php line 352

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\Types\user;
  7. use App\Entity\stock\Caisse;
  8. use App\Entity\stock\Prestataire;
  9. use App\Entity\stock\CaisseProduit;
  10. use App\Entity\user\Module;
  11. use App\Form\stock\CaisseType;
  12. use App\Types\user\TypeEtat;
  13. use App\Entity\stock\CaissePrix;
  14. use App\Entity\stock\CaisseClient;
  15. use App\Services\user\LoginManager;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use App\ControllerModel\user\paramUtilTrait;
  18. use App\Repository\user\ConnexionRepository;
  19. use App\Repository\user\AbonneRepository;
  20. use App\Repository\user\ActionRepository;
  21. use App\Services\param\ParametreManager;
  22. use App\Repository\param\ParamRepository;
  23. use App\Repository\user\ModuleRepository;
  24. use App\Repository\user\ControleurRepository;
  25. use App\Repository\user\ProfilRepository;
  26. use App\Repository\user\UtilisateurRepository;
  27. use App\Repository\cms\TemplateRepository;
  28. use App\Repository\prod\GroupementRepository;
  29. use App\Repository\stock\BrouillardCaisseRepository;
  30. use App\Repository\stock\CaisseProduitRepository;
  31. use App\Repository\stock\CaisseClientRepository;
  32. use App\Repository\stock\CaissePrixRepository;
  33. use App\Repository\stock\CategorieProduitRepository;
  34. use App\Repository\stock\PrixRigueurRepository;
  35. use App\Repository\client\ClientRepository;
  36. use App\Entity\user\Controleur;
  37. use App\Repository\stock\CaisseRepository;
  38. use App\Repository\stock\VilleRepository;
  39. use App\Repository\stock\ProduitRepository;
  40. use App\Repository\stock\PrestataireRepository;
  41. use App\Repository\stock\TypeOperationRepository;
  42. use App\Repository\stock\PrixRigeurRepository;
  43. use App\Repository\stock\PaysRepository;
  44. use App\Repository\stock\SchemaRepository;
  45. /**
  46.  * Controlleur qui permet de gérer les operations sur les rubriques.
  47.  *
  48.  * @author armand.tevi@gmail.com
  49.  * @copyright ADMIN 2015
  50.  *
  51.  * @version 1
  52.  */
  53. class CaisseController extends AbstractController {
  54.     use paramUtilTrait;
  55.     /**
  56.      * Déclaration de l'entity manager.
  57.      *
  58.      * @var
  59.      */
  60.     protected $em;
  61.     /**
  62.      * @var string
  63.      *             Le comtroleur 
  64.      */
  65.     public function __construct(TranslatorInterface $translator) {
  66.        // parent::__construct();
  67.         $this->response = new Response();
  68.         
  69.         $this->response->headers->addCacheControlDirective('no-cache'true);
  70.         $this->response->headers->addCacheControlDirective('max-age'TypeEtat::INACTIF);
  71.         $this->response->headers->addCacheControlDirective('must-revalidate'true);
  72.         $this->response->headers->addCacheControlDirective('no-store'true);
  73.         $this->moduleTitre Module::MOD_GEST_CAIS;
  74.         $this->moduleDesc Module::MOD_GEST_CAIS_DESC;
  75.         $this->logMessage " [ CaisseController ] ";
  76.         $this->description "Controlleur qui gère les caisses";
  77.         $this->translator $translator;
  78.     }
  79.     /**
  80.      * Methode s'occupant de l'ajout du caisse.
  81.      *
  82.      * @author armand.tevi@gmail.com
  83.      * @copyright ADMIN 2015
  84.      *
  85.      * @version 1
  86.      *
  87.      * @return twig d'ajout d'un abonne ajouterCaisse.html.twig
  88.      */
  89.     public function ajouterCaisseAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  90.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  91.     AbonneRepository $abonneRepositoryCaisseRepository $caisseRepository) {
  92.            /*
  93.          * Nom de l'action en cours
  94.          */
  95.         $nomAction __FUNCTION__;
  96.         /*
  97.          * Description de l'action de l'action en cours
  98.          */
  99.         $descAction "Ajouter une caisse ";
  100.         $locale ='fr';
  101.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc$loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository );
  102.         if($valRetour==1){
  103.             return $this->redirect($this->generateUrl('app_logout'));
  104.         }elseif($valRetour==2){
  105.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  106.         }
  107.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  108.         $em $this->getDoctrine()->getManager();
  109.         
  110.         $unCaisse = new Caisse();
  111.         
  112.         $form $this->createForm(CaisseType::class, $unCaisse, ['abonne'=>$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository)]);
  113.         //$em = $this->getDoctrine()->getManager();
  114.         /*
  115.          * Declaration des principales methodes Symfony2 pour traiter les informations
  116.          */
  117.         
  118.         $this->request $request;
  119.         $this->session $this->get('session');
  120.         $this->flashMessage $this->get('session')->getFlashBag();
  121.         
  122.         
  123.         //Recuperation de la liste des Caisses que Symfony 2 accepte
  124.         $tableauCaisseSymfony = array();       
  125.         /*
  126.          * Donnée à afficher sur le twig
  127.          * 
  128.          */
  129.      
  130.         if ($this->request->isMethod('POST')) {
  131.             $form->handleRequest($this->request);
  132.             /*
  133.              * Vérifier si les élément du formulaire sont valides
  134.              * 
  135.              */
  136.             //var_dump($form);exit;
  137.             if ($form->isSubmitted() ) {
  138.                 /*
  139.                  * On cherche si une Caisse existe deja avec le mm nom et  a un code
  140.                  */
  141.                 $em->getConnection()->beginTransaction();
  142.                 try {
  143.                     $criteria = array('nomCaisse' => $unCaisse->getNomCaisse());
  144.                     $ancienCaisse $caisseRepository->findOneBy($criteria);
  145.                     //$criteriaCode = array('codeCaisse' => $unCaisse->getCodeCaisse());
  146.                     $ancienCaisseCode $caisseRepository->findOneBy($criteria);
  147.                     if ($ancienCaisseCode != null) {
  148.                         /*
  149.                          * Un Caisse existe mais est supprimé, on le reactive alors
  150.                          */
  151.                         if ($ancienCaisseCode->getEtatCaisse() == TypeEtat::SUPPRIME) {
  152.                             $unCaisse->setEtatCaisse(TypeEtat::ACTIF);
  153.                             $unCaisse->setNomCaisse($form->getData()->getNomCaisse());
  154.                             $em->persist($unCaisse);
  155.                             $em->flush();
  156.                             $this->get('session')->getFlashBag()->add('caisse.ajout.success''Ajout effectue avec succès');
  157.                             return $this->redirect($this->generateUrl('admin_caisses'));
  158.                         } else {
  159.                             $this->get('session')->getFlashBag()->add('caisse.ajout.already.exist''Le code  Caisse ' $ancienCaisseCode->getCodeCaisse() . ' existe déjà');
  160.                         }
  161.                     } else {
  162.                         /*
  163.                          * Vérification du libellé du critère
  164.                          */
  165.                         if ($ancienCaisse != null) {
  166.                             /*
  167.                              * Un Caisse existe mais est supprimé, on le reactive alors
  168.                              */
  169.                             $this->get('session')->getFlashBag()->add('caisse.ajout.already.exist''Le Caisse ' $ancienCaisse->getNomCaisse() . ' existe déjà');
  170.                         } else {
  171. //                            $unCaisse->setDateModification(new \DateTime());
  172.                             $unCaisse->setDatePublication(new \DateTime());
  173.                        
  174.                             
  175.                             $unCaisse->setEtatCaisse(1);
  176.                             $unCaisse->setAbonne($this->getAbonne($em$sessionData['abonneId'],$abonneRepository)) ;
  177.                             $em->persist($unCaisse);
  178.                             $em->flush();
  179.                             $this->flashMessage->add('caisse.ajout.success'$this->translator->trans("site.ajouter.succes"));
  180.                             $em->getConnection()->commit();
  181.                             return $this->redirect($this->generateUrl('admin_caisses'));
  182.                         }
  183.                     }
  184.                      
  185.                 } catch (\Exception $e) {
  186.                     $em->getConnection()->rollBack();
  187.                     throw $e;
  188.                 }
  189.             } else {
  190.                 $this->flashMessage->add('caisse.ajout.error'$this->translator->trans("site.formulaire.invalide"));
  191.             }
  192.         }
  193.         $this->data['formuView'] = $form->createView();
  194.         $this->data['Caisse'] = $unCaisse;
  195.         $this->data['locale'] = $locale;
  196.         $this->data['actionRepository'] = $actionRepository;
  197.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Caisse/ajouterCaisse.html.twig'$this->data$this->response);
  198.     }
  199.     
  200.     
  201.     
  202.     /**
  203.      * Methode s'occupant de la modification du caisse.
  204.      *
  205.      * @author armand.tevi@gmail.com
  206.      * @copyright ADMIN 2015
  207.      *
  208.      * @version 1
  209.      *
  210.      * @return twig d'ajout d'un abonne modifierCaisse.html.twig
  211.      */
  212.     public function modifierCaisseAction(Request $request$id,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  213.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  214.     AbonneRepository $abonneRepositoryCaisseRepository $caisseRepository) {
  215.                /*
  216.          * Nom de l'action en cours
  217.          */
  218.         $nomAction __FUNCTION__;
  219.         /*
  220.          * Description de l'action de l'action en cours
  221.          */
  222.          
  223.         $descAction "Modifier une caisse ";
  224.         $locale ='fr';
  225.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc$loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository );
  226.         if($valRetour==1){
  227.             return $this->redirect($this->generateUrl('app_logout'));
  228.         }elseif($valRetour==2){
  229.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  230.         }
  231.         
  232.         
  233.         $em $this->getDoctrine()->getManager();
  234.         $this->flashMessage $this->get('session')->getFlashBag();
  235.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  236.         /*
  237.          * On vérifie si l'utilisateur est connecté
  238.          */
  239.         /*
  240.          * Création du formulaire par rapport a l'entité Caisse
  241.          */
  242.         $unCaisse $caisseRepository->find($id);
  243.         //$ancienCaisseAModif = $unCaisse->getNomCaisse();
  244.         $form $this->createForm(CaisseType::class, $unCaisse, ['abonne'=>$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository)]);
  245.         // Vérification de véracité des informations envoyées
  246.         
  247.         //var_dump($unCaisse,$id);exit;
  248.         if ($unCaisse == null) {
  249.             return $this->redirect($this->generateUrl('admin_caisses'));
  250.         }
  251.         // Vérifier si la méthode d'envoie
  252.         if ($request->isMethod('POST')) {
  253.             $form->handleRequest($request);
  254.             /*
  255.              * Vérifier si les éléments du formulaire sont valides et que le formulaire a ete soumis
  256.              */
  257.             
  258.             if ($form->isSubmitted()) {
  259.                 $em->getConnection()->beginTransaction();
  260.                 try {
  261.                     
  262.                     /*
  263.                      * On cherche si une Caisse existe deja avec le même nom
  264.                      */
  265.                     $criteria = array('nomCaisse' => $unCaisse->getNomCaisse());
  266.                     $ancienCaisse $caisseRepository->findOneBy($criteria);
  267.                     /*
  268.                      * On cherche si une Caisse existe deja avec le même code
  269.                      */
  270.                     //$unCaisse->setIdAuteur(1);
  271.                    // $criteriaCode = array('codeCaisse' => $unCaisse->getCodeCaisse());
  272.                     $ancienCaisseCode $caisseRepository->findBy($criteria);
  273.                     if (count($ancienCaisseCode) > 1) {
  274.                         $this->flashMessage->add('caisse.modifier.already.exist''Le code  Caisse ' $ancienCaisseCode[0]->getCodeCaisse() . ' existe déjà');
  275.                     } else {
  276.                         if ($ancienCaisse != null) {
  277.                             /*
  278.                              * Traitement du cas d'un Caisse qui existe mais est 
  279.                              * supprimé, on le reactive alors pour eviter 
  280.                              * les doublons dans la base de données
  281.                              */
  282.                             if ($ancienCaisse->getEtatCaisse() == TypeEtat::SUPPRIME) {
  283.                                 /*
  284.                                  * Activation du critère supprimé
  285.                                  */
  286.                                 $ancienCaisse->getEtatCaisse(TypeEtat::ACTIF);
  287.                             } else {
  288.                                 /*
  289.                                  * Persistence de l'objet
  290.                                  */
  291.                                 $em->persist($unCaisse);
  292.                             }
  293.                         } else {
  294.                             $em->persist($unCaisse);
  295.                         }
  296.                         /*
  297.                          * Mise a jour des informations dans la base de donnée
  298.                          */
  299.                         $em->flush();
  300.                         $this->flashMessage->add('caisse.modifier.success'$this->translator->trans("site.ajouter.succes"));
  301.                         $em->getConnection()->commit();
  302.                         return $this->redirect($this->generateUrl('admin_caisses'));
  303.                     }
  304.                 } catch (\Exception $e) {
  305.                     $em->getConnection()->rollBack();
  306.                     throw $e;
  307.                 }
  308.             } else {
  309.                 $this->flashMessage->add('caisse.ajout.error'$this->translator->trans("site.formulaire.invalide"));
  310.             }
  311.         }
  312.         /*
  313.          * Preparation des informations à traiter sur les twig 
  314.          */
  315.         $this->data['formuView'] = $form->createView();
  316.         $this->data['Caisse'] = $unCaisse;
  317.         $this->data['locale'] = $locale;
  318.         $this->data['id'] = $id;
  319.         $this->data['actionRepository'] = $actionRepository;
  320.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Caisse/modifierCaisse.html.twig'$this->data$this->response);
  321.     }
  322.     /**
  323.      * Methode s'occupant de lister les Caisses.
  324.      *
  325.      * @author armand.tevi@gmail.com
  326.      * @copyright ADMIN 2015
  327.      *
  328.      * @version 1
  329.      *
  330.      * @return twig d'ajout d'un abonne listeCaisse.html.twig
  331.      */
  332.     public function listerCaisseAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  333.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  334.     AbonneRepository $abonneRepositoryCaisseRepository $caisseRepository) {
  335.                        /*
  336.          * Nom de l'action en cours
  337.          */
  338.         $nomAction __FUNCTION__;
  339.        
  340.         /*
  341.          * Description de l'action de l'action en cours
  342.          */
  343.         $descAction "Voir la liste des caisses ";
  344.         $locale ='fr';
  345.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc$loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository );
  346.         if($valRetour==1){
  347.             return $this->redirect($this->generateUrl('app_logout'));
  348.         }elseif($valRetour==2){
  349.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  350.         }
  351.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  352.         
  353.         try {
  354.             /*
  355.              * Récupération des la liste des critères
  356.              */
  357.             $em $this->getDoctrine()->getManager();
  358.             $listeCaisse $caisseRepository->getAllCaisseAbonne($sessionData['abonneId']);
  359.         } catch (\Exception $e) {
  360.             var_dump($e->getMessage());
  361.             exit;
  362.         }
  363.         /*
  364.          * Préparation des informations que nous allons traiter  sur le twig
  365.          */
  366.         $this->data['listeCaisse'] = $listeCaisse;
  367.         $this->data['locale'] = $locale;
  368.         $this->data['actionRepository'] = $actionRepository;
  369.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Caisse/listeCaisse.html.twig'$this->data$this->response);
  370.     }
  371.  /**
  372.      * Methode s'occupant de la gestion des états du critère
  373.      * Activation, suppression, désactivation de pays.
  374.      *
  375.      * @author armand.tevi@gmail.com
  376.      * @copyright ADMIN 2015
  377.      *
  378.      * @version 1
  379.      *
  380.      * @return Response
  381.      */
  382.     public function changerEtatCaisseAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  383.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  384.    AbonneRepository $abonneRepository) {
  385.         $rep = array('etat' => FALSE'msg' => 'Erreur survenue lors du traitement''logout' => FALSE);
  386.         /*
  387.          * Nom de l'action en cours
  388.          */
  389.         $nomAction __FUNCTION__;
  390.         /*
  391.          * Description de l'action de l'action en cours
  392.          */
  393.         $descAction "Changer l'etat de la ligne des caisses";
  394.         /*
  395.          * Préparation du message de log 
  396.          */
  397.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  398.         /*
  399.          * Service de gestion des droits
  400.          */
  401.         
  402.         /*
  403.          * Informations de session
  404.          */
  405.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  406.         /*
  407.          * Locale en cours
  408.          */
  409.         $locale $loginManager->getLocale();
  410.         $this->data['locale'] = $locale;
  411.         /*
  412.          * On vérifie si l'utilisateur est connecté
  413.          */
  414.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  415.         if ($status['isConnecte']) {
  416.             /*
  417.              * Au cas ou l'utilisateur est connecté on vérifie s'il nest pas innactif. S'il est innactif
  418.              * on garde en mémoire flash la route actuelle pour effectuer une redirection lors de la prochaine connexion
  419.              */
  420.             if ($status['isInnactif']) {
  421.                 $rep['msg'] = "Vous avez accusé un long moment d'inactivité. Veuillez-vous connecter de nouveau";
  422.                 $loginManager->logout(LoginManager::SESSION_DATA_NAME);
  423.                 return new Response(json_encode($rep));
  424.             }
  425.             /*
  426.              * Seuls les utilisateurs admins ont le droit d'acceder à cette action
  427.              */
  428.             if (!$status['isUser']) {
  429.                 return new Response(json_encode($rep));
  430.             }
  431.         } else {
  432.             $rep['msg'] = "Vous êtes déconnecté. Veuillez-vous connecter de nouveau";
  433.             return new Response(json_encode($rep));
  434.         }
  435.         /*
  436.          * Gestion des droits
  437.          */
  438.         if (!$loginManager->getOrSetActions(Module::MOD_GEST_CAISModule::MOD_GEST_CAIS_DESC$this->getNomClassRun(__CLASS__), $this->description$nomAction$descAction$sessionData['idProfil'], $moduleRepository$controleurRepository$actionRepository$profilRepository)) {
  439.             $this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
  440.             $rep['msg'] = "Vous n'avez pas le droit de déconnecter un utilisateur";
  441.             return new Response(json_encode($rep));
  442.         }
  443.         /*
  444.          * Traitement de la requete qui vient de la vue
  445.          * on vérifie si la requete est Ajax et si la methode est post
  446.          */
  447.         if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
  448.             /*
  449.              * on recupere l'état actuel qu'on veut donner au(x) Caisse(s)
  450.              * cette variable est envoyée depuis la vue a travers la requete post ajax
  451.              */
  452.             $tempEtat = (int) $request->get('etat');
  453.             /*
  454.              * on recupere les ids des Caisses qui ont été choisis sur la vue pour subir une modification d'états
  455.              * cette variable est envoyé depuis la vue a travers la requete post ajax
  456.              */
  457.             $tempIds $request->get('sId');
  458.             /*
  459.              * verification si l'etat envoyé est un état INACTIF , ACTIF ou SUPPRIME 
  460.              * déclaration d'une variable pour prendre l'état comme constante de classe TypeEtat
  461.              */
  462.             $etat App\Types\TypeEtat::INACTIF;
  463.             if ($tempEtat == TypeEtat::INACTIF) {
  464.                 $etat App\Types\TypeEtat::INACTIF;
  465.             } elseif ($tempEtat == TypeEtat::ACTIF) {
  466.                 $etat App\Types\TypeEtat::ACTIF;
  467.             } elseif ($tempEtat == TypeEtat::SUPPRIME) {
  468.                 $etat App\Types\TypeEtat::SUPPRIME;
  469.             } else {
  470.                 return new Response(json_encode($rep));
  471.             }
  472.             /*
  473.              * éclatement de la chaine d'ids séparé par des | en tableau
  474.              * afin de parcourir le tabelau et faire le changement d'etat par compte
  475.              */
  476.             $tabIds explode('|'$tempIds);
  477.             /*
  478.              * variable boolean initialisé a false .elle va être modifier à true si tout se passe bien
  479.              */
  480.             $oneOk false;
  481.             /*
  482.              * Boucle de changement d'état à tout les comptes choisis
  483.              */
  484.             $em->getConnection()->beginTransaction();
  485.             try {
  486.                  foreach ($tabIds as $idS) {
  487.                         /*
  488.                          * Recuperation du Caisse dont l'id est l'id courant de la boucle
  489.                          */
  490.                         $unCaisse $caisseRepository->find((int) $idS);
  491.                         if ($unCaisse != null) {
  492.                             $unCaisse->setEtatCaisse($etat);
  493.                             /*
  494.                              * Mise à jour des informations dans la base de donnée
  495.                              */
  496.                             $em->flush();
  497.                             $oneOk true;
  498.                         }
  499.                     }
  500.                     if ($oneOk) {
  501.                         $this->flashMessage->add('caisse.gerer.success'$this->translator->trans("site.ajouter.succes"));
  502.                         $rep['msg'] = '';
  503.                         $rep['etat'] = true;
  504.                     }
  505.                     $em->getConnection()->commit();
  506.    
  507.             } catch (Exception $exc) {
  508.                 echo $exc->getTraceAsString();
  509.             }
  510.             return new Response(json_encode($exc));
  511.            
  512.         }
  513.         return new Response(json_encode($rep));
  514.     }
  515.         /**
  516.      * Methode s'occupant de l'ajout du produit.
  517.      *
  518.      * @author armand.tevi@gmail.com
  519.      * @copyright ADMIN 2015
  520.      *
  521.      * @version 1
  522.      * @return twig d'ajout d'un abonne ajouterproduit.html.twig
  523.      */
  524.     public function ajouterDepenseCaisseAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  525.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  526.     AbonneRepository $abonneRepository,UtilisateurRepository $utilisateurRepositoryTypeOperationRepository $typeOperationRepositoryProduitRepository $produitRepository,
  527.     VilleRepository $villeRepository,PrestataireRepository $prestataireRepositoryPaysRepository $paysRepositoryCaisseRepository $caisseRepository,SchemaRepository $schemaRepository) {
  528.         /*
  529.          * Nom de l'action en cours
  530.          */
  531.         $nomAction __FUNCTION__;
  532.         /*
  533.          * Description de l'action de l'action en cours
  534.          */
  535.         $descAction "Ajouter les dépenses liées à une caisse";
  536.         /*
  537.          * Préparation du message de log 
  538.          */
  539.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  540.         /*
  541.          * Service de gestion des droits
  542.          */
  543.         
  544.         /*
  545.          * Informations de session
  546.          */
  547.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  548.         /*
  549.          * Locale en cours
  550.          */
  551.         $locale $loginManager->getLocale();
  552.         $this->data['locale'] = $locale;
  553.         /*
  554.          * On vérifie si l'utilisateur est connecté
  555.          */
  556.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  557.         if ($status['isConnecte']) {
  558.             /*
  559.              * Au cas ou l'utilisateur est connecté on vérifie s'il nest pas innactif. S'il est innactif
  560.              * on garde en mémoire flash la route actuelle pour effectuer une redirection lors de la prochaine connexion
  561.              */
  562.             if ($status['isInnactif']) {
  563.                 $routeName $request->get('_route');
  564.                 $routeParams $request->get('_route_params');
  565.                 $this->get('session')->getFlashBag()->add('restoreUrl'$this->generateUrl($routeName$routeParams));
  566.                 $this->get('session')->getFlashBag()->add('ina'$this->translator->trans("site.long.periode"));
  567.                 return $this->redirect($this->generateUrl('app_logout'));
  568.             }
  569.             /*
  570.              * Seuls les utilisateurs admins ont le droit d'acceder à cette action
  571.              */
  572.             if (!$status['isUser']) {
  573.                 return $this->redirect($this->generateUrl('app_logout'));
  574.             }
  575.         } else {
  576.             return $this->redirect($this->generateUrl('app_logout'));
  577.         }
  578.         /*
  579.          * Gestion des droits
  580.          */
  581.         if (!$loginManager->getOrSetActions(Module::MOD_GEST_PRODModule::MOD_GEST_PROD_DESC$this->getNomClassRun(__CLASS__), $this->description$nomAction$descAction$sessionData['idProfil'], $moduleRepository$controleurRepository$actionRepository$profilRepository)) {
  582.             $this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
  583.             $this->get('session')->getFlashBag()->add('access'"Vous n'avez pas le droit d'accéder à cette page");
  584.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  585.         }
  586.         try {
  587.             
  588.         } catch (\Exception $e) {
  589.             var_dump($e->getMessage());
  590.             exit;
  591.         }
  592.         $em $this->getDoctrine()->getManager();
  593.         $typeOperation $typeOperationRepository->getListeTypeOperationSimple();
  594.         $listeUtilisateur $utilisateurRepository->findAll();
  595.         $listeVille $villeRepository->findAll();
  596.         $listeProduit $produitRepository->findAll();
  597.         $listePrestataire  $prestataireRepository->findAll();
  598.         $listePays $paysRepository->findAll();
  599.         $objetUtilisateur $utilisateurRepository->find($sessionData['id']);
  600.         $idVille 0;//$objetUtilisateur->getVille()->getId();
  601.         $compte 0;//$objetUtilisateur->getVille()->getCaisses()[0]->getPlancomptable()->getCompte();
  602.         
  603.       
  604.         /*
  605.          * Préparation des informations que nous allons traiter  sur le twig
  606.          */
  607.         if ($request->isMethod('POST')) {            
  608.                 
  609.                 $numeroPiece $request->get('numero_piece');
  610.                 $libelleOperation $request->get('libelle_operation');
  611.                 $compte $request->get('compte');
  612.                 $libelle $request->get('libelle');
  613.                 $montant $request->get('montant');
  614.                 $valanalytique $request->get('val-analytique');
  615.                 //$operation = $request->get('operation');
  616.                 $date $request->get('date');
  617.                 $utilisateur $request->get('utilisateur');              
  618.                 $prestataire $request->get('prestataire');              
  619.                 //nombre total de ligne opération ajoutée
  620.                 $nbreLigne count($compte);
  621.                 for($i 0$i $nbreLigne$i++)
  622.                 {                   
  623.                     $montantEsp $montant[$i];                    
  624.                     $idAbonne $request->get('idabonne');
  625.                     $idTypeOp $compte[$i];
  626.                     $montantEsp preg_replace('/\D/'''$montantEsp);
  627.                     $operationManager $this->get('operation_manager');
  628.                     
  629.                     //recuperation de l'identifiant du produit
  630.                     $tabCompteId =  $operationManager->getCompteVille($em,$idVille$villeRepository$caisseRepository);
  631.                     $tabLibelle =  $operationManager->getTabLibelle($em,$idTypeOp$compte,$libelleOperation$libelle[$i], $typeOperationRepository$schemaRepository);
  632.                     $idProduit null;            
  633.                     $tabCompteMontant $operationManager->getRecuperationCompte($em,$idTypeOp,$montantEsp,$typeOperationRepository);            
  634.                     $compteAuxi $tabCompteId['compte'];
  635.                     $d = new \DateTime(); 
  636.                     $dateChoisie $d->format('Y/m/d');
  637.                     $objetPrestataire $prestataireRepository->findOneBy(array("nomPrestataire"=>$prestataire[$i]));
  638.                     if(count($objetPrestataire) == 0){
  639.                         $objetPrestataire = new Prestataire();
  640.                         $objetPrestataire->setNomPrestataire($prestataire[$i]);
  641.                         $em->persist($objetPrestataire);
  642.                         $em->flush();
  643.                     }
  644.                     $idPrest $objetPrestataire->getId();
  645.                     $operationManager->geneLigneOperationComptableNouveau(null$tabCompteId['id'], $tabCompteMontant['montant'], $tabLibelle$telDepo ''"0000"$numCheque=""$tabCompteMontant['compte'], $idTypeOp$numeroPiece$nomCompte ''$typePaie=1$idProduit$compteAuxi$dateChoisie,$idVille,1,$utilisateur[$i],$valanalytique[$i],$idPrest$utilisateurRepository,$caisseRepository);
  646.                     
  647.                     //Page de liste pour voir les opérations
  648.                 }
  649.                 return $this->redirect($this->generateUrl('admin_exporter_brouillard',array('post'=>1)));
  650.                 
  651.         }
  652.         //$this->data['listeProduit'] = $listeProduit;
  653.         $this->data['compte'] = $compte;
  654.         $this->data['locale'] = $locale;
  655. //        $this->data['codecommande'] = $codecommande;
  656.         $this->data['listeVille'] = $listeVille;
  657.         $this->data['listeProduit'] = $listeProduit;
  658.         $this->data['listePrestataire'] = $listePrestataire;
  659.         $this->data['listePays'] = $listePays;
  660.         $this->data['listeUtilisateur'] = $listeUtilisateur;
  661.         $this->data['typeOperation'] = $typeOperation;
  662. //        $this->data['type'] = $type;
  663.         $this->data['actionRepository'] = $actionRepository;
  664.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Operation/ajouterDepenseCaisse.html.twig'$this->data$this->response);
  665.     }
  666.     /**
  667.      * Methode pour traiter le libelle du Caisse envoye il permet de remplace les espaces par "_".
  668.      *
  669.      * @author armand.tevi@gmail.com
  670.      * @copyright ADMIN 2015
  671.      *
  672.      * @version 1
  673.      *
  674.      * @return entier
  675.      */
  676.     public function remplacerEspece($donnee) {
  677.         $donneNouvelle str_replace(' ''_'$donnee);
  678.         return $donneNouvelle;
  679.     }
  680.      /*
  681.      * Afficher les informations  d'un abonné
  682.      * 
  683.      * @param type $idProfil
  684.      * @param type $idAbonne
  685.      * @return type
  686.      */
  687.     public function infosCaisseAction(Request $request,  $id,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  688.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  689.     AbonneRepository $abonneRepository ,CaisseRepository $caisseRepository
  690.     ,CategorieProduitRepository $categorieProduitRepository,ProduitRepository $produitRepository,PrixRigueurRepository $prixRigueurRepositoryClientRepository $clientRepository) {
  691.         /*
  692.          * Nom de l'action en cours
  693.          */
  694.          $nomAction __FUNCTION__;
  695.         /*
  696.          * Description de l'action de l'action en cours
  697.          */
  698.         $descAction "Affichage des informations d'une caisse ";
  699.         $locale ='fr';
  700.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc$loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository );
  701.         if($valRetour==1){
  702.             return $this->redirect($this->generateUrl('app_logout'));
  703.         }elseif($valRetour==2){
  704.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  705.         } 
  706.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  707.         $em $this->getDoctrine()->getManager();
  708.         /*
  709.          * On recupère l'abonne
  710.          */
  711.         $objetCaisse $caisseRepository->find($id);
  712.         //$listeCommande = $em->getRepository($this->stockBundle . 'Commande')->getClientCommande($idAbonne);
  713.         if ($objetCaisse == NULL) {
  714.             return $this->redirect($this->generateUrl('app_admin_abonnes'));
  715.         }
  716.         $listeProduit = array();
  717.         /*
  718.          * Le mot de passe ne doit pas être vide
  719.          */
  720.         $listeCategorie $categorieProduitRepository->getAllCategorieProduit($sessionData['abonneId']);
  721.         foreach($listeCategorie as $uneCategorie){
  722.             $listeProduit[$uneCategorie->getId()] = $produitRepository->getAllProduitCategorieAjax($uneCategorie->getId(),$sessionData['abonneId']);              
  723.         }
  724.         $categorieActive $categorieProduitRepository->getAllCategorieIdActive($sessionData['abonneId']);
  725.         $produitActive $produitRepository->getAllProduitCaisseIdActive($sessionData['abonneId'],$objetCaisse->getId());
  726.         
  727.         
  728.         $listePrixRigueur $prixRigueurRepository->getAllVarietePrixRigueur(00,$sessionData['abonneId']);
  729.         $queryResult $clientRepository->getAllClient(00000010000010000,0,5,0,0,$sessionData['abonneId']);
  730.         
  731.         $clientActive $clientRepository->getAllClientCaisseIdActive($sessionData['abonneId'],$objetCaisse->getId());
  732.         $prixActive $prixRigueurRepository->getAllPrixCaisseIdActive($sessionData['abonneId'],$objetCaisse->getId());
  733.         
  734.         $this->data['listePrixRigueur'] = $listePrixRigueur;
  735.         $this->data['listeClient'] = $queryResult['data'];
  736.         $this->data['categorieActive'] = $categorieActive;
  737.         $this->data['produitActive'] = $produitActive;
  738.         $this->data['prixActive'] = $prixActive;
  739.         $this->data['clientActive'] = $clientActive;
  740.         // $this->data['listeCommande'] = $listeCommande;
  741.        
  742.         // $this->datongueurCompte'] = $longueurCompte;
  743.         $this->data['id'] = $id;
  744.         $this->data['locale'] = $locale;
  745.         $this->data['objetCaisse'] = $objetCaisse;
  746.         $this->data['listeCategorie'] = $listeCategorie;
  747.         $this->data['listeProduit'] = $listeProduit;
  748.         //$this->data['modules'] = $em->getRepository($this->userBundle . 'Module')->findBy(array('etat'=>1));
  749.         $this->data['isAdmin'] = 1;//$sessionData['isUser'];
  750.         $this->data['actionRepository'] = $actionRepository;
  751.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Caisse/afficherinfosCaisse.html.twig'$this->data$this->response);
  752.     }
  753.     /**
  754.      * Methode s'occupant de la gestion des états du critère
  755.      * Activation, suppression, désactivation de pays.
  756.      *
  757.      * @author armand.tevi@gmail.com
  758.      * @copyright ADMIN 2015
  759.      *
  760.      * @version 1
  761.      *
  762.      * @return Response
  763.      */
  764.     public function activerCaisseProduitAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  765.     CaisseRepository $caisseRepository,ProduitRepository $produitRepository,ProfilRepository $profilRepository,
  766.     AbonneRepository $abonneRepositoryClientRepository $clientRepositoryPrixRigueurRepository $prixRigueurRepository
  767.     ,CaisseProduitRepository $caisseProduitRepository,CaisseClientRepository $caisseClientRepository,CaissePrixRepository $caissePrixRepository) {
  768.         
  769.         
  770.         $em $this->getDoctrine()->getManager();
  771.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  772.         /*
  773.          * Traitement de la requete qui vient de la vue
  774.          * on vérifie si la requete est Ajax et si la methode est post
  775.          */
  776.         $rep =array();
  777.         if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
  778.             
  779.             $allIdProduit $request->get('allIdProduit');
  780.             $allIdCategorie $request->get('allIdCategorie');
  781.             $allIdClient $request->get('allIdClient');
  782.             $allIdPrix $request->get('allIdPrix');
  783.             //var_dump($allIdClient,$allIdPrix);exit;
  784.             $caisseId $request->get('caisseId');
  785.             
  786.             //var_dump($allId);exit;
  787.             /*
  788.              * éclatement de la chaine d'ids séparé par des | en tableau
  789.              * afin de parcourir le tabelau et faire le changement d'etat par compte
  790.              */
  791.             $tabIdsProduit explode('|'$allIdProduit);
  792.             $tabIdsCategorie explode('|'$allIdCategorie);
  793.             $tabIdsClient explode('|'$allIdClient);
  794.             $tabIdsPrix explode('|'$allIdPrix);
  795.             /*
  796.              * variable boolean initialisé a false .elle va être modifier à true si tout se passe bien
  797.              */
  798.             $oneOk false;
  799.             $etat 1;
  800.             /*
  801.              * Boucle de changement d'état à tout les comptes choisis
  802.              */
  803.             //var_dump($request->get('abonneId'));exit;
  804.             //mise a jour des categories
  805.             // foreach ($tabIdsCategorie as $idC) {
  806.                 /*
  807.                  * Recuperation du Ville dont l'id est l'id courant de la boucle
  808.                  */
  809.               /*  $uneCategorie= $em->getRepository($this->stockBundle . 'CategorieProduit')->find((int) $idC);
  810.                 if ($uneCategorie != null) {
  811.                     $uneCategorieAbonne= $em->getRepository($this->stockBundle . 'CategorieAbonne')->findOneBy(['abonne'=>$this->getAbonne($em, $request->get('abonneId')), 'categorie'=>$uneCategorie]);
  812.                    if($uneCategorieAbonne == null){
  813.                         $categorieAbonne = new CategorieAbonne();
  814.                         $categorieAbonne->setCategorie($uneCategorie);
  815.                         $categorieAbonne->setAbonne($this->getAbonne($em, $request->get('abonneId'))) ;
  816.                         $em->persist($categorieAbonne);
  817.                    } */
  818.                     
  819.                     /*
  820.                      * Mise à jour des informations dans la base de donnée
  821.                      */  
  822.                // }
  823.             //}
  824.             $objetCaisse $caisseRepository->find((int) $caisseId);
  825.             //mise  a jour des produits
  826.             foreach ($tabIdsProduit as $idS) {
  827.                 /*
  828.                  * Recuperation du Ville dont l'id est l'id courant de la boucle
  829.                  */
  830.                 $unProduit $produitRepository->find((int) $idS);
  831.                 if ($unProduit != null) {
  832.                     $unCaisseProduit$caisseProduitRepository->findOneBy(['caisse'=>$objetCaisse'produit'=>$unProduit]);
  833.                     if($unCaisseProduit == null){
  834.                         $unCaisseProduit = new CaisseProduit();
  835.                     }
  836.                         $unCaisseProduit->setAbonne($this->getAbonne($em$sessionData['abonneId'],$abonneRepository));
  837.                         $unCaisseProduit->setCaisse($objetCaisse);
  838.                         $unCaisseProduit->setProduit($unProduit) ;
  839.                         $em->persist($unCaisseProduit);
  840.                    
  841.                     /*
  842.                      * Mise à jour des informations dans la base de donnée
  843.                      */  
  844.                 }
  845.             }
  846.             //mise  a jour des produits
  847.             foreach ($tabIdsClient as $idS) {
  848.                 /*
  849.                  * Recuperation du Ville dont l'id est l'id courant de la boucle
  850.                  */
  851.                 $unClient $clientRepository->find((int) $idS);
  852.                 if ($unClient != null) {
  853.                     $unCaisseClient$caisseClientRepository->findOneBy(['caisse'=>$objetCaisse'client'=>$unClient]);
  854.                     if($unCaisseClient == null){
  855.                         $unCaisseClient = new CaisseClient();
  856.                     }        
  857.                         $unCaisseClient->setCaisse($objetCaisse);
  858.                         $unCaisseClient->setClient($unClient) ;
  859.                         $unCaisseClient->setAbonne($this->getAbonne($em$sessionData['abonneId'],$abonneRepository));
  860.                         $em->persist($unCaisseClient);
  861.                     /*
  862.                      * Mise à jour des informations dans la base de donnée
  863.                      */  
  864.                 }
  865.             }
  866.             //mise  a jour des produits
  867.             foreach ($tabIdsPrix as $idS) {
  868.                 /*
  869.                  * Recuperation du Ville dont l'id est l'id courant de la boucle
  870.                  */
  871.                 $unPrix $prixRigueurRepository->find((int) $idS);
  872.                 if ($unPrix != null) {
  873.                     $unCaissePrix$caissePrixRepository->findOneBy(['caisse'=>$objetCaisse'prixrigueur'=>$unPrix]);
  874.                     if($unCaissePrix == null){
  875.                         $unCaissePrix = new CaissePrix();
  876.                     }        
  877.                         $unCaissePrix->setCaisse($objetCaisse);
  878.                         $unCaissePrix->setPrixrigueur($unPrix) ;
  879.                         $unCaissePrix->setAbonne($this->getAbonne($em$sessionData['abonneId'],$abonneRepository));
  880.                         $em->persist($unCaissePrix);
  881.                     /*
  882.                      * Mise à jour des informations dans la base de donnée
  883.                      */  
  884.                 }
  885.             }
  886.             $em->flush();
  887.                     $oneOk true;
  888.             if ($oneOk) {
  889.               //  $this->flashMessage->add('ville.gerer.success', $this->translator->trans("site.ajouter.succes"));
  890.                 $rep['msg'] = '';
  891.                 $rep['etat'] = true;
  892.             }
  893.             return new Response(json_encode($rep));
  894.         }
  895.         return new Response(json_encode($rep));
  896.     }
  897. }