<?php
namespace App\Controller\stock;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Contracts\Translation\TranslatorInterface;
use Symfony\Component\HttpFoundation\Response;
use App\Types\user;
use App\Entity\stock\Caisse;
use App\Entity\stock\Prestataire;
use App\Entity\stock\CaisseProduit;
use App\Entity\user\Module;
use App\Form\stock\CaisseType;
use App\Types\user\TypeEtat;
use App\Entity\stock\CaissePrix;
use App\Entity\stock\CaisseClient;
use App\Services\user\LoginManager;
use Symfony\Component\HttpFoundation\Request;
use App\ControllerModel\user\paramUtilTrait;
use App\Repository\user\ConnexionRepository;
use App\Repository\user\AbonneRepository;
use App\Repository\user\ActionRepository;
use App\Services\param\ParametreManager;
use App\Repository\param\ParamRepository;
use App\Repository\user\ModuleRepository;
use App\Repository\user\ControleurRepository;
use App\Repository\user\ProfilRepository;
use App\Repository\user\UtilisateurRepository;
use App\Repository\cms\TemplateRepository;
use App\Repository\prod\GroupementRepository;
use App\Repository\stock\BrouillardCaisseRepository;
use App\Repository\stock\CaisseProduitRepository;
use App\Repository\stock\CaisseClientRepository;
use App\Repository\stock\CaissePrixRepository;
use App\Repository\stock\CategorieProduitRepository;
use App\Repository\stock\PrixRigueurRepository;
use App\Repository\client\ClientRepository;
use App\Entity\user\Controleur;
use App\Repository\stock\CaisseRepository;
use App\Repository\stock\VilleRepository;
use App\Repository\stock\ProduitRepository;
use App\Repository\stock\PrestataireRepository;
use App\Repository\stock\TypeOperationRepository;
use App\Repository\stock\PrixRigeurRepository;
use App\Repository\stock\PaysRepository;
use App\Repository\stock\SchemaRepository;
/**
* Controlleur qui permet de gérer les operations sur les rubriques.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*/
class CaisseController extends AbstractController {
use paramUtilTrait;
/**
* Déclaration de l'entity manager.
*
* @var
*/
protected $em;
/**
* @var string
* Le comtroleur
*/
public function __construct(TranslatorInterface $translator) {
// parent::__construct();
$this->response = new Response();
$this->response->headers->addCacheControlDirective('no-cache', true);
$this->response->headers->addCacheControlDirective('max-age', TypeEtat::INACTIF);
$this->response->headers->addCacheControlDirective('must-revalidate', true);
$this->response->headers->addCacheControlDirective('no-store', true);
$this->moduleTitre = Module::MOD_GEST_CAIS;
$this->moduleDesc = Module::MOD_GEST_CAIS_DESC;
$this->logMessage = " [ CaisseController ] ";
$this->description = "Controlleur qui gère les caisses";
$this->translator = $translator;
}
/**
* Methode s'occupant de l'ajout du caisse.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne ajouterCaisse.html.twig
*/
public function ajouterCaisseAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
AbonneRepository $abonneRepository, CaisseRepository $caisseRepository) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Ajouter une caisse ";
$locale ='fr';
$valRetour = $this->gestionDroitUtil($request, $nomAction, $descAction,$this->moduleTitre,$this->moduleDesc, $loginManager,$paramRepositor,$connexionRepository, $actionRepository, $moduleRepository, $controleurRepository, $profilRepository );
if($valRetour==1){
return $this->redirect($this->generateUrl('app_logout'));
}elseif($valRetour==2){
return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
}
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
$em = $this->getDoctrine()->getManager();
$unCaisse = new Caisse();
$form = $this->createForm(CaisseType::class, $unCaisse, ['abonne'=>$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository)]);
//$em = $this->getDoctrine()->getManager();
/*
* Declaration des principales methodes Symfony2 pour traiter les informations
*/
$this->request = $request;
$this->session = $this->get('session');
$this->flashMessage = $this->get('session')->getFlashBag();
//Recuperation de la liste des Caisses que Symfony 2 accepte
$tableauCaisseSymfony = array();
/*
* Donnée à afficher sur le twig
*
*/
if ($this->request->isMethod('POST')) {
$form->handleRequest($this->request);
/*
* Vérifier si les élément du formulaire sont valides
*
*/
//var_dump($form);exit;
if ($form->isSubmitted() ) {
/*
* On cherche si une Caisse existe deja avec le mm nom et a un code
*/
$em->getConnection()->beginTransaction();
try {
$criteria = array('nomCaisse' => $unCaisse->getNomCaisse());
$ancienCaisse = $caisseRepository->findOneBy($criteria);
//$criteriaCode = array('codeCaisse' => $unCaisse->getCodeCaisse());
$ancienCaisseCode = $caisseRepository->findOneBy($criteria);
if ($ancienCaisseCode != null) {
/*
* Un Caisse existe mais est supprimé, on le reactive alors
*/
if ($ancienCaisseCode->getEtatCaisse() == TypeEtat::SUPPRIME) {
$unCaisse->setEtatCaisse(TypeEtat::ACTIF);
$unCaisse->setNomCaisse($form->getData()->getNomCaisse());
$em->persist($unCaisse);
$em->flush();
$this->get('session')->getFlashBag()->add('caisse.ajout.success', 'Ajout effectue avec succès');
return $this->redirect($this->generateUrl('admin_caisses'));
} else {
$this->get('session')->getFlashBag()->add('caisse.ajout.already.exist', 'Le code Caisse ' . $ancienCaisseCode->getCodeCaisse() . ' existe déjà');
}
} else {
/*
* Vérification du libellé du critère
*/
if ($ancienCaisse != null) {
/*
* Un Caisse existe mais est supprimé, on le reactive alors
*/
$this->get('session')->getFlashBag()->add('caisse.ajout.already.exist', 'Le Caisse ' . $ancienCaisse->getNomCaisse() . ' existe déjà');
} else {
// $unCaisse->setDateModification(new \DateTime());
$unCaisse->setDatePublication(new \DateTime());
$unCaisse->setEtatCaisse(1);
$unCaisse->setAbonne($this->getAbonne($em, $sessionData['abonneId'],$abonneRepository)) ;
$em->persist($unCaisse);
$em->flush();
$this->flashMessage->add('caisse.ajout.success', $this->translator->trans("site.ajouter.succes"));
$em->getConnection()->commit();
return $this->redirect($this->generateUrl('admin_caisses'));
}
}
} catch (\Exception $e) {
$em->getConnection()->rollBack();
throw $e;
}
} else {
$this->flashMessage->add('caisse.ajout.error', $this->translator->trans("site.formulaire.invalide"));
}
}
$this->data['formuView'] = $form->createView();
$this->data['Caisse'] = $unCaisse;
$this->data['locale'] = $locale;
$this->data['actionRepository'] = $actionRepository;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Caisse/ajouterCaisse.html.twig', $this->data, $this->response);
}
/**
* Methode s'occupant de la modification du caisse.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne modifierCaisse.html.twig
*/
public function modifierCaisseAction(Request $request, $id,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
AbonneRepository $abonneRepository, CaisseRepository $caisseRepository) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Modifier une caisse ";
$locale ='fr';
$valRetour = $this->gestionDroitUtil($request, $nomAction, $descAction,$this->moduleTitre,$this->moduleDesc, $loginManager,$paramRepositor,$connexionRepository, $actionRepository, $moduleRepository, $controleurRepository, $profilRepository );
if($valRetour==1){
return $this->redirect($this->generateUrl('app_logout'));
}elseif($valRetour==2){
return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
}
$em = $this->getDoctrine()->getManager();
$this->flashMessage = $this->get('session')->getFlashBag();
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
/*
* On vérifie si l'utilisateur est connecté
*/
/*
* Création du formulaire par rapport a l'entité Caisse
*/
$unCaisse = $caisseRepository->find($id);
//$ancienCaisseAModif = $unCaisse->getNomCaisse();
$form = $this->createForm(CaisseType::class, $unCaisse, ['abonne'=>$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository)]);
// Vérification de véracité des informations envoyées
//var_dump($unCaisse,$id);exit;
if ($unCaisse == null) {
return $this->redirect($this->generateUrl('admin_caisses'));
}
// Vérifier si la méthode d'envoie
if ($request->isMethod('POST')) {
$form->handleRequest($request);
/*
* Vérifier si les éléments du formulaire sont valides et que le formulaire a ete soumis
*/
if ($form->isSubmitted()) {
$em->getConnection()->beginTransaction();
try {
/*
* On cherche si une Caisse existe deja avec le même nom
*/
$criteria = array('nomCaisse' => $unCaisse->getNomCaisse());
$ancienCaisse = $caisseRepository->findOneBy($criteria);
/*
* On cherche si une Caisse existe deja avec le même code
*/
//$unCaisse->setIdAuteur(1);
// $criteriaCode = array('codeCaisse' => $unCaisse->getCodeCaisse());
$ancienCaisseCode = $caisseRepository->findBy($criteria);
if (count($ancienCaisseCode) > 1) {
$this->flashMessage->add('caisse.modifier.already.exist', 'Le code Caisse ' . $ancienCaisseCode[0]->getCodeCaisse() . ' existe déjà');
} else {
if ($ancienCaisse != null) {
/*
* Traitement du cas d'un Caisse qui existe mais est
* supprimé, on le reactive alors pour eviter
* les doublons dans la base de données
*/
if ($ancienCaisse->getEtatCaisse() == TypeEtat::SUPPRIME) {
/*
* Activation du critère supprimé
*/
$ancienCaisse->getEtatCaisse(TypeEtat::ACTIF);
} else {
/*
* Persistence de l'objet
*/
$em->persist($unCaisse);
}
} else {
$em->persist($unCaisse);
}
/*
* Mise a jour des informations dans la base de donnée
*/
$em->flush();
$this->flashMessage->add('caisse.modifier.success', $this->translator->trans("site.ajouter.succes"));
$em->getConnection()->commit();
return $this->redirect($this->generateUrl('admin_caisses'));
}
} catch (\Exception $e) {
$em->getConnection()->rollBack();
throw $e;
}
} else {
$this->flashMessage->add('caisse.ajout.error', $this->translator->trans("site.formulaire.invalide"));
}
}
/*
* Preparation des informations à traiter sur les twig
*/
$this->data['formuView'] = $form->createView();
$this->data['Caisse'] = $unCaisse;
$this->data['locale'] = $locale;
$this->data['id'] = $id;
$this->data['actionRepository'] = $actionRepository;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Caisse/modifierCaisse.html.twig', $this->data, $this->response);
}
/**
* Methode s'occupant de lister les Caisses.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne listeCaisse.html.twig
*/
public function listerCaisseAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
AbonneRepository $abonneRepository, CaisseRepository $caisseRepository) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Voir la liste des caisses ";
$locale ='fr';
$valRetour = $this->gestionDroitUtil($request, $nomAction, $descAction,$this->moduleTitre,$this->moduleDesc, $loginManager,$paramRepositor,$connexionRepository, $actionRepository, $moduleRepository, $controleurRepository, $profilRepository );
if($valRetour==1){
return $this->redirect($this->generateUrl('app_logout'));
}elseif($valRetour==2){
return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
}
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
try {
/*
* Récupération des la liste des critères
*/
$em = $this->getDoctrine()->getManager();
$listeCaisse = $caisseRepository->getAllCaisseAbonne($sessionData['abonneId']);
} catch (\Exception $e) {
var_dump($e->getMessage());
exit;
}
/*
* Préparation des informations que nous allons traiter sur le twig
*/
$this->data['listeCaisse'] = $listeCaisse;
$this->data['locale'] = $locale;
$this->data['actionRepository'] = $actionRepository;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Caisse/listeCaisse.html.twig', $this->data, $this->response);
}
/**
* Methode s'occupant de la gestion des états du critère
* Activation, suppression, désactivation de pays.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return Response
*/
public function changerEtatCaisseAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
AbonneRepository $abonneRepository) {
$rep = array('etat' => FALSE, 'msg' => 'Erreur survenue lors du traitement', 'logout' => FALSE);
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Changer l'etat de la ligne des caisses";
/*
* Préparation du message de log
*/
$this->logMessage .= ' [ ' . $nomAction . ' ] ';
/*
* Service de gestion des droits
*/
/*
* Informations de session
*/
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
/*
* Locale en cours
*/
$locale = $loginManager->getLocale();
$this->data['locale'] = $locale;
/*
* On vérifie si l'utilisateur est connecté
*/
$status = $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository, $actionRepository);
if ($status['isConnecte']) {
/*
* Au cas ou l'utilisateur est connecté on vérifie s'il nest pas innactif. S'il est innactif
* on garde en mémoire flash la route actuelle pour effectuer une redirection lors de la prochaine connexion
*/
if ($status['isInnactif']) {
$rep['msg'] = "Vous avez accusé un long moment d'inactivité. Veuillez-vous connecter de nouveau";
$loginManager->logout(LoginManager::SESSION_DATA_NAME);
return new Response(json_encode($rep));
}
/*
* Seuls les utilisateurs admins ont le droit d'acceder à cette action
*/
if (!$status['isUser']) {
return new Response(json_encode($rep));
}
} else {
$rep['msg'] = "Vous êtes déconnecté. Veuillez-vous connecter de nouveau";
return new Response(json_encode($rep));
}
/*
* Gestion des droits
*/
if (!$loginManager->getOrSetActions(Module::MOD_GEST_CAIS, Module::MOD_GEST_CAIS_DESC, $this->getNomClassRun(__CLASS__), $this->description, $nomAction, $descAction, $sessionData['idProfil'], $moduleRepository, $controleurRepository, $actionRepository, $profilRepository)) {
$this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
$rep['msg'] = "Vous n'avez pas le droit de déconnecter un utilisateur";
return new Response(json_encode($rep));
}
/*
* Traitement de la requete qui vient de la vue
* on vérifie si la requete est Ajax et si la methode est post
*/
if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
/*
* on recupere l'état actuel qu'on veut donner au(x) Caisse(s)
* cette variable est envoyée depuis la vue a travers la requete post ajax
*/
$tempEtat = (int) $request->get('etat');
/*
* on recupere les ids des Caisses qui ont été choisis sur la vue pour subir une modification d'états
* cette variable est envoyé depuis la vue a travers la requete post ajax
*/
$tempIds = $request->get('sId');
/*
* verification si l'etat envoyé est un état INACTIF , ACTIF ou SUPPRIME
* déclaration d'une variable pour prendre l'état comme constante de classe TypeEtat
*/
$etat = App\Types\TypeEtat::INACTIF;
if ($tempEtat == TypeEtat::INACTIF) {
$etat = App\Types\TypeEtat::INACTIF;
} elseif ($tempEtat == TypeEtat::ACTIF) {
$etat = App\Types\TypeEtat::ACTIF;
} elseif ($tempEtat == TypeEtat::SUPPRIME) {
$etat = App\Types\TypeEtat::SUPPRIME;
} else {
return new Response(json_encode($rep));
}
/*
* éclatement de la chaine d'ids séparé par des | en tableau
* afin de parcourir le tabelau et faire le changement d'etat par compte
*/
$tabIds = explode('|', $tempIds);
/*
* variable boolean initialisé a false .elle va être modifier à true si tout se passe bien
*/
$oneOk = false;
/*
* Boucle de changement d'état à tout les comptes choisis
*/
$em->getConnection()->beginTransaction();
try {
foreach ($tabIds as $idS) {
/*
* Recuperation du Caisse dont l'id est l'id courant de la boucle
*/
$unCaisse = $caisseRepository->find((int) $idS);
if ($unCaisse != null) {
$unCaisse->setEtatCaisse($etat);
/*
* Mise à jour des informations dans la base de donnée
*/
$em->flush();
$oneOk = true;
}
}
if ($oneOk) {
$this->flashMessage->add('caisse.gerer.success', $this->translator->trans("site.ajouter.succes"));
$rep['msg'] = '';
$rep['etat'] = true;
}
$em->getConnection()->commit();
} catch (Exception $exc) {
echo $exc->getTraceAsString();
}
return new Response(json_encode($exc));
}
return new Response(json_encode($rep));
}
/**
* Methode s'occupant de l'ajout du produit.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
* @return twig d'ajout d'un abonne ajouterproduit.html.twig
*/
public function ajouterDepenseCaisseAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
AbonneRepository $abonneRepository,UtilisateurRepository $utilisateurRepository, TypeOperationRepository $typeOperationRepository, ProduitRepository $produitRepository,
VilleRepository $villeRepository,PrestataireRepository $prestataireRepository, PaysRepository $paysRepository, CaisseRepository $caisseRepository,SchemaRepository $schemaRepository) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Ajouter les dépenses liées à une caisse";
/*
* Préparation du message de log
*/
$this->logMessage .= ' [ ' . $nomAction . ' ] ';
/*
* Service de gestion des droits
*/
/*
* Informations de session
*/
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
/*
* Locale en cours
*/
$locale = $loginManager->getLocale();
$this->data['locale'] = $locale;
/*
* On vérifie si l'utilisateur est connecté
*/
$status = $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository, $actionRepository);
if ($status['isConnecte']) {
/*
* Au cas ou l'utilisateur est connecté on vérifie s'il nest pas innactif. S'il est innactif
* on garde en mémoire flash la route actuelle pour effectuer une redirection lors de la prochaine connexion
*/
if ($status['isInnactif']) {
$routeName = $request->get('_route');
$routeParams = $request->get('_route_params');
$this->get('session')->getFlashBag()->add('restoreUrl', $this->generateUrl($routeName, $routeParams));
$this->get('session')->getFlashBag()->add('ina', $this->translator->trans("site.long.periode"));
return $this->redirect($this->generateUrl('app_logout'));
}
/*
* Seuls les utilisateurs admins ont le droit d'acceder à cette action
*/
if (!$status['isUser']) {
return $this->redirect($this->generateUrl('app_logout'));
}
} else {
return $this->redirect($this->generateUrl('app_logout'));
}
/*
* Gestion des droits
*/
if (!$loginManager->getOrSetActions(Module::MOD_GEST_PROD, Module::MOD_GEST_PROD_DESC, $this->getNomClassRun(__CLASS__), $this->description, $nomAction, $descAction, $sessionData['idProfil'], $moduleRepository, $controleurRepository, $actionRepository, $profilRepository)) {
$this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
$this->get('session')->getFlashBag()->add('access', "Vous n'avez pas le droit d'accéder à cette page");
return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
}
try {
} catch (\Exception $e) {
var_dump($e->getMessage());
exit;
}
$em = $this->getDoctrine()->getManager();
$typeOperation = $typeOperationRepository->getListeTypeOperationSimple();
$listeUtilisateur = $utilisateurRepository->findAll();
$listeVille = $villeRepository->findAll();
$listeProduit = $produitRepository->findAll();
$listePrestataire = $prestataireRepository->findAll();
$listePays = $paysRepository->findAll();
$objetUtilisateur = $utilisateurRepository->find($sessionData['id']);
$idVille = 0;//$objetUtilisateur->getVille()->getId();
$compte = 0;//$objetUtilisateur->getVille()->getCaisses()[0]->getPlancomptable()->getCompte();
/*
* Préparation des informations que nous allons traiter sur le twig
*/
if ($request->isMethod('POST')) {
$numeroPiece = $request->get('numero_piece');
$libelleOperation = $request->get('libelle_operation');
$compte = $request->get('compte');
$libelle = $request->get('libelle');
$montant = $request->get('montant');
$valanalytique = $request->get('val-analytique');
//$operation = $request->get('operation');
$date = $request->get('date');
$utilisateur = $request->get('utilisateur');
$prestataire = $request->get('prestataire');
//nombre total de ligne opération ajoutée
$nbreLigne = count($compte);
for($i = 0; $i < $nbreLigne; $i++)
{
$montantEsp = $montant[$i];
$idAbonne = $request->get('idabonne');
$idTypeOp = $compte[$i];
$montantEsp = preg_replace('/\D/', '', $montantEsp);
$operationManager = $this->get('operation_manager');
//recuperation de l'identifiant du produit
$tabCompteId = $operationManager->getCompteVille($em,$idVille, $villeRepository, $caisseRepository);
$tabLibelle = $operationManager->getTabLibelle($em,$idTypeOp, $compte,$libelleOperation, $libelle[$i], $typeOperationRepository, $schemaRepository);
$idProduit = null;
$tabCompteMontant = $operationManager->getRecuperationCompte($em,$idTypeOp,$montantEsp,$typeOperationRepository);
$compteAuxi = $tabCompteId['compte'];
$d = new \DateTime();
$dateChoisie = $d->format('Y/m/d');
$objetPrestataire = $prestataireRepository->findOneBy(array("nomPrestataire"=>$prestataire[$i]));
if(count($objetPrestataire) == 0){
$objetPrestataire = new Prestataire();
$objetPrestataire->setNomPrestataire($prestataire[$i]);
$em->persist($objetPrestataire);
$em->flush();
}
$idPrest = $objetPrestataire->getId();
$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);
//Page de liste pour voir les opérations
}
return $this->redirect($this->generateUrl('admin_exporter_brouillard',array('post'=>1)));
}
//$this->data['listeProduit'] = $listeProduit;
$this->data['compte'] = $compte;
$this->data['locale'] = $locale;
// $this->data['codecommande'] = $codecommande;
$this->data['listeVille'] = $listeVille;
$this->data['listeProduit'] = $listeProduit;
$this->data['listePrestataire'] = $listePrestataire;
$this->data['listePays'] = $listePays;
$this->data['listeUtilisateur'] = $listeUtilisateur;
$this->data['typeOperation'] = $typeOperation;
// $this->data['type'] = $type;
$this->data['actionRepository'] = $actionRepository;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Operation/ajouterDepenseCaisse.html.twig', $this->data, $this->response);
}
/**
* Methode pour traiter le libelle du Caisse envoye il permet de remplace les espaces par "_".
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return entier
*/
public function remplacerEspece($donnee) {
$donneNouvelle = str_replace(' ', '_', $donnee);
return $donneNouvelle;
}
/*
* Afficher les informations d'un abonné
*
* @param type $idProfil
* @param type $idAbonne
* @return type
*/
public function infosCaisseAction(Request $request, $id,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
AbonneRepository $abonneRepository ,CaisseRepository $caisseRepository
,CategorieProduitRepository $categorieProduitRepository,ProduitRepository $produitRepository,PrixRigueurRepository $prixRigueurRepository, ClientRepository $clientRepository) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Affichage des informations d'une caisse ";
$locale ='fr';
$valRetour = $this->gestionDroitUtil($request, $nomAction, $descAction,$this->moduleTitre,$this->moduleDesc, $loginManager,$paramRepositor,$connexionRepository, $actionRepository, $moduleRepository, $controleurRepository, $profilRepository );
if($valRetour==1){
return $this->redirect($this->generateUrl('app_logout'));
}elseif($valRetour==2){
return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
}
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
$em = $this->getDoctrine()->getManager();
/*
* On recupère l'abonne
*/
$objetCaisse = $caisseRepository->find($id);
//$listeCommande = $em->getRepository($this->stockBundle . 'Commande')->getClientCommande($idAbonne);
if ($objetCaisse == NULL) {
return $this->redirect($this->generateUrl('app_admin_abonnes'));
}
$listeProduit = array();
/*
* Le mot de passe ne doit pas être vide
*/
$listeCategorie = $categorieProduitRepository->getAllCategorieProduit($sessionData['abonneId']);
foreach($listeCategorie as $uneCategorie){
$listeProduit[$uneCategorie->getId()] = $produitRepository->getAllProduitCategorieAjax($uneCategorie->getId(),$sessionData['abonneId']);
}
$categorieActive = $categorieProduitRepository->getAllCategorieIdActive($sessionData['abonneId']);
$produitActive = $produitRepository->getAllProduitCaisseIdActive($sessionData['abonneId'],$objetCaisse->getId());
$listePrixRigueur = $prixRigueurRepository->getAllVarietePrixRigueur(0, 0,$sessionData['abonneId']);
$queryResult = $clientRepository->getAllClient(0, 0, 0, 0, 0, 0, 100000, 10000,0,5,0,0,$sessionData['abonneId']);
$clientActive = $clientRepository->getAllClientCaisseIdActive($sessionData['abonneId'],$objetCaisse->getId());
$prixActive = $prixRigueurRepository->getAllPrixCaisseIdActive($sessionData['abonneId'],$objetCaisse->getId());
$this->data['listePrixRigueur'] = $listePrixRigueur;
$this->data['listeClient'] = $queryResult['data'];
$this->data['categorieActive'] = $categorieActive;
$this->data['produitActive'] = $produitActive;
$this->data['prixActive'] = $prixActive;
$this->data['clientActive'] = $clientActive;
// $this->data['listeCommande'] = $listeCommande;
// $this->datongueurCompte'] = $longueurCompte;
$this->data['id'] = $id;
$this->data['locale'] = $locale;
$this->data['objetCaisse'] = $objetCaisse;
$this->data['listeCategorie'] = $listeCategorie;
$this->data['listeProduit'] = $listeProduit;
//$this->data['modules'] = $em->getRepository($this->userBundle . 'Module')->findBy(array('etat'=>1));
$this->data['isAdmin'] = 1;//$sessionData['isUser'];
$this->data['actionRepository'] = $actionRepository;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Caisse/afficherinfosCaisse.html.twig', $this->data, $this->response);
}
/**
* Methode s'occupant de la gestion des états du critère
* Activation, suppression, désactivation de pays.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return Response
*/
public function activerCaisseProduitAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
CaisseRepository $caisseRepository,ProduitRepository $produitRepository,ProfilRepository $profilRepository,
AbonneRepository $abonneRepository, ClientRepository $clientRepository, PrixRigueurRepository $prixRigueurRepository
,CaisseProduitRepository $caisseProduitRepository,CaisseClientRepository $caisseClientRepository,CaissePrixRepository $caissePrixRepository) {
$em = $this->getDoctrine()->getManager();
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
/*
* Traitement de la requete qui vient de la vue
* on vérifie si la requete est Ajax et si la methode est post
*/
$rep =array();
if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
$allIdProduit = $request->get('allIdProduit');
$allIdCategorie = $request->get('allIdCategorie');
$allIdClient = $request->get('allIdClient');
$allIdPrix = $request->get('allIdPrix');
//var_dump($allIdClient,$allIdPrix);exit;
$caisseId = $request->get('caisseId');
//var_dump($allId);exit;
/*
* éclatement de la chaine d'ids séparé par des | en tableau
* afin de parcourir le tabelau et faire le changement d'etat par compte
*/
$tabIdsProduit = explode('|', $allIdProduit);
$tabIdsCategorie = explode('|', $allIdCategorie);
$tabIdsClient = explode('|', $allIdClient);
$tabIdsPrix = explode('|', $allIdPrix);
/*
* variable boolean initialisé a false .elle va être modifier à true si tout se passe bien
*/
$oneOk = false;
$etat = 1;
/*
* Boucle de changement d'état à tout les comptes choisis
*/
//var_dump($request->get('abonneId'));exit;
//mise a jour des categories
// foreach ($tabIdsCategorie as $idC) {
/*
* Recuperation du Ville dont l'id est l'id courant de la boucle
*/
/* $uneCategorie= $em->getRepository($this->stockBundle . 'CategorieProduit')->find((int) $idC);
if ($uneCategorie != null) {
$uneCategorieAbonne= $em->getRepository($this->stockBundle . 'CategorieAbonne')->findOneBy(['abonne'=>$this->getAbonne($em, $request->get('abonneId')), 'categorie'=>$uneCategorie]);
if($uneCategorieAbonne == null){
$categorieAbonne = new CategorieAbonne();
$categorieAbonne->setCategorie($uneCategorie);
$categorieAbonne->setAbonne($this->getAbonne($em, $request->get('abonneId'))) ;
$em->persist($categorieAbonne);
} */
/*
* Mise à jour des informations dans la base de donnée
*/
// }
//}
$objetCaisse = $caisseRepository->find((int) $caisseId);
//mise a jour des produits
foreach ($tabIdsProduit as $idS) {
/*
* Recuperation du Ville dont l'id est l'id courant de la boucle
*/
$unProduit = $produitRepository->find((int) $idS);
if ($unProduit != null) {
$unCaisseProduit= $caisseProduitRepository->findOneBy(['caisse'=>$objetCaisse, 'produit'=>$unProduit]);
if($unCaisseProduit == null){
$unCaisseProduit = new CaisseProduit();
}
$unCaisseProduit->setAbonne($this->getAbonne($em, $sessionData['abonneId'],$abonneRepository));
$unCaisseProduit->setCaisse($objetCaisse);
$unCaisseProduit->setProduit($unProduit) ;
$em->persist($unCaisseProduit);
/*
* Mise à jour des informations dans la base de donnée
*/
}
}
//mise a jour des produits
foreach ($tabIdsClient as $idS) {
/*
* Recuperation du Ville dont l'id est l'id courant de la boucle
*/
$unClient = $clientRepository->find((int) $idS);
if ($unClient != null) {
$unCaisseClient= $caisseClientRepository->findOneBy(['caisse'=>$objetCaisse, 'client'=>$unClient]);
if($unCaisseClient == null){
$unCaisseClient = new CaisseClient();
}
$unCaisseClient->setCaisse($objetCaisse);
$unCaisseClient->setClient($unClient) ;
$unCaisseClient->setAbonne($this->getAbonne($em, $sessionData['abonneId'],$abonneRepository));
$em->persist($unCaisseClient);
/*
* Mise à jour des informations dans la base de donnée
*/
}
}
//mise a jour des produits
foreach ($tabIdsPrix as $idS) {
/*
* Recuperation du Ville dont l'id est l'id courant de la boucle
*/
$unPrix = $prixRigueurRepository->find((int) $idS);
if ($unPrix != null) {
$unCaissePrix= $caissePrixRepository->findOneBy(['caisse'=>$objetCaisse, 'prixrigueur'=>$unPrix]);
if($unCaissePrix == null){
$unCaissePrix = new CaissePrix();
}
$unCaissePrix->setCaisse($objetCaisse);
$unCaissePrix->setPrixrigueur($unPrix) ;
$unCaissePrix->setAbonne($this->getAbonne($em, $sessionData['abonneId'],$abonneRepository));
$em->persist($unCaissePrix);
/*
* Mise à jour des informations dans la base de donnée
*/
}
}
$em->flush();
$oneOk = true;
if ($oneOk) {
// $this->flashMessage->add('ville.gerer.success', $this->translator->trans("site.ajouter.succes"));
$rep['msg'] = '';
$rep['etat'] = true;
}
return new Response(json_encode($rep));
}
return new Response(json_encode($rep));
}
}