<?php
namespace App\Controller\stock;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Contracts\Translation\TranslatorInterface;
use Symfony\Component\HttpFoundation\Response;
use App\Entity\user\Module;
use App\Entity\user\Utilisateur;
use App\Form\stock\CommandeTmpType;
use App\Form\stock\LigneCommandeTmpType;
use App\Entity\stock\CommandeTmp;
use App\Entity\stock\Commande;
use App\Entity\stock\Produit;
use App\Entity\stock\InfoLivrer;
use App\Entity\stock\ChauffeurLivraison;
use App\Entity\stock\Facture;
use App\Entity\stock\LigneCommandeTmp;
use App\Entity\stock\LigneCommande;
use App\Entity\stock\PrixRigueur;
use App\Services\user\LoginManager;
use App\Services\stock\OperationManager;
use App\Types\user\TypeEtat;
use Symfony\Component\HttpFoundation\Request;
use App\Types\user\TypeFournisseur;
use Builder\Excel\CommandeExcelBuilder;
use App\Builder\Excel\CommandeByCategorieExcelBuilder;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
use App\ControllerModel\user\paramUtilTrait;
use App\Types\user\TypeProfil;
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\CategorieProduitRepository;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use App\Repository\stock\BrouillardCaisseRepository;
use App\Entity\user\Controleur;
use App\Repository\stock\CaisseRepository;
use App\Repository\stock\VilleRepository;
use App\Repository\stock\ProduitRepository;
use App\Repository\stock\TypeOperationRepository;
use App\Repository\client\ClientRepository;
use App\Repository\stock\TableRepository;
use App\Repository\stock\SurPlusRepository;
use App\Entity\stock\Chauffeur;
use App\Repository\stock\CommandeRepository;
use App\Repository\stock\FournisseurRepository;
use App\Repository\stock\PrixRigeurRepository;
use App\Repository\stock\CommandeTmpRepository;
use App\Repository\stock\LigneCommandeTmpRepository;
use App\Repository\stock\CibleRepository ;
use App\Repository\stock\CaracteristiquePrixRepository;
use App\Entity\stock\TableMange;
use App\Entity\stock\Fournisseur;
use App\Repository\track\LocalisationRepository;
use App\Repository\prod\ProducteurRepository;
use App\Repository\stock\CritereRepository ;
use App\Repository\stock\TypeCritereRepository;
use App\Repository\stock\ChauffeurRepository;
use App\Repository\stock\InfoCritereRepository;
use App\Repository\stock\LivrerRepository;
use App\Repository\stock\InfoLivrerRepository;
use App\Repository\stock\PrixRigueurRepository;
use App\Repository\stock\LigneCommandeRepository;
class CommandeController extends AbstractController {
use paramUtilTrait;
// use \App\Controller\stockModel\stockTrait;
protected $nom = 'CommandeController';
protected $description = 'Controlleur qui gère les commandes';
protected $response;
protected $logMessage = ' [ CommandeController ] ';
public function __construct(TranslatorInterface $translator) {
$this->response = new Response();
$this->response->headers->addCacheControlDirective('no-cache', true);
$this->response->headers->addCacheControlDirective('max-age', 0);
$this->response->headers->addCacheControlDirective('must-revalidate', true);
$this->response->headers->addCacheControlDirective('no-store', true);
$this->moduleTitre = Module::MOD_GEST_COM;
$this->moduleDesc = Module::MOD_GEST_COM_DESC;
$this->logMessage = " [ CommandeController ] ";
$this->description = "Controlleur qui gère les commandes ";
$this->translator = $translator;
}
/**
* Methode s'occupant de l'ajout d'une commande.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne ajouterproduit.html.twig
*/
public function ajouterCommandeAction(Request $request, $typeCom, $ref, $type,LoginManager $loginManager,OperationManager $operationManager, ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,TemplateRepository $templateRepository,
FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Ajouter une commande (Faire une avance à un colleteur) ";
/*
* Informations de session
*/
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
$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'));
}
/*
* Création du formulaire par rapport a l'entité commandetmp
*/
$em = $this->getDoctrine()->getManager();
$user = $utilisateurRepository->find($sessionData['id']);
$uneCommande = new CommandeTmp();
$d = new \DateTime();
$an = $d->format('Y');
$m = $d->format('m');
$j = $d->format('d');
$refCommande = $this->getRefCommande($em, (int) $typeCom, $an, $m, $entite = 'COMMANDE', $taille = 5, $user->getId());
$prod = $sessionData["produit_id"];
$uneCommande->setCodeCommande($refCommande);
$form = $this->createForm(CommandeTmpType::class, $uneCommande);
/*
* 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 Produits que Symfony 2 accepte
//$listeFournisseur = $em->getRepository($this->stockBundle.'Fournisseur')->findBy(array('etatFournisseur'=>1));
/*
* Donnée à afficher sur le twig
*/
//Recuperation des informations concernant le client
$infoClient =array();
$prixEnCours = $prixRigueurRepository->getActifPrixRigueur();
if ($this->request->isMethod('POST')) {
$form->handleRequest($this->request);
$refc = $request->request->get('refclt');
$idFournisseur = $request->request->get('idFournisseur');
$tauxechange = $request->request->get('tauxechange');
// var_dump($infoClient);exit;
/*
* Vérifier si les élément du formulaire sont valides
*/
if ($form->isSubmitted()) {
$em->getConnection()->beginTransaction();
try {
$objetFournisseur = $fournisseurRepository->find($idFournisseur);
($user instanceof App\Entity\user\Utilisateur) ? $uneCommande->setUtilisateur($user) : $user = null;
$dateCommande= $request->get("dateCommande") ;
$dateCommande = new \DateTime(implode("-",array_reverse( explode('-', str_replace("/","-",$dateCommande)) )));
$infoClient = null;
$uneCommande->SetAnnule(FALSE);
$uneCommande->setTypeCommande($typeCom);
$uneCommande->setRefBonCommande($uneCommande->getCodeCommande());
// if ($typeCom == 1) {
//$uneCommande->setTauxEchange($tauxechange);
$uneCommande->setFournisseur($objetFournisseur);
//}
$uneCommande->SetDatePublication($dateCommande);
$uneCommande->setAbonne($this->getAbonne($em,$sessionData['abonneId'], $abonneRepository));
if ($typeCom == 2) {
$uneCommande->setFournisseur(NULL);
}
$em->persist($uneCommande);
$em->flush();
$this->flashMessage->add('commande.ajout.success', 'Commande ajoutée avec succès');
$em->getConnection()->commit();
$em->clear();
} catch (\Exception $e) {
$em->getConnection()->rollBack();
throw $e;
}
$this->data['Produit'] = $uneCommande;
$refCommande = $this->reinitialiserRef($em, (int) $typeCom, $an, $m, $entite = 'COMMANDE', $taille = 5, $user->getId());
return $this->redirect($this->generateUrl('admin_lignecommande_add_form', array('idCommandeTmp' => $uneCommande->getId(), 'type' => $type)));
} else {
$this->flashMessage->add('commande.ajout.error', $this->translator->trans("site.formulaire.invalide"));
return $this->redirect($this->generateUrl('admin_commande_type', array('type' => $type)));
}
}
$listeClient = array();
$objetUtilisateur = $utilisateurRepository->find($sessionData['id']);
$villeId =0;
$typeProd = TypeFournisseur::FOURNISSEUR;;
$listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($villeId,$typeProd,$sessionData['abonneId']);
//$listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($sessionData['id']);
$this->data['listeFournisseur'] = $listeFournisseur;
$this->data['formuView'] = $form->createView();
$this->data['Produit'] = $uneCommande;
$this->data['listeClient'] = $listeClient;
$this->data['prixEnCours'] = $prixEnCours;
$this->data['typecom'] = $typeCom;
$this->data['locale'] = $locale;
$this->data['type'] = $type;
$this->data['actionRepository'] = $actionRepository;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/saisirCommandeTmp.html.twig', $this->data, $this->response);
}
/**
* Methode s'occupant de l'ajout d'une commande.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne ajouterproduit.html.twig
*/
public function listeCommandeAction(Request $request, $type, $etat,$nomcol,$datefin,$datedeb,$ville,$util,$silivre,$numcom,$prod,$action,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,
FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository
) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Liste des commandes ";
$locale ='fr';
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
$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'));
}
$afficher = 0;
$statTab = array();
if ($request->getMethod() == 'POST') {
$nomcol = strtolower($request->get('nomcol_'));
$request->attributes->set('nomcol_', $nomcol);
$datefin = strtolower($request->get('datefin_'));
$request->attributes->set('datefin_', $datefin);
$datedeb = strtolower($request->get('datedeb_'));
$request->attributes->set('datedeb_', $datedeb);
$ville = strtolower($request->get('ville_'));
$request->attributes->set('ville_', $ville);
$type = strtolower($request->get('type'));
$request->attributes->set('type', $type);
$prod = strtolower($request->get('prod_'));
$request->attributes->set('prod_', $prod);
$util = strtolower($request->get('util_'));
$request->attributes->set('util_', $util);
$silivre = strtolower($request->get('silivre_'));
$request->attributes->set('silivre_', $silivre);
$numcom = strtolower($request->get('numcom_'));
$request->attributes->set('numcom_', $numcom);
$afficher = 1;
}
$prod = $sessionData["produit_id"];
try {
/*
* Récupération des la liste des critères
*/
$em = $this->getDoctrine()->getManager();
// Recuperaer la liste des collecteurs
/* if(in_array($sessionData['idProfil'],\Types\user\TypeProfil::PROFIL_COMPTABLE)){
$util=$sessionData['id'];
$objetUtilisateur = $utilisateurRepository->find($sessionData['id']);
$listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($objetUtilisateur->getVille()->getId(), $prod);
//$listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($sessionData['id']);
}else{*/
if($type == 3)
$typeProd = 1;
else
$typeProd = 2;
$listeFournisseur = $fournisseurRepository->getAllFournisseur($typeProd ,$sessionData['abonneId']);
//}
$listeVille = $villeRepository->getAllActiveVille($prod);
//Recuperer la liste des villes
$objetAbonne = $this->getAbonne($em,$sessionData['abonneId'], $abonneRepository);
$listeCommande = $commandeRepository->getListeRechercheCommande($nomcol,$datefin,$datedeb,$ville,$util,$silivre,$numcom,$prod,$type,0,20,1,$sessionData['abonneId']);
$listeStat= $commandeRepository->getStatsRechercheCommande($nomcol,$datefin,$datedeb,$ville,$util,$silivre,$numcom,$prod,$type);
$statTab['quantiteTotal'] = $listeStat[0]["quantiteTotal"];
$statTab['quantiteTotalLivre'] = $listeStat[0]["quantiteTotalLivre"];
if($listeStat[0]["quantiteTotalLivre"] != null && $listeStat[0]["quantiteTotal"] != null){
$statTab['pourcentage'] = ($listeStat[0]["quantiteTotalLivre"]/$listeStat[0]["quantiteTotal"])*100;
}
$listeUtilisataire = $utilisateurRepository->getAllUser(TypeProfil::PROFIL_COMPTABLE);
} catch (\Exception $e) {
var_dump($e->getMessage());
exit;
}
/*
* Préparation des informations que nous allons traiter sur le twig
*/
// var_dump($util);exit;
$this->data['datefin_'] = $datefin;
$this->data['datedeb_'] = $datedeb;
$this->data['nomcol_'] = $nomcol;
$this->data['ville_'] = $ville;
$this->data['prod_'] = $prod;
$this->data['util_'] = $util;
$this->data['silivre_'] = $silivre;
$this->data['numcom_'] = $numcom;
$this->data['listeCollecteur'] = $listeFournisseur;
$this->data['listeCommande'] = $listeCommande;
$this->data['listeVille'] = $listeVille;
$this->data['listeUtilisateur'] = $listeUtilisataire;
$this->data['locale'] = $locale;
$this->data['afficher'] = $afficher ;
$this->data['type'] = $type;
$this->data['objetAbonne'] = $objetAbonne;
$this->data['statTab'] = $statTab;
$this->data['actionRepository'] = $actionRepository;
//var_dump($datefin, $datedeb);exit;
if($action == 0){
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/listeCommande.html.twig', $this->data, $this->response);
}else if($action == 1){
$file = new CommandeExcelBuilder();
}else{
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/listeDetailCommande.html.twig', $this->data, $this->response);
}
$file->hydrate($listeCommande);
$response = new BinaryFileResponse($file->build());
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT,'commande.xlsx');
return $response;
//return
}
/**
* Methode s'occupant de l'ajout d'une commande.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne ajouterproduit.html.twig
*/
public function ajouterLigneCommandeAction(Request $request, $idCommandeTmp, $type,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository
) {
/**
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Ajouter une ligne de commande ";
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
$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'));
}
/*
* Création du formulaire par rapport a l'entité commandetmp
*/
$uneLigneCommande = new LigneCommandeTmp();
$form = $this->createForm(LigneCommandeTmpType::class, $uneLigneCommande);
/*
* Declaration des principales methodes Symfony2 pour traiter les informations
*/
$em = $this->getDoctrine()->getManager();
$user = $utilisateurRepository->find($sessionData['id']);
$this->request = $request;
$this->session = $this->get('session');
$this->flashMessage = $this->get('session')->getFlashBag();
$listeProduit= array();
//Recuperation de la liste des Produits que Symfony 2 accepte
$com = $commandeTmpRepository->find($idCommandeTmp);
($com instanceof CommandeTmp) ? $listeCategorie = $categorieProduitRepository->getAllOrOneCategorie() : $listeCategorie = null;
if($com instanceof CommandeTmp) {
if($com->getFournisseur()->getFournisseurproduits() != null){
//var_dump(1);exit;
//$listeProduit = $com->getFournisseur()->getProduits() ;
$i = 0;
foreach ($com->getFournisseur()->getFournisseurproduits() as $unProduitFournisseur) {
$listeProduit[$i] = $produitRepository->find($unProduitFournisseur->getProduit()->getId());
++$i;
}
}else{
$listeProduit = $produitRepository->getAllProduit();
}
}else{
$listeCategorie = null;
}
//Generation du code
$d = new \DateTime();
$an = $d->format('Y');
$m = $d->format('m');
$j = $d->format('d');
$refCommande = $this->getRefCommande($em, (int) $type, $an, $m, $entite = 'COMMANDE', $taille = 5, $user->getId());
//ajouter les données des commandes temporaires encours
// $objetFournisseur = $fournisseurRepository->find($idFournisseur);
$uneCommande = new CommandeTmp();
($user instanceof Utilisateur) ? $uneCommande->setUtilisateur($user) : $user = null;
$infoClient = null;
$uneCommande->SetAnnule(FALSE);
$uneCommande->setTypeCommande($type);
$uneCommande->setRefBonCommande($refCommande);
$uneCommande->setCodeCommande($refCommande);
//$uneCommande->setFournisseur($objetFournisseur);
$uneCommande->setDatePublication(new \Datetime());
$uneCommande->setAbonne($this->getAbonne($em,$sessionData['abonneId'], $abonneRepository));
$em->persist($uneCommande);
$em->flush();
/*
* Donnée à afficher sur le twig
*/
$listePrix = $prixRigueurRepository->findAll();
//var_dump($infoMontantFour);exit;
$villeId =0;
$typeProd = TypeFournisseur::FOURNISSEUR;;
$listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($villeId,$typeProd,$sessionData['abonneId']);
//$typeCom = 1;
//$listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($sessionData['id']);
$this->data['listeFournisseur'] = $listeFournisseur;
$this->data['refCommande'] = $refCommande;
//$this->data['objetCommandeTmp'] = $uneCommande;
//var_dump($listeCategorie);exit;
$this->data['listcateg'] = $listeCategorie;
$this->data['listeProduit'] = $listeProduit;
$this->data['listePrix'] = $listePrix;
$this->data['locale'] = $locale;
$this->data['actionRepository'] = $actionRepository;
($com instanceof CommandeTmp) ? $listeLigneCom = $ligneCommandeTmpRepository->findBy(array('commandeTmp' => $com->getId())) : $listeLigneCom = null;
//var_dump($listeLigneCom);exit;
$this->data['listeligne'] = $listeLigneCom;
$this->data['idcom'] = $uneCommande;
$this->data['type'] = $type;
$this->data['actionRepository'] = $actionRepository;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/ligneCommandeTmp.html.twig', $this->data, $this->response);
}
/**
* Methode s'occupant de l'ajout d'une commande.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne ajouterproduit.html.twig
*/
public function ajouterLigneCommandeClientAction(Request $request, $id, $type, $typeCat,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository
) {
/**
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Ajouter une ligne de commande ";
$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();
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
$this->request = $request;
$this->session = $this->get('session');
$this->flashMessage = $this->get('session')->getFlashBag();
/*
* Création du formulaire par rapport a l'entité commandetmp
*/
$uneLigneCommande = new LigneCommandeTmp();
$form = $this->createForm(LigneCommandeTmpType::class, $uneLigneCommande);
$user = $utilisateurRepository->find($sessionData['id']);
/*
* Declaration des principales methodes Symfony2 pour traiter les informations
*/
//Recuperation de la liste des Produits que Symfony 2 accepte
$client = $clientRepository->find($id);
//Enregistrer les donnees de la commande
$listeRechercheClient = array();
$typeCatL =0;
if($user->getCaisse() ==null ){
$listeProduit = $produitRepository->getAllProduit($sessionData['abonneId']);
}else{
if($typeCat == 3)
$typeCatL = 1;
else
$typeCat = $typeCatL;
$listeProduit = $produitRepository->getAllProduitCaisse($sessionData['abonneId'], $user->getCaisse()->getId(), $typeCatL);
$listeRechercheClient = $clientRepository->getAllClientCaisse($user->getAbonne()->getId(), $user->getCaisse()->getId()); //getAllClient(0, 0, 0, 0, 0, 0, 1, 1,0,5,0,0,$sessionData['abonneId']);
}
/*
* Donnée à afficher sur le twig
*/
$listePrix = $prixRigueurRepository->findAll();
$d = new \DateTime();
$an = $d->format('Y');
$m = $d->format('m');
$j = $d->format('d');
$refCommande = $this->getRefCommande($em, (int) 1, $an, $m, $entite = 'COMMANDE', $taille = 5, $sessionData['abonneId']);
$dateJour = $j."/".$m."/".$an;
$listeCible = $cibleRepository->findBy(['abonne'=>$this->getAbonne($em, $sessionData['abonneId'],$abonneRepository)]);
$listeCaracteristiquePrix = $caracteristiquePrixRepository->findBy(['abonne'=>$this->getAbonne($em, $sessionData['abonneId'],$abonneRepository)]);
$listeOperation = $typeOperationRepository->findBy(['caisse'=> $user->getCaisse(), 'categorieTypeOperation'=>2]); //$this->getRefCommande($em, (int) 1, $an, $m, $entite = 'COMMANDE', $taille = 5, $sessionData['abonneId']);
//$this->data['listcateg'] = $listeCategorie;
//Mise ajour des donnees
$this->deleteLigneCommandeTmp($em,$id);
$this->deleteCommandeTmp($em,$id);
$this->data['listeCaracteristiquePrix'] = $listeCaracteristiquePrix;
$this->data['listeCible'] = $listeCible;
$this->data['listeProduit'] = $listeProduit;
$this->data['listePrix'] = $listePrix;
$this->data['client'] = $client;
$this->data['listeOperation'] = $listeOperation;
$this->data['listeClient'] = $listeRechercheClient;
$this->data['dateJour'] = $dateJour ;
$this->data['id'] = $id;
$this->data['locale'] = $locale;
$this->data['user'] = $user;
$this->data['typeOperation'] = 1;
$this->data['refCommande'] = $refCommande;
// ($com instanceof CommandeTmp) ? $listeLigneCom = $ligneCommandeTmpRepository->findBy(array('commandeTmp' => $com->getId())) : $listeLigneCom = null;
//var_dump($listeLigneCom);exit;
//$this->data['listeligne'] = $listeLigneCom;
//$this->data['idcom'] = $com;
$this->data['type'] = $type;
$this->data['typeCat'] = $typeCat;
$this->data['actionRepository'] = $actionRepository;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/ligneCommandeClient.html.twig', $this->data, $this->response);
}
/**
* Methode s'occupant de l'ajout d'une commande.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne ajouterproduit.html.twig
*/
public function commandeTypeTraitementAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository
) {
/**
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Ajouter client ou table à une commande ";
$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'));
}
/*
* Création du formulaire par rapport a l'entité commandetmp
*/
$uneLigneCommande = new LigneCommandeTmp();
$form = $this->createForm(LigneCommandeTmpType::class, $uneLigneCommande);
/*
* Declaration des principales methodes Symfony2 pour traiter les informations
*/
$em = $this->getDoctrine()->getManager();
$this->request = $request;
$this->session = $this->get('session');
$this->flashMessage = $this->get('session')->getFlashBag();
$commandeId = $this->request->get('commandeId');
$clientId = $this->request->get('clientId');
$tableId = $this->request->get('tableId');
$typeTraitement = $this->request->get('typeTraitement');
//var_dump($commandeId, $clientId );exit;
$listeProduit= array();
if($typeTraitement == 1 ){
$objetTable = $tableMange->find($tableId);
}else{
$objetClient = $clientRepository->find($clientId);
}
$this->initialiserClientTableCommande($em, $commandeId);
//Recuperation de la liste des Produits que Symfony 2 accepte
$objetCommande = $commandeRepository->find($commandeId);
if($typeTraitement == 1 ){
$objetCommande->setTableMange($objetTable);
}else{
$objetCommande->setClient($objetClient);
}
$em->persist($objetCommande);
$em->flush();
return $this->redirect($this->generateUrl('admin_vente_evoluee',["id"=>$commandeId]));
//return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/ligneCommandeTmp.html.twig', $this->data, $this->response);
}
/**
* Methode s'occupant de l'ajout d'une commande.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne ajouterproduit.html.twig
*/
public function venteEvolueeAction(Request $request, $id, $type,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository, UtilisateurRepository $utilisateurRepository, ClientRepository $clientRepository, TableRepository $tableMangeRepository,
CategorieProduitRepository $categorieProduitRepository, ProduitRepository $produitRepository, TypeOperationRepository $typeOperationRepository,
CommandeRepository $commandeRepository
) {
/**
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Interface évoluée de vente ";
$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();
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
$listeProduit=array();
$this->request = $request;
$this->session = $this->get('session');
$this->flashMessage = $this->get('session')->getFlashBag();
/*
* Création du formulaire par rapport a l'entité commandetmp
*/
$uneLigneCommande = new LigneCommandeTmp();
$form = $this->createForm(LigneCommandeTmpType::class, $uneLigneCommande);
$objetUtilisateur = $utilisateurRepository->find($sessionData['id']);
$listeClient = $clientRepository->find($sessionData['id']);
if($objetUtilisateur->getCaisse() ==null ){
$listeClient = $clientRepository->findBy(['abonne'=>$objetUtilisateur->getAbonne(),'etatClient'=>1]); //getAllClient(0, 0, 0, 0, 0, 0, 1, 1,0,5,0,0,$sessionData['abonneId']);
}else{
$listeClient = $clientRepository->getAllClientCaisse($objetUtilisateur->getAbonne()->getId(), $objetUtilisateur->getCaisse()->getId()); //getAllClient(0, 0, 0, 0, 0, 0, 1, 1,0,5,0,0,$sessionData['abonneId']);
}
$listeTable = $tableMangeRepository->findBy(['abonne'=>$objetUtilisateur->getAbonne(),'etatTable'=>1]); //getAllClient(0, 0, 0, 0, 0, 0, 1, 1,0,5,0,0,$sessionData['abonneId']);
$typeCatL =0;
$objetAbonne = $this->getAbonne($em, $sessionData['abonneId'],$abonneRepository);
// $listeCategorie = $categorieProduitRepository->getAllCategorieProduit($objetAbonne->getId());
$listeCategorieProd = $categorieProduitRepository->getAllCategorieProduitByTypeSiAffichage($objetAbonne->getId(),0,1);
$listeCategorieService = $categorieProduitRepository->getAllCategorieProduitByTypeSiAffichage($objetAbonne->getId(),2);
if($objetUtilisateur->getCaisse() == null ){
foreach($listeCategorieProd as $uneCategorie){
$listeProduit[$uneCategorie->getId()] = $produitRepository->getAllProduitCaisseWithPrix($sessionData['abonneId'], 0, $uneCategorie->getId());//getAllProduitCategorieAjax($uneCategorie->getId(),$sessionData['abonneId']); //$uneCategorie->getId()
}
}else{
foreach($listeCategorieProd as $uneCategorie){
$listeProduit[$uneCategorie->getId()] = $produitRepository->getAllProduitCaisseWithPrix($sessionData['abonneId'], $objetUtilisateur->getCaisse()->getId(), $uneCategorie->getId()); //$uneCategorie->getId() //getAllProduitCaisse
}
// var_dump(1);exit;
}
foreach($listeCategorieService as $uneCategorie){
$listeProduit[$uneCategorie->getId()] = $produitRepository->getAllProduitCategorieAjax($uneCategorie->getId(), $sessionData['abonneId'] ); //$uneCategorie->getId() //getAllProduitCaisse
//var_dump($listeProduit[$uneCategorie->getId()] );exit;
}
//
if($objetUtilisateur->getCaisse()!=null)
$listeTypeOperation = $typeOperationRepository->getListeTypeOperationAPI($objetUtilisateur->getAbonne()->getId(), $type=2, $objetUtilisateur->getCaisse()->getId()) ;
else
$listeTypeOperation = $typeOperationRepository->getListeTypeOperationAPI($objetUtilisateur->getAbonne()->getId(), $type=2) ;
$d = new \DateTime();
$an = $d->format('Y');
$m = $d->format('m');
$j = $d->format('d');
$refCommande = $this->getRefCommande($em, (int) 1, $an, $m, $entite = 'COMMANDE', $taille = 5, $sessionData['abonneId']);
$dateJour = $j."/".$m."/".$an;
$uneCommande = $commandeRepository->find($id);
if($uneCommande == null ){
$uneCommande = $commandeRepository->findOneBy(['siRetrait'=>1, 'abonne'=>$objetUtilisateur->getAbonne()]);
if($uneCommande == null || $type=1){
$uneCommande = new Commande();
$uneCommande->setCodeCommande($refCommande);
$uneCommande->setDescriptionCommande("Evoluer ".$refCommande);
}
$uneCommande->setAnnule(FALSE);
$uneCommande->setEtatCommande(1);
$uneCommande->setUtilisateur($objetUtilisateur);
$uneCommande->setRefBonCommande($refCommande);
$uneCommande->setCodeGenere($refCommande);
$uneCommande->setTauxEchange(0);
$uneCommande->setSiRetrait(1);
$uneCommande->setDateCommande(new \DateTime());
$uneCommande->setDateModification(new \DateTime());
$uneCommande->setAbonne($objetUtilisateur->getAbonne());
$uneCommande->setDatePublication(new \DateTime());
if($type == 0){
$uneCommande->setMontantResteCommande(0);
}
$uneCommande->setTypeCommande(3);
$em->persist($uneCommande);
$em->flush();
}
//Mise ajour des donnees
//$this->deleteLigneCommandeTmp($em,$id);
//$this->deleteCommandeTmp($em,$id);
$this->data['listeProduit'] = $listeProduit;
$this->data['listeTypeOperation'] = $listeTypeOperation ;
$this->data['listeCategorieProd'] = $listeCategorieProd;
$this->data['listeCategorieService'] = $listeCategorieService;
$this->data['listeClient'] = $listeClient;
$this->data['listeTable'] = $listeTable;
$this->data['dateJour'] = $dateJour ;
$this->data['uneCommande'] = $uneCommande;
$this->data['objetUtilisateur'] = $objetUtilisateur;
$this->data['objetAbonne'] = $objetUtilisateur->getAbonne();
//$this->data['id'] = $id;
$this->data['locale'] = $locale;
$this->data['actionRepository'] = $actionRepository;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/venteEvoluee.html.twig', $this->data, $this->response);
}
public function produitsDeLaCategorieAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository
) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Recupérer les produits d'une catégorie ";
$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'));
}
$idCateg = $this->request->get('categorie');
$idFournisseur = $this->request->get('idFournisseur');
$type = $this->request->get('type');
$listeProduit = $produitRepository->getCategorieProduit($idCateg, $idFournisseur, $type);
return new Response(json_encode(array('donnee' => $listeProduit)));
}
public function getInfosProduitAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository
) {
$em = $this->getDoctrine()->getManager();
$produit = $request->get('produit');
$idproduit = trim($produit);
$cde = (int) $request->get('cmdeid');
$cde = $commandeTmpRepository->find($cde);
$leProduit = $produitRepository->getProduit($idproduit);
$objetProduit = $produitRepository->find($idproduit);
//Recuperation du prix en cours du produit
$getPrix = $prixRigueurRepository->findOneBy(array("produit"=>$objetProduit,"etatPrixRigueur"=> TypeEtat::ACTIF));
$tab = array();
/*if ($cde->getTypeCommande() === 1) {
$tab['tauxtva'] = 0;
$tab['montantHtVente'] = $leProduit['montantHtAchat'];
} elseif ($cde->getTypeCommande() === 2) {
$tab['tauxtva'] = $leProduit['tauxTva'];
$tab['montantHtVente'] = $leProduit['montantHtVente'];
}*/
if($getPrix !=null){
$tab['prix'] = $getPrix->getInfoPrixRigueur();
$tab['prixId'] = $getPrix->getId();
}else{
}
return new Response(json_encode(array('don' => $tab)));
}
public function getInfosProduitAutreAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository
) {
$em = $this->getDoctrine()->getManager();
$produit = $request->get('produit');
$cible = $request->get('cible');
$caracteristique = $request->get('caracteristique');
$idproduit = trim($produit);
$cde = (int) $request->get('cmdeid');
//var_dump($caracteristique);exit;
$cde = $commandeTmpRepository->find($cde);
$leProduit = $produitRepository->getProduit($idproduit);
$objetProduit = $produitRepository->find($idproduit);
$objetCible = $cibleRepository->find($cible);
$objetCarateristique = $caracteristiquePrixRepository->find($caracteristique);
//Recuperation du prix en cours du produit
$getPrix = $prixRigueurRepository->findBy(array("produit"=>$objetProduit,"cible"=>$objetCible, "caracteristiquePrix"=>$objetCarateristique, "etatPrixRigueur"=> TypeEtat::ACTIF));
$tab = array();
/*if ($cde->getTypeCommande() === 1) {
$tab['tauxtva'] = 0;
$tab['montantHtVente'] = $leProduit['montantHtAchat'];
} elseif ($cde->getTypeCommande() === 2) {
$tab['tauxtva'] = $leProduit['tauxTva'];
$tab['montantHtVente'] = $leProduit['montantHtVente'];
}*/
if($getPrix != null){
$tab['prix'] = $getPrix[0]->getInfoPrixRigueur();
$tab['prixId'] = $getPrix[0]->getId();
$tab['action'] = 1;
}else{
$tab['prix'] = "-";
$tab['action'] = 0;
}
return new Response(json_encode(array('don' => $tab)));
}
public function addLineCmdeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository
) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = 'Ajouter une nouvelle ligne commande!';
/*
* 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);
//$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
//$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
$tabInfoDroit['nomControleur'] = $this->nom;
$tabInfoDroit['descControleur'] = $this->description;
$tabInfoDroit['nomAction'] = $nomAction;
$tabInfoDroit['descAction'] = $descAction;
$locale = $loginManager->getLocale();
$this->data['locale'] = $locale;
$this->request = $request;
$em = $this->getDoctrine()->getManager();
$p = (int) trim($this->request->get('produit'));
$produit = $produitRepository->find($p);
$add = array();
$add['error'] = 0;
if (!$produit instanceof Produit) {
$add['error'] = 1;
return new Response(json_encode(array('add' => $add)));
}
$commande = trim($this->request->get('commande'));
$user = $utilisateurRepository->find($sessionData['id']);
($commande != '') ? $commande = $commandeTmpRepository->find($commande) : $commande = '';
$nbre = trim($this->request->get('nbre'));
($nbre != '') ? $nbre = (int) $nbre : $nbre = 0;
$total = trim($this->request->get('total'));
$idFournisseur = trim($this->request->get('idFournisseur'));
$prixachat = trim($this->request->get('prixachat'));
// $total = trim($this->request->get('total'));
($total != '') ? $total = (int) $total : $total = 0;
$montantHt = trim($this->request->get('mttht'));
$siVenteCredit = trim($this->request->get('siVenteCredit'));
($montantHt != '') ? $montantHt = (int) $montantHt : $montantHt = 1;
$statutAction = (int) trim($this->request->get('statut'));
$em->getConnection()->beginTransaction();
try {
if (($produit instanceof Produit) && ($commande instanceof CommandeTmp) && $nbre > 0) {
//$existe = $em->getRepository($this->stockBundle.'LigneCommandeTmp')->findOneBy(array('produit'=>$produit->getId(),'commandeTmp'=>$commande->getId()));;
$existe = $ligneCommandeTmpRepository->allLigneCommandeTmp($produit->getId(), $commande->getId(), $statutAction);
if ($commande->getTypeCommande() == 1) {
$produit->setMontantHtAchat($prixachat);
$produit->setMontantHtVente($montantHt);
$produit->setMontantTtcVente($montantHt);
$em->persist($produit);
$em->flush($produit);
}
//var_dump(1);exit;
if ($existe > 0) {
return new Response(json_encode(array('add' => $add)));
}
if ($statutAction === 0) {
$uneLigneCmde = new LigneCommandeTmp();
} else {
$uneLigneCmde = $ligneCommandeTmpRepository->find($statutAction);
}
$objetPrix = $prixRigueurRepository->findOneBy(['infoPrixRigueur'=>$prixachat, 'produit'=>$produit, 'typePrixRigueur'=> 1]);
//->find($prixId );
if($objetPrix == null){
$objetCible = $cibleRepository->findOneBy(['etat'=>3, 'abonne'=>$user->getAbonne()]);
$objetCarat = $caracteristiquePrixRepository->findOneBy(['etat'=>3, 'abonne'=>$user->getAbonne()]);
$objetPrix = new App\Entity\stock\PrixRigueur();
if($user->getAbonne()->getTypeAbonne()->getId()!=1){
$objetPrix->setCible($objetCible );
$objetPrix->setCaracteristiquePrix($objetCarat);
}
$objetPrix->setProduit($produit);
$objetPrix->setInfoPrixRigueur($prixachat);
$objetPrix->setTypePrixRigueur(1);
$objetPrix->setEtatPrixRigueur(1);
$objetPrix->setAbonne($user->getAbonne());
$em->persist($objetPrix);
$em->flush();
}
$uneLigneCmde->setAnnule(0);
$uneLigneCmde->setCommandeTmp($commande);
$uneLigneCmde->setMontantAutreTaxe(0);
$uneLigneCmde->setProduit($produit);
$uneLigneCmde->setQuantite($nbre);
$uneLigneCmde->setPrixRigueur($objetPrix);
$uneLigneCmde->setMontantHt($total);
($commande->getTypeCommande() == 2) ? $uneLigneCmde->setTauxTva((float) $produit->getTauxTva()) : $uneLigneCmde->setTauxTva(0);
$em->persist($uneLigneCmde);
$em->flush($uneLigneCmde);
/* if($user->getCaisse() ==null ){
$listeProduit = $produitRepository->getAllProduitAjax($sessionData['abonneId']);
}else{
//$listeProduit = $produitRepository->getAllProduitAjax($sessionData['abonneId']);
$listeProduit = $produitRepository->getAllProduitCaisseAjax($sessionData['abonneId'], $user->getCaisse()->getId());
}*/
$listeProduit = $produitRepository->getAllFournisseurProduitAjax( $sessionData['abonneId'], $idFournisseur);
$add['all'] = $listeProduit;
$add['existe'] = 0;
$add['id'] = $uneLigneCmde->getId();
$add['prod'] = $produit->getNomProduit();
$add['fourn'] = '-';//$produit->getFournisseur()->getNomFournisseur();
$add['qte'] = $uneLigneCmde->getQuantite();
$add['tauxTva'] = $uneLigneCmde->getTauxTva();
$add['montant'] = $uneLigneCmde->getMontantHt();
$add['linetotal'] = 0;
}
$em->getConnection()->commit();
} catch (Exception $exc) {
$em->getConnection()->rollBack();
throw $exc;
}
return new Response(json_encode(array('add' => $add)));
}
public function updateLineCmdeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,LigneCommandeRepository $ligneCommandeRepository
) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = 'mise à jour une nouvelle ligne commande!';
/*
* 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);
//$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
//$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
$tabInfoDroit['nomControleur'] = $this->nom;
$tabInfoDroit['descControleur'] = $this->description;
$tabInfoDroit['nomAction'] = $nomAction;
$tabInfoDroit['descAction'] = $descAction;
$locale = $loginManager->getLocale();
$this->data['locale'] = $locale;
$this->request = $request;
$em = $this->getDoctrine()->getManager();
$p = (int) trim($this->request->get('produit'));
$produit = $produitRepository->find($p);
$add = array();
$add['error'] = 0;
if (!$produit instanceof Produit) {
$add['error'] = 1;
return new Response(json_encode(array('add' => $add)));
}
$commande = trim($this->request->get('commande'));
$user = $utilisateurRepository->find($sessionData['id']);
($commande != '') ? $commande = $commandeRepository->find($commande) : $commande = '';
$nbre = trim($this->request->get('nbre'));
($nbre != '') ? $nbre = (int) $nbre : $nbre = 0;
$total = trim($this->request->get('total'));
$idFournisseur = $commande->getFournisseur()->getId();
$prixachat = trim($this->request->get('prixachat'));
// $total = trim($this->request->get('total'));
($total != '') ? $total = (int) $total : $total = 0;
$montantHt = trim($this->request->get('mttht'));
$siVenteCredit = trim($this->request->get('siVenteCredit'));
($montantHt != '') ? $montantHt = (int) $montantHt : $montantHt = 1;
$statutAction = (int) trim($this->request->get('statut'));
$em->getConnection()->beginTransaction();
try {
if (($produit instanceof Produit) && ($commande instanceof Commande) && $nbre > 0) {
//$existe = $em->getRepository($this->stockBundle.'LigneCommandeTmp')->findOneBy(array('produit'=>$produit->getId(),'commandeTmp'=>$commande->getId()));;
// var_dump(1);exit;
if ($statutAction === 0) {
$uneLigneCmde = new LigneCommande();
} else {
$uneLigneCmde = $ligneCommandeRepository->find($statutAction);
}
$objetPrix = $prixRigueurRepository->findOneBy(['infoPrixRigueur'=>$prixachat, 'produit'=>$produit, 'typePrixRigueur'=> 1]);
if($objetPrix == null){
//$objetCible = $cibleRepository->findOneBy(['etat'=>3, 'abonne'=>$user->getAbonne()]);
//$objetCarat = $caracteristiquePrixRepository->findOneBy(['etat'=>3, 'abonne'=>$user->getAbonne()]);
$objetPrix = new PrixRigueur();
//// $objetPrix->setCaracteristiquePrix($objetCarat);
$objetPrix->setProduit($produit);
$objetPrix->setInfoPrixRigueur($prixachat);
$objetPrix->setTypePrixRigueur(1);
$objetPrix->setEtatPrixRigueur(1);
$objetPrix->setAbonne($user->getAbonne());
$em->persist($objetPrix);
$em->flush();
}
$uneLigneCmde->setAnnule(0);
$uneLigneCmde->setCommande($commande);
$uneLigneCmde->setMontantAutreTaxe(0);
$uneLigneCmde->setProduit($produit);
$uneLigneCmde->setQuantite($nbre);
$uneLigneCmde->setPrixRigueur($objetPrix);
$uneLigneCmde->setMontantHt($total);
($commande->getTypeCommande() == 2) ? $uneLigneCmde->setTauxTva((float) $produit->getTauxTva()) : $uneLigneCmde->setTauxTva(0);
$em->persist($uneLigneCmde);
$em->flush($uneLigneCmde);
$listeProduit = $produitRepository->getAllFournisseurProduitAjax( $sessionData['abonneId'], $idFournisseur);
$add['all'] = $listeProduit;
$add['existe'] = 0;
$add['id'] = $uneLigneCmde->getId();
$add['prod'] = $produit->getNomProduit();
$add['fourn'] = '-';//$produit->getFournisseur()->getNomFournisseur();
$add['qte'] = $uneLigneCmde->getQuantite();
$add['tauxTva'] = $uneLigneCmde->getTauxTva();
$add['montant'] = $uneLigneCmde->getMontantHt();
$add['linetotal'] = 0;
}
$em->getConnection()->commit();
} catch (Exception $exc) {
$em->getConnection()->rollBack();
throw $exc;
}
return new Response(json_encode(array('add' => $add)));
}
public function addClientLineCmdeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository
) {
// var_dump(1);exit;
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = 'Ajouter une nouvelle ligne commande pour un client !';
/*
* 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);
//$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
//$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
$tabInfoDroit['nomControleur'] = $this->nom;
$tabInfoDroit['descControleur'] = $this->description;
$tabInfoDroit['nomAction'] = $nomAction;
$tabInfoDroit['descAction'] = $descAction;
$locale = $loginManager->getLocale();
$this->data['locale'] = $locale;
$this->request = $request;
$em = $this->getDoctrine()->getManager();
$p = (int) trim($this->request->get('produit'));
$ref = $this->request->get('refCommande');
$produit = $produitRepository->find($p);
$user = $utilisateurRepository->find($sessionData['id']);
$client = $clientRepository->find(trim($this->request->get('clientId')));
$add = array();
// var_dump("ttt = ".$this->request->get('clientId'));exit;
$add['error'] = 0;
if (!$produit instanceof App\Entity\stock\Produit) {
$add['error'] = 1;
return new Response(json_encode(array('add' => $add)));
}
$nbre = trim($this->request->get('nbre'));
($nbre != '') ? $nbre = (int) $nbre : $nbre = 0;
$total = trim($this->request->get('total'));
$prixachat = trim($this->request->get('prixachat'));
$prixId = trim($this->request->get('prixId'));
$montantPaye = trim($this->request->get('montantPaye'));
$typeOperation = trim($this->request->get('typeOperation'));
// $total = trim($this->request->get('total'));
($total != '') ? $total = (int) $total : $total = 0;
$montantHt = trim($this->request->get('mttht'));
//var_dump($montantHt);exit;
$siVenteCredit = trim($this->request->get('siVenteCredit'));
$cible = trim($this->request->get('cible'));
$carateristique = trim($this->request->get('carateristique'));
($montantHt != '') ? $montantHt = (int) $montantHt : $montantHt = 1;
$statutAction = (int) trim($this->request->get('statut'));
$typeCat = (int) trim($this->request->get('typeCat'));
$commande = $commandeTmpRepository->findOneBy(["refBonCommande"=>$ref]);
if( $commande == null){
$commande = new CommandeTmp();
$commande->setCodeCommande($ref);
$commande->setRefBonCommande($ref);
$commande->setClient($client);
$commande->setAbonne($client->getAbonne());
}
$commande->setTypeCategorie($typeCat);
$commande->setTypeCommande($typeCat);
$em->persist($commande);
$em->flush();
$em->getConnection()->beginTransaction();
try {
if (($produit instanceof App\Entity\stock\Produit) && ($commande instanceof App\Entity\stock\CommandeTmp) ) {
//$existe = $em->getRepository($this->stockBundle.'LigneCommandeTmp')->findOneBy(array('produit'=>$produit->getId(),'commandeTmp'=>$commande->getId()));;
$existe = $ligneCommandeTmpRepository->allLigneCommandeTmp($produit->getId(), $commande->getId(), $statutAction);
if ($commande->getTypeCommande() == 1) {
$produit->setMontantHtAchat($prixachat);
$produit->setMontantHtVente($montantHt);
$produit->setMontantTtcVente($montantHt);
$em->persist($produit);
$em->flush($produit);
}
/* if ($existe > 0) {
return new Response(json_encode(array('add' => $add)));
}*/
if ($statutAction === 0) {
$uneLigneCmde = new LigneCommandeTmp();
} else {
$uneLigneCmde = $ligneCommandeTmpRepository->find($statutAction);
}
$objetPrix = $prixRigueurRepository->findOneBy(['infoPrixRigueur'=>$prixachat, 'produit'=>$produit, 'typePrixRigueur'=> 1]);
if($objetPrix == null){
//var_dump($cible,$carateristique);exit;
$objetCible = $cibleRepository->find($cible);
$objetCarat = $caracteristiquePrixRepository->find($carateristique);
$objetPrix = new App\Entity\stock\PrixRigueur();
//$objetPrix->setCible($objetCible );
//$objetPrix->setCaracteristiquePrix($objetCarat);
$objetPrix->setProduit($produit);
$objetPrix->setInfoPrixRigueur($prixachat);
$objetPrix->setTypePrixRigueur(1);
$objetPrix->setEtatPrixRigueur(1);
$objetPrix->setAbonne($user->getAbonne());
$em->persist($objetPrix);
$em->flush();
}
$uneLigneCmde->setAnnule(0);
$uneLigneCmde->setCommandeTmp($commande);
$uneLigneCmde->setMontantAutreTaxe(0);
$uneLigneCmde->setProduit($produit);
$uneLigneCmde->setClient($client);
$uneLigneCmde->setQuantite($nbre);
$uneLigneCmde->setTypeOperation($typeOperation);
//if( $user->getCaisse()->getTypeCaisse()!= 2 ){
$uneLigneCmde->setPrixrigueur($objetPrix);
//}
if( $user->getCaisse()->getTypeCaisse()== 2 ){
$uneLigneCmde->setMontantPaye($prixachat);
$uneLigneCmde->setMontantHt($prixachat);
}else{
$montantPaye = (int)$prixachat * (int)$nbre;
$uneLigneCmde->setMontantPaye($montantPaye);
$uneLigneCmde->setMontantHt($total);
}
($commande->getTypeCommande() == 2) ? $uneLigneCmde->setTauxTva((float) $produit->getTauxTva()) : $uneLigneCmde->setTauxTva(0);
$em->persist($uneLigneCmde);
$em->flush($uneLigneCmde);
if($user->getCaisse() ==null ){
$listeProduit = $produitRepository->getAllProduitAjax($sessionData['abonneId']);
}else{
//$listeProduit = $produitRepository->getAllProduitAjax($sessionData['abonneId']);
$listeProduit = $produitRepository->getAllProduitCaisseAjax($sessionData['abonneId'], $user->getCaisse()->getId());
}
$add['all'] = $listeProduit;
$add['existe'] = 0;
$add['id'] = $uneLigneCmde->getId();
$add['prod'] = $produit->getNomProduit();
$add['fourn'] = '-';//$produit->getFournisseur()->getNomFournisseur();
if( $user->getCaisse()->getTypeCaisse()== 2 ){
$add['qte'] = "-";
}else{
$add['qte'] = $uneLigneCmde->getQuantite();
}
$add['tauxTva'] = $uneLigneCmde->getTauxTva();
$add['montant'] = $uneLigneCmde->getMontantHt();
$add['paye'] = $uneLigneCmde->getMontantPaye();
$add['linetotal'] = 0;
$add['montantTotal'] = $ligneCommandeTmpRepository->sumLigneCommandeTmp($commande->getId());
}
$em->getConnection()->commit();
} catch (Exception $exc) {
$em->getConnection()->rollBack();
throw $exc;
}
return new Response(json_encode(array('add' => $add)));
}
public function supprLineCmdeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository
) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = 'Ajouter une nouvelle ligne commande!';
/*
* 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);
//$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
//$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
$tabInfoDroit['nomControleur'] = $this->nom;
$tabInfoDroit['descControleur'] = $this->description;
$tabInfoDroit['nomAction'] = $nomAction;
$tabInfoDroit['descAction'] = $descAction;
$locale = $loginManager->getLocale();
$this->data['locale'] = $locale;
$this->request = $request;
$em = $this->getDoctrine()->getManager();
$lc = (int) trim($this->request->get('linecmdesuppr'));
$lineC = $ligneCommandeTmpRepository->find($lc);
$em->getConnection()->beginTransaction();
try {
if ($lineC instanceof LigneCommandeTmp) {
//var_dump('OKI');exit;
$cmde = $lineC->getCommandeTmp();
$cmde->removeLignecommandeTmp($lineC);
$em->persist($cmde);
$em->persist($lineC);
$em->flush();
}
$em->getConnection()->commit();
$sup = array();
} catch (Exception $exc) {
$em->getConnection()->rollBack();
throw $exc;
}
return new Response(json_encode(array('suppr' => $sup)));
}
/**
* Methode s'occupant de detail du Commande.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne detailCommande.html.twig
*/
public function exportExcelCommandeAction(Request $request, $id,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository
) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Export en Excel d'une commande ";
$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();
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
$objetAbonne = $this->getAbonne($em, $sessionData['abonneId'],$abonneRepository);
try {
/*
* Récupération du détail de l'utilisateur
*/
$detailCommande = $commandeRepository->getOneCommande($id);
$listeCategorie= $categorieProduitRepository->getAllCategorieProduit($objetAbonne->getId());
$i = 0;
foreach ($listeCategorie as $uneCategorie) {
$listeProduit[$uneCategorie->getId()] = $commandeRepository->getListeCommandeByCategorie($detailCommande[0]->getId(), $uneCategorie->getId());
}
} catch (\Exception $e) {
var_dump($e->getMessage());
exit;
}
$locale = "fr";
/*
* Préparation des informations que nous allons traiter sur le twig
*/
$this->data['detailCommande'] = $detailCommande;
$this->data['listeProduit'] = $listeProduit;
$this->data['listeCategorie'] = $listeCategorie;
//$this->data['listeCommandeOneCommande'] = $listeCommandeOneCommande;
$this->data['locale'] = $locale;
$this->data['listeCommandeOneCommande'] = array();
$file = new CommandeByCategorieExcelBuilder();
$file->hydrate($this->data);
$response = new BinaryFileResponse($file->build());
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT,'commande.xlsx');
return $response;
}
/**
* Methode s'occupant de detail du Commande.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne detailCommande.html.twig
*/
public function detailCommandeAction(Request $request, $id,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository
) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Détail d'une commande ";
$locale ='fr';
$valRetour = $this->gestionDroitUtil($request, $nomAction, $descAction,$this->moduleTitre,$this->moduleDesc, $loginManager,$paramRepositor,$connexionRepository, $actionRepository, $moduleRepository, $controleurRepository, $profilRepository );
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
if($valRetour==1){
return $this->redirect($this->generateUrl('app_logout'));
}elseif($valRetour==2){
return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
}
try {
/*
* Récupération du détail de l'utilisateur
*/
$em = $this->getDoctrine()->getManager();
$detailCommande = $commandeRepository->getOneCommande($id);
$i = 0;
foreach ($detailCommande[0]->getFournisseur()->getFournisseurproduits() as $unProduitFournisseur) {
$listeProduit[$i] = $produitRepository->find($unProduitFournisseur->getProduit()->getId());
++$i;
}
// Recuperation des dernieres commandes liees à ce commande
// $listeCommandeOneCommande = $commandeRepository->getAllcommandeCommande($id);
//Afficher les
} catch (\Exception $e) {
var_dump($e->getMessage());
exit;
}
$locale = "fr";
/*
* Préparation des informations que nous allons traiter sur le twig
*/
$this->data['detailCommande'] = $detailCommande;
$this->data['listeProduit'] = $listeProduit;
//$this->data['listeCommandeOneCommande'] = $listeCommandeOneCommande;
$this->data['locale'] = $locale;
$this->data['listeCommandeOneCommande'] = array();
$this->data['actionRepository'] = $actionRepository;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/detailCommande.html.twig', $this->data, $this->response);
}
/**
* Methode s'occupant de detail du Commande.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne detailCommande.html.twig
*/
public function imprimerBonCommandeAction(Request $request, $id,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository
) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
try {
/*
* Récupération du détail de l'utilisateur
*/
$em = $this->getDoctrine()->getManager();
$objetCommande = $commandeRepository->find($id); ///getOneCommande($id);
$objetAbonne = $abonneRepository->find($sessionData['abonneId']);
$objetUtilisateur = $utilisateurRepository->find($sessionData['id']);
// Recuperation des dernieres commandes liees à ce commande
// $listeCommandeOneCommande = $commandeRepository->getAllcommandeCommande($id);
//Afficher les
} catch (\Exception $e) {
var_dump($e->getMessage());
exit;
}
$locale = "fr";
/*
* Préparation des informations que nous allons traiter sur le twig
*/
$this->data['objetCommande'] = $objetCommande;
$this->data['objetAbonne'] = $objetAbonne;
$this->data['objetUtilisateur'] = $objetUtilisateur;
$this->data['actionRepository'] = $actionRepository;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/imprimerBonCommande.html.twig', $this->data, $this->response);
}
/**
* Methode s'occupant des entree sortie des commandes.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne livraisionUneCommande.html.twig
*/
public function livraisonCommandeAction(Request $request, $id, $type,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository
) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Gérer les livraisons de commande ";
$locale ='fr';
$valRetour = $this->gestionDroitUtil($request, $nomAction, $descAction,$this->moduleTitre,$this->moduleDesc, $loginManager,$paramRepositor,$connexionRepository, $actionRepository, $moduleRepository, $controleurRepository, $profilRepository );
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
if($valRetour==1){
return $this->redirect($this->generateUrl('app_logout'));
}elseif($valRetour==2){
return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
}
try {
/*
* Récupération du détail de l'utilisateur
*/
$em = $this->getDoctrine()->getManager();
$detailCommande = $commandeRepository->getOneCommande($id);
$objetAbonne = $this->getAbonne($em,$sessionData['abonneId'], $abonneRepository);
// Recuperation des dernieres commandes liees à ce commande
// $listeCommandeOneCommande = $commandeRepository->getAllcommandeCommande($id);
} catch (\Exception $e) {
var_dump($e->getMessage());
exit;
}
$objetlocalisation = $localisationRepository->findOneBy(array("commande"=>$detailCommande) );
$latitude =0;
$longitude =0;
if ($objetlocalisation != null) {
$latitude = $objetlocalisation->getLatitude();
$longitude =$objetlocalisation->getLongitude();
}
$listeGroupement = $groupementRepository->findBy(['abonne'=> $objetAbonne, 'etatGroupement'=>1]);
$queryResult = $producteurRepository->getAllProducteur(0, 0, 0, 0, 0, 0, 0, 10000, 0,0,5,0,0,$sessionData['abonneId']);
// $listePointLocalisation= $localisationRepository->findBy(array("commande"=>$detailCommande, "typeLocalisation"=>2));
/*
* Préparation des informations que nous allons traiter sur le twig
*/
$listeRechercheProducteur = $queryResult['data'];
$this->data['listeProducteur'] = $listeRechercheProducteur;
$this->data['listeGroupement'] =$listeGroupement;
$this->data['detailCommande'] = $detailCommande;
$this->data['latitude'] = $latitude;
$this->data['longitude'] = $longitude;
//$this->data['listeCommandeOneCommande'] = $listeCommandeOneCommande;
$this->data['locale'] = $locale;
//$this->data['listePointLocalisation'] = $listePointLocalisation;
$this->data['type'] = $type;
$this->data['listeCommandeOneCommande'] = array();
$this->data['actionRepository'] = $actionRepository;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/livraisonCommande.html.twig', $this->data, $this->response);
}
/**
* Methode s'occupant des entree sortie des commandes.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
* @ParamConverter("fournisseur", options={"mapping": {"id": "id"}})
*
* @return twig d'ajout d'un abonne livraisionUneCommande.html.twig
*/
public function livraisonDirectCommandeAction(Request $request, $id, $type,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository
) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Gérer les livraisons de commande ";
$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'));
}
$unFournisseur =null;
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
$em = $this->getDoctrine()->getManager();
$prod = $sessionData["produit_id"];
/*
* Préparation des informations que nous allons traiter sur le twig
*/
//Recuperer la liste des collecteurs
$objetUtilisateur = $utilisateurRepository->find($sessionData['id']);
// $listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($objetUtilisateur->getVille()->getId(),$prod);
$villeId =0;
$typeProd = TypeFournisseur::FOURNISSEUR;;
$listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($villeId,$typeProd,$sessionData['abonneId']);
//$listeFournisseur = $fournisseurRepository->getAllFournisseur();
if($id !=0){
$unFournisseur = $fournisseurRepository->find($id);
}
$listeCritere = $critereRepository->getAllCritere();
$listeTypeCritere = $typeCritereRepository->getAllTypeCritere();
$listeChauffeur = $chauffeurRepository->getAllChauffeur($sessionData['abonneId']);
$tabInfoCritere = $infoCritereRepository->getTabListeInfoCritere();
$listePrix = $prixRigueurRepository->findAll();
// $listeProducteur = $producteurRepository->findAll();
$listeProduit = $produitRepository->findBy(['abonne'=>$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository),'siAgricole'=>1,'siAgricoleParent'=>0]);
$d = new \DateTime();
$an = $d->format('Y');
$m = $d->format('m');
$j = $d->format('d');
$refLiv = $this->getRefCommande($em, 1, $an, $m, $entite = 'LIVRER', $taille = 5, $objetUtilisateur->getId());
// var_dump($tabInfoCritere);exit;
$this->data['unFournisseur'] = $unFournisseur;
$this->data['listeCritere'] = $listeCritere;
$this->data['listeTypeCritere'] = $listeTypeCritere;
$this->data['tabInfoCritere'] = $tabInfoCritere;
$this->data['listeChauffeur'] = $listeChauffeur;
$this->data['locale'] = $locale;
//$this->data['listeProducteur'] = $listeProducteur;
$this->data['listeFournisseur'] = $listeFournisseur;
$this->data['listePrix'] = $listePrix;
$this->data['listeProduit'] = $listeProduit;
$this->data['idCol'] = $id;
$this->data['refLiv'] = "L".$refLiv;
$this->data['type'] = $type;
$this->data['listeCommandeOneCommande'] = array();
$this->data['actionRepository'] = $actionRepository;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/livraisonDirectCommande.html.twig', $this->data, $this->response);
}
/**
* Activation, suppression, désactivation de categorie.
* @return Response
*/
public function traiterLivraisonAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,LigneCommandeRepository $ligneCommandeRepository
) {
$rep = array('etat' => false, 'msg' => 'Erreur survenue lors du traitement');
/*
* Nom de l'action en cours
*/
$nomAction = 'traiterLivraisonAction';
/*
* Description de l'action de l'action en cours
*/
$descAction = 'traiter une commande';
/*
* 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));
}
$em = $this->getDoctrine()->getManager();
//$request = $this->getRequest();
$em = $this->getDoctrine()->getManager();
if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
$tempIds = $request->request->get('codeLivr');
$typeAction = $request->request->get('typeAction');
$codeCommande = $request->request->get('codeCommande');
$tabIds = explode('|', $tempIds);
$oneOk = false;
//Generation des reference pour la livraison et autres
$d = new \DateTime();
$an = $d->format('Y');
$m = $d->format('m');
$j = $d->format('d');
$objetCommande = $commandeRepository->findOneBy(['codeCommande'=>$codeCommande]);
//var_dump($tabIds );exit;
$uneInfoLivraison = new App\Entity\stock\InfoLivrer();
$uneInfoLivraison->setCommande($objetCommande);
$uneInfoLivraison->setRefBonLivraison("xxx");
$uneInfoLivraison->setRefBonReception("xxx");
$uneInfoLivraison->setNbreTotalLivre(count($objetCommande->getLignecommandes()));
$uneInfoLivraison->setNbreSaisie(count($objetCommande->getLignecommandes()));
$em->persist($uneInfoLivraison);
foreach ($tabIds as $idS) {
if ($idS != "") {
$newTabIds = explode('-', $idS);
$LigneCommande = $ligneCommandeRepository->find((int) $newTabIds[0]);
$uneLivraison = new App\Entity\stock\Livrer();
$resteLivre = (int) $LigneCommande->getQuantiteReste() - (int) $newTabIds[1];
$uneLivraison->setNbreReste(0);//$resteLivre
$uneLivraison->setinfolivrer($uneInfoLivraison);
// var_dump($request->get('quantite'.$LigneCommande->getId()), $LigneCommande->getId());exit;
$uneLivraison->setNbreLivre( $LigneCommande->getQuantite()); //(int) $newTabIds[1] //$LigneCommande->getQuantite()
// Nombre total livré
$nombreTotalLivre = (int) $LigneCommande->getQuantiteLivre() + (int) $newTabIds[1];
$nombreResteTotalLivre = (int) $LigneCommande->getQuantite() - (int) $nombreTotalLivre;
$LigneCommande->setQuantiteLivre($LigneCommande->getQuantite());
if ($resteLivre <= 0) {
$LigneCommande->setEtatLigneCommande(2);
}
$LigneCommande->setQuantiteReste(0); //$nombreResteTotalLivre
//$LigneCommande
$em->persist($LigneCommande);
$uneLivraison->setLignecommande($LigneCommande);
$uneLivraison->setDateLivraison(new \DateTime());
$uneLivraison->setEtatLivraison(1);
$unProduit = $produitRepository->find($LigneCommande->getProduit()->getId());
if ($typeAction == 1) {
$action = 'Livraison de la commande';
$uneLivraison->setRefBonReception("xxxx");
$uneLivraison->setRefBonLivraison('xxxx');
$nombretRestant = (int) $unProduit->getEnStockProduit() + (int) $newTabIds[1];
$unProduit->setEnStockProduit($nombretRestant);
} else {
$action = 'Reception de la commande';
$uneLivraison->setRefBonLivraison("xxxx");
$uneLivraison->setRefBonReception('xxxx');
$nombretRestant = (int) $unProduit->getEnStockProduit() - (int) $newTabIds[1];
$unProduit->setEnStockProduit($nombretRestant);
}
$em->persist($unProduit);
$em->persist($uneLivraison);
$this->manageStock($em, $$LigneCommande->getProduit()->getId(), $LigneCommande->getQuantite(), 1);
$oneOk = true;
// $infoLivraison = $infoLivraison.'|Nombre commandé :'.getQuantite().' - Livre : '+(int) $newTabIds[1].' - Reste à livrer : '.$nombreResteTotalLivre;
}
$objetCommande->setSiRetrait(1);
$em->persist($objetCommande);
$em->flush();
}
//Enregistrer les information sur les producteurs
$tabQuantiteProducteur = $request->request->get('tabQuantiteProducteur');
$tabInfoQuantiteProducteur = explode('|', $tabQuantiteProducteur);
// var_dump($tabInfoQuantiteProducteur);exit;
foreach ($tabInfoQuantiteProducteur as $infoQuantiteProducteur) {
if($infoQuantiteProducteur != "" ){
$newTabData = explode('-', $infoQuantiteProducteur);
$objetProducteurLivraison = new App\Entity\stock\ProducteurLivraison();
//Objet Producteur
$objetProducteur = $producteurRepository->find($newTabData[1]);
$objetLigneCommande = $ligneCommandeRepository->find($newTabData[2]);
$objetLivrer = $livrerRepository->findOneBy(['lignecommande'=> $objetLigneCommande]);
$quantite = $newTabData[0];
$objetProducteurLivraison->setProducteur($objetProducteur);
$objetProducteurLivraison->setLivrer($objetLivrer);
$objetProducteurLivraison->setQuantite($quantite);
$em->persist($objetProducteurLivraison);
$em->flush();
}
}
if ($oneOk) {
$this->get('session')->getFlashBag()->add('categorie.modifier.success', 'Opération éffectuée avec succès');
$rep['msg'] = '';
$rep['ref'] = $objetCommande->getFactures()[0]->getCodeFacture();//$refFacture;
// Preparation de l'envoi de mail
// $message = $action.' n° '.$codeCommande.' numéro de bon généré '.$refFacture.' '.$infoLivraison;
// $mailManager = $this->get('mail_manager');
// $mailManager->sendMessage('',' Traitement de commande ',$message);
$rep['etat'] = true;
}
return new Response(json_encode($rep));
}
return new Response(json_encode($rep));
}
/**
* Activation, suppression, désactivation de categorie.
* @return Response
*/
public function traiterLivraisonDirectAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
ChauffeurRepository $chauffeurRepository,SurPlusRepository $surPlusRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,LigneCommandeRepository $ligneCommandeRepository
) {
$rep = array('etat' => false, 'msg' => 'Erreur survenue lors du traitement');
/*
* Nom de l'action en cours
*/
$nomAction = 'traiterLivraisonAction';
/*
* Description de l'action de l'action en cours
*/
$descAction = 'traiter une commande';
/*
* 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;
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
/*
* 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_COM, Module::MOD_GEST_COM_DESC, $this->nom, $this->description, $nomAction, $descAction, $sessionData['id'])) {
// $this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
// $rep['msg'] = "Vous n'avez pas le droit d'effectuer cette action";
//
// return new Response(json_encode($rep));
// }
$em = $this->getDoctrine()->getManager();
$objetUtilisateur = $utilisateurRepository->find($sessionData['id']);
if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
$quantiteLivre = $request->request->get('qteLivre');
$chauffeurId = $request->request->get('chauffeurId');
$numVoiture = $request->request->get('numVoiture') ;
$idCollecteur = $request->request->get('colId'); //Fournisseur = Collecteur
$objetCol = $fournisseurRepository->find($idCollecteur);
$objetChauffeur = $chauffeurRepository->find($chauffeurId);
//var_dump($quantiteLivre);exit;
//Enrégistrer les infos concernants la livraison
$oneOk = false;
//Generation des reference pour la livraison et autres
$d = new \DateTime();
$an = $d->format('Y');
$m = $d->format('m');
$j = $d->format('d');
// $refFacture = $this->getRefLivrer($em, 1, $an, $m, $entite = 'LIVRER', $taille = 5, $j);
$em->getConnection()->beginTransaction();
$quantiteLivrerAEnregistre = $quantiteLivre;
$quantiteLivre = (int) $quantiteLivre + (int)$this->recupererSurPlus($em, $objetCol->getCodeFournisseur(), $fournisseurRepository,$surPlusRepository );
try {
// //creation de l'entite fature
// $uneFacture = new Facture();
// $uneFacture->setCodeFacture($refFacture);
// $uneFacture->setDatePublication($d);
// //var_dump($typeAction);exit;
// $uneFacture->setTypeFacture(1);
// $em->persist($uneFacture);
// $em->flush();
$oneOk = true;
$arreter =1;
$prod = $request->get("produit") ;//$sessionData["produit_id"];
$valinfosac = $request->get("valinfosac") ;
$numLivraison= $request->get("numLivraison") ;
$infoPrix= $request->get("prixachatchoice") ;
$siVente= $request->get("siVenteCredit") ;
$quantitesaisie = $request->get("quantitesaisie") ;
$dateLivraison= $request->get("dateLivraison") ;
$dateLivraison = new \DateTime(implode("-",array_reverse( explode('-', str_replace("/","-",$dateLivraison)) )));
//var_dump($prod);exit;
//Recuperation de la derniere ligne commande concernéé
$LigneCommande = $ligneCommandeRepository->findBy(array('etatLigneCommande'=>1,'fournisseur'=>$objetCol, 'annule'=>0));
$objetProduit = $produitRepository->find($prod);
if($infoPrix != 0){
$prixEnRigueur = $prixRigueurRepository->findOneBy(array('infoPrixRigueur'=> $infoPrix));
}else{
if($LigneCommande!= null){
$prixEnRigueur = $prixRigueurRepository->findOneBy(array('produit'=>$LigneCommande[0]->getProduit(),'etatPrixRigueur'=> TypeEtat::ACTIF));
$prod = $LigneCommande[0]->getProduit()->getId();
}else{
$prixEnRigueur = $prixRigueurRepository->findOneBy(array('etatPrixRigueur'=> TypeEtat::ACTIF));
}
}
$infoLivre = new InfoLivrer();
$infoLivre->setNbreTotalLivre($quantiteLivrerAEnregistre);
$infoLivre->setNbreSaisie($quantitesaisie);
$infoLivre->setRefBonLivraison($numLivraison);
$infoLivre->setRefBonReception($numLivraison);
$infoLivre->setCodeGenere($numLivraison);
$infoLivre->setFournisseur($objetCol);
$infoLivre->setAbonne($this->getAbonne($em, $sessionData['abonneId'],$abonneRepository));
$infoLivre->setPrixrigueur($prixEnRigueur);
$infoLivre->setTypeInfoLivrer($prod);
if($LigneCommande!=null)
$infoLivre->setVariete($LigneCommande[0]->getProduit());
else
$infoLivre->setVariete($objetProduit);
$infoLivre->setTypeOperation(1);
$infoLivre->setDateLivraison($dateLivraison);
$em->persist($infoLivre);
$em->flush();
$montantLivraison = $prixEnRigueur->getInfoPrixRigueur()* $quantitesaisie;
$institule = "Livraison de ".$quantitesaisie." Kg";
//Ajouter les informations concernant les sac
$this->genereLigneSuivieLivraison($em, $objetUtilisateur->getVille(),$montantLivraison,2, $institule, NULL, $infoLivre);
$tabInfoSac = explode('|', $valinfosac);
foreach ($tabInfoSac as $infoSac) {
if($infoSac !=''){
$donneInfoSac = explode('-',$infoSac);
$objetSac = new App\Entity\stock\Sac();
$objetSac->setNombreSac($donneInfoSac[0]);
$objetSac->setHumiditeSac($donneInfoSac[1]);
$objetSac->setInfolivrer($infoLivre);
$objetSac->setQuantiteRetire($donneInfoSac[2]);
$objetSac->setDatePublication(new \DateTime());
$em->persist($objetSac);
$em->flush();
}
}
//Traitement des informations concernant les critères
$valcritere = $request->get("valcritere") ;
$encompte = $request->get("encompte") ;
$infonombrededuit = $request->get("infonombrededuit") ;
$tabIds = explode('|', $valcritere);
$tabNombre = explode('|', $infonombrededuit);
foreach ($tabIds as $idS) {
if($idS !=''){
$objetInfoCritere = $infoCritereRepository->find((int)$idS);
$objetExtraLivr = new App\Entity\stock\ExtraLivraison();
$objetExtraLivr->setInfocritere($objetInfoCritere);
$objetExtraLivr->setInfolivrer($infoLivre);
$em->persist($objetExtraLivr);
$em->flush();
}
}
$j=1;
//var_dump(count($LigneCommande));exit;
foreach ( $LigneCommande as $unObjetLigneCommande) {
//var_dump($unObjetLigneCommande->getId());exit;
if ($unObjetLigneCommande->getQuantiteReste() != 0) {
$uneLivraison = new App\Entity\stock\Livrer(); //Création de l'abjet Livrer
if($arreter ==1){
if ((int) $unObjetLigneCommande->getQuantiteReste() >= (int) $quantiteLivre) { //si La Quantite a livre est inférieur ou
// egale a la quantité commandée pour une commande
//Calcul quantite totale
$QuantiteTotal = $unObjetLigneCommande->getQuantiteLivre() + $quantiteLivre;//Recuperation de la quantité total livrée pour le produit
//set de la quantité total
$unObjetLigneCommande->setQuantiteLivre($QuantiteTotal);//Quant donné a l'objet Ligne commande
$uneLivraison->setNbreLivre($quantiteLivre);//On ecrit la quantité livre durant la livraison
if ($unObjetLigneCommande->getQuantiteReste() == (int) $quantiteLivre) { //Si c'est pour soldé la livraison
//Tout les produits sont livrés Soldé
$unObjetLigneCommande->setEtatLigneCommande(2);
//Mettre a jour la commande concenant ce produit
$this->mettreAJourCommande($em,$unObjetLigneCommande->getCommande()->getId());
// $this->mettreAJourLigneCommande($em, $unObjetLigneCommande->getId());
$QuantiteTotalReste=0;
} else {
$QuantiteTotalReste = $unObjetLigneCommande->getQuantite() - $QuantiteTotal;
}
$unObjetLigneCommande->setQuantiteReste($QuantiteTotalReste);
$arreter =2;
$quantiteLivre = 0;
} else { //Dans le cas ou la quantité a livrer est supérieur a ce qu'on doit livrer pour une commande
//Recuperation de la quantité a livrer pour la commande
$QteDoitLivrer = $unObjetLigneCommande->getQuantite() - $unObjetLigneCommande->getQuantiteLivre();
//Recuperation de la quantité livrer
//$QteLivrer = $unObjetLigneCommande->getQuantiteLivre()+$doitLivrer;
$unObjetLigneCommande->setEtatLigneCommande(2); //Dans ca on solde a coup sur les livraisons
$this->mettreAJourCommande($em,$unObjetLigneCommande->getCommande()->getId());
// $this->mettreAJourLigneCommande($em, $unObjetLigneCommande->getId());
$unObjetLigneCommande->setQuantiteLivre($unObjetLigneCommande->getQuantite());
// $uneLivraison->setNbreLivre($unObjetLigneCommande->getQuantiteReste());//Rucuperation de la quantité livrer pour la commande
$uneLivraison->setNbreLivre($QteDoitLivrer);//Rucuperation de la quantité livrer pour la commande
$quantiteLivre = $quantiteLivre - $QteDoitLivrer;//$unObjetLigneCommande->getQuantiteReste();
// var_dump($quantiteLivre,$unObjetLigneCommande->getId());exit;
$unObjetLigneCommande->setQuantiteReste(0); //Comme on a tout livré On met la quantité restante a 0
$QuantiteTotalReste=0;
}
$uneLivraison->setLignecommande($unObjetLigneCommande);
$uneLivraison->setDateLivraison(new \DateTime());
$uneLivraison->setEtatLivraison(1);
$uneLivraison->setNbreReste($QuantiteTotalReste);
$uneLivraison->setNombreRestantLivrer($tabNombre[$j]);
$uneLivraison->setEnCompte((int)$encompte);
$uneLivraison->setDateLivraison($dateLivraison);
$uneLivraison->setInfolivrer($infoLivre);
$uneLivraison->setRefBonLivraison('L'.$unObjetLigneCommande->getCommande()->getCodeCommande());
$uneLivraison->setRefBonReception($numLivraison);
$em->persist($unObjetLigneCommande);
$em->persist($uneLivraison);
$em->flush();
}
$j++;
}
}
//var_dump($QuantiteTotalReste)
if($quantiteLivre == 0){
$objetInfoLivre = $infoLivrerRepository->find($infoLivre->getId());
$objetInfoLivre->setEtatInfoLivrer(2);
$em->persist($objetInfoLivre);
$em->flush();
}
$this->upDateSurPlus($em, $objetCol->getCodeFournisseur(),$quantiteLivre, $fournisseurRepository,$surPlusRepository);
$d = new \DateTime();
$an = $d->format('Y');
$m = $d->format('m');
$j = $d->format('d');
$refLiv = $this->reinitialiserRef($em, 1, $an, $m, $entite = 'LIVRER', $taille = 5, $sessionData["id"]);
//Enregistrement des chauffeurs
$chauffeurLivraision = new ChauffeurLivraison();
$chauffeurLivraision ->setInfolivrer($infoLivre);
$chauffeurLivraision ->setChauffeur($objetChauffeur);
$chauffeurLivraision ->setPlaqueCamion($numVoiture);
$em->persist($chauffeurLivraision);
$em->flush();
$em->getConnection()->commit();
} catch (Exception $exc) {
$em->getConnection()->rollBack();
throw $exc;
}
if ($oneOk) {
$this->get('session')->getFlashBag()->add('categorie.modifier.success', 'Opération effectuée avec succès');
$rep['msg'] = '';
$rep['ref'] = "";
$rep['etat'] = true;
}
return new Response(json_encode($rep));
}
return new Response(json_encode($rep));
}
/**
* Activation, suppression, désactivation de categorie.
* @return Response
*/
public function traiterInfoLivraisonAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,LigneCommandeRepository $ligneCommandeRepository
) {
$rep = array('etat' => false, 'msg' => 'Erreur survenue lors du traitement');
/*
* Nom de l'action en cours
*/
$nomAction = 'traiterInfoLivraisonAction';
/*
* Description de l'action de l'action en cours
*/
$descAction = 'traiter une commande';
/*
* 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_COM, Module::MOD_GEST_COM_DESC, $this->nom, $this->description, $nomAction, $descAction, $sessionData['id'])) {
// $this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
// $rep['msg'] = "Vous n'avez pas le droit d'effectuer cette action";
//
// return new Response(json_encode($rep));
// }
$em = $this->getDoctrine()->getManager();
$quantiteLivre = $request->request->get('qteLivre');
$arreter =1;
if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
$quantiteLivre = $request->request->get('qteLivre');
$idCollecteur = $request->request->get('colId'); //Fournisseur = Collecteur
$objetCol = $fournisseurRepository->find($idCollecteur);
$LigneCommande = $ligneCommandeRepository->findBy(array('etatLigneCommande'=>1,'fournisseur'=>$objetCol,'annule'=>0));
//Recuperation du prix en cours
$prixRigueur = $prixRigueurRepository->findOneBy(array('etatPrixRigueur'=>1));
$oneOk = false;
$tabInfo = array();
$quantiteRestante = $quantiteLivre;
$i = 0;
$em->getConnection()->beginTransaction();
try {
foreach ( $LigneCommande as $unObjetLigneCommande) {
if ($quantiteRestante !=0) {
$oneOk = true;
if($arreter ==1){
$tabInfo[$i]["prixRigueurActuel"] = $prixRigueur->getInfoPrixRigueur();
$tabInfo[$i]["prixRigueurAchat"] = $unObjetLigneCommande->getPrixrigueur()->getInfoPrixRigueur();
$tabInfo[$i]["codeCommande"] = $unObjetLigneCommande->getCommande()->getCodeCommande();
if ((int) $unObjetLigneCommande->getQuantiteReste() >= (int) $quantiteLivre) { //si La Quantite a livre est inférieur ou
$tabInfo[$i]["totalPrixRigueur"] = (int)$quantiteLivre * (int)$prixRigueur->getInfoPrixRigueur();
$tabInfo[$i]["totalPrixAchat"]= (int)$quantiteLivre * (int)$unObjetLigneCommande->getPrixrigueur()->getInfoPrixRigueur();
$tabInfo[$i]["quantiteReel"] = (int)$quantiteLivre;
$quantiteRestante =0;
} else { //Dans le cas ou la quantité a livrer est supérieur a ce qu'on doit livrer pour une commande
$tabInfo[$i]["totalPrixRigueur"] = (int)$unObjetLigneCommande->getQuantiteReste() * (int)$prixRigueur->getInfoPrixRigueur();
$tabInfo[$i]["totalPrixAchat"] = (int)$unObjetLigneCommande->getQuantiteReste() * (int)$unObjetLigneCommande->getPrixrigueur()->getInfoPrixRigueur();
$tabInfo[$i]["quantiteReel"] = (int)$unObjetLigneCommande->getQuantiteReste();
$QteDoitLivrer = $unObjetLigneCommande->getQuantite() - $unObjetLigneCommande->getQuantiteLivre();
$quantiteLivre = $quantiteLivre - $QteDoitLivrer;
if($quantiteLivre == 0){
$quantiteRestante =0;
}
}
if($tabInfo[$i]["totalPrixAchat"] > $tabInfo[$i]["totalPrixRigueur"]){
$tabInfo[$i]["quantiteALivreApres"] = ($tabInfo[$i]["totalPrixAchat"]-$tabInfo[$i]["totalPrixRigueur"])/$tabInfo[$i]["prixRigueurAchat"];
}else{
$tabInfo[$i]["quantiteALivreApres"] = 0;
}
$i++ ;
}
}
}
$em->getConnection()->rollBack();
} catch (Exception $exc) {
$em->getConnection()->rollBack();
throw $exc;
}
//var_dump($tabInfo);exit;
if ($oneOk) {
$rep['msg'] = 'ok';
$this->get('session')->getFlashBag()->add('categorie.modifier.success', 'Opération éffectuée avec succès');
$rep['tabInfo'] = $tabInfo;
$rep['etat'] = true;
}else{
$rep['msg'] = 'no';
}
return new Response(json_encode($rep));
}
return new Response(json_encode($rep));
}
/**
* Activation, suppression, désactivation de categorie.
* @return Response
*/
public function traiterInfoCriteretAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository
) {
$rep = array('etat' => false, 'msg' => 'Erreur survenue lors du traitement');
/*
* Nom de l'action en cours
*/
$nomAction = 'traiterLivraisonAction';
/*
* Description de l'action de l'action en cours
*/
$descAction = 'traiter une commande';
/*
* 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_COM, Module::MOD_GEST_COM_DESC, $this->nom, $this->description, $nomAction, $descAction, $sessionData['id'])) {
// $this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
// $rep['msg'] = "Vous n'avez pas le droit d'effectuer cette action";
//
// return new Response(json_encode($rep));
// }
$rep =array();
$em = $this->getDoctrine()->getManager();
if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
$em->getConnection()->beginTransaction();
try {
$idLivraison = $request->request->get('idLiv');
//Enrégistrer les infos concernants la livraison
$oneOk = false;
//Generation des reference pour la livraison et autres
//Recuperation de la derniere ligne commande concernéé
$infoLivre = new InfoLivrer();
$objetInfoCritere = $infoCritereRepository->find((int)$idLivraison);
//Traitement des informations concernant les critères
$valcritere = $request->get("valcritere") ;
$tabIds = explode('|', $valcritere);
foreach ($tabIds as $idS) {
if($idS !=''){
$objetInfoCritere = $infoCritereRepository->find((int)$idS);
$objetExtraLivr = new App\Entity\stock\ExtraLivraison();
$objetExtraLivr->setInfocritere($objetInfoCritere);
$objetExtraLivr->setInfolivrer($infoLivre);
$em->persist($objetExtraLivr);
$em->flush();
}
}
$em->getConnection()->commit();
} catch (Exception $exc) {
$em->getConnection()->rollBack();
throw $exc;
}
return new Response(json_encode($rep));
}
return new Response(json_encode($rep));
}
/**
* Methode s'occupant de traiter les bons de Livraison et de reception .
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne ajouterFournisseur.html.twig
*/
public function traiteBonAction(Request $request, $id, $type, $ref,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository
) {
$em = $this->getDoctrine()->getManager();
//Recuperation des informations concernant le client
//$infoClient = $commandeRepository->getClientCommande($id);
//Recuperation des informations concernant les lignes commande
$ligneCommande = $commandeRepository->getLigneCommande($id);
//Recuperation des informations concernant les operation de la commande
$ligneOperation = $operationRepository->getListeOperationCommande($id);
/*
* Preparation des informations à traiter sur les twig
*/
$this->data['infoClient'] = array();
$this->data['type'] = $type;
$this->data['ref'] = $ref;
$this->data['ligneCommande'] = $ligneCommande;
$this->data['ligneOperation'] = $ligneOperation;
$this->data['actionRepository'] = $actionRepository;
return $this->render($this->stockBundle . 'Operation:genereBon.html.twig', $this->data, $this->response);
}
/**
* Methode s'occupant de recupérer les infos d'un client .
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne ajouterFournisseur.html.twig
*/
public function getIdentiteClientAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository
) {
$em = $this->getDoctrine()->getManager();
$refc = $request->request->get('refclient');
//Recuperation des informations concernant le client
$infoClient = $abonneRepository->findOneBy(array('codeBase' => $refc));
($infoClient instanceof App\Entity\user\Abonne) ?
$this->data['client'] = trim($infoClient->getNom()) . ' ' . trim($infoClient->getPrenoms()) :
$this->data['client'] = '';
return new Response(json_encode($this->data));
}
/**
* Methode s'occupant de recupérer les infos d'un client .
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne ajouterFournisseur.html.twig
*/
public function getIdentiteClientCodeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository
,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository,TypeOperationRepository $typeOperationRepository, CommandeRepository $commandeRepository, $prixRigeurRepository
,LigneCommandeRepository $ligneCommandeRepository,ClientRepository $clientRepository,CategorieProduitRepository $categorieProduitRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,ChauffeurRepository $chauffeurRepository,InfoLivrerRepository $infoLivrerRepository) {
$em = $this->getDoctrine()->getManager();
$refc = $request->request->get('refclient');
//Recuperation des informations concernant le client
$infoClient = $abonneRepository->findOneBy(array('nom' => $refc));
($infoClient instanceof App\Entity\user\Abonne) ?
$this->data['client'] = trim($infoClient->getCodeBase()) :
$this->data['client'] = '';
//var_dump($this->data['client']);exit;
return new Response(json_encode($this->data));
}
/**
* Methode s'occupant de copier les commandes en attente vers les commandes validees .
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne ajouterFournisseur.html.twig
*/
protected function validateLigneCommande(Request $request, $idCommande, $siLivreImmedia, $remiseCommande,$montanthtunitchoice =0, $idFournisseur=0,
FournisseurRepository $fournisseurRepository, PrixRigueurRepository $prixRigeurRepository
, InfoLivrerRepository $infoLivrerRepository, CommandeTmpRepository $commandeTmpRepository,SurPlusRepository $surPlusRepository,
PrixRigueurRepository $prixRigueurRepository, LivrerRepository $livrerRepository, LigneCommandeRepository $ligneCommandeRepository) {
$em = $this->getDoctrine()->getManager();
$infoCmde = $commandeTmpRepository->find($idCommande);
if($idFournisseur !=0){
$infoCmde->setFournisseur($fournisseurRepository->find($idFournisseur)) ;
$em->persist($infoCmde);
$em->flush();
}
/* if($siLivreImmedia == 1){
$this->saveLivraison($em, $infoCmde, null) ;
}*/
//if($siLivreImmedia ==1)
if ($infoCmde instanceof CommandeTmp) {
$em->getConnection()->beginTransaction();
//(
try {
$uneCommande = new Commande();
$uneCommande->setAnnule(FALSE);
$uneCommande->setCodeCommande($infoCmde->getCodeCommande());
// if ($infoCmde->getAbonne() != NULL) {
// $uneCommande->setAbonne($infoCmde->getAbonne());
// }
$uneCommande->setDescriptionCommande($infoCmde->getDescriptionCommande());
$uneCommande->setEtatCommande(1);
$uneCommande->setUtilisateur($infoCmde->getUtilisateur());
$uneCommande->setRefBonCommande($infoCmde->getRefBonCommande());
$uneCommande->setCodeGenere($infoCmde->getRefBonCommande());
$uneCommande->setTauxEchange($infoCmde->getTauxEchange());
$uneCommande->setFournisseur($infoCmde->getFournisseur());
$uneCommande->setDateCommande($infoCmde->getDatePublication());
$uneCommande->setDateModification($infoCmde->getDateModification());
$uneCommande->setAbonne($infoCmde->getAbonne());
$uneCommande->setDatePublication(new \DateTime());
$uneCommande->setMontantResteCommande(0);
$uneCommande->setTypeCommande($infoCmde->getTypeCommande());
$em->persist($uneCommande);
$em->flush();
$lc = $infoCmde->getLignecommandeTmps();
$montantCommande = 0;
//Recuperation des informations sur le le sur-plus de l'utilisateur
$surPlus = $surPlusRepository->findOneBy(array('fournisseur'=>$infoCmde->getFournisseur()));
if (count($lc) > 0) {
//var_dump($tabIds );exit;
$uneInfoLivraison = new InfoLivrer();
$uneInfoLivraison->setCommande($uneCommande);
$uneInfoLivraison->setRefBonLivraison("L".$infoCmde->getRefBonCommande());
$uneInfoLivraison->setRefBonReception("L".$infoCmde->getRefBonCommande());
$uneInfoLivraison->setEtatInfoLivrer(1);
$uneInfoLivraison->setFournisseur($infoCmde->getFournisseur());
$uneInfoLivraison->setAbonne($infoCmde->getAbonne());
$uneInfoLivraison->setNbreTotalLivre(0);
$uneInfoLivraison->setNbreSaisie(0);
$em->persist($uneInfoLivraison);
$em->flush();
foreach ($lc as $ligneCde) {
// var_dump($ligneCde->getMontantHt());exit;
//Recuperer le prix de la commande
if($siLivreImmedia == 1){
$prixEnRigueur = $prixRigueurRepository->findOneBy(array('infoPrixRigueur'=>$montanthtunitchoice));
}else{
$prixEnRigueur = $prixRigueurRepository->findOneBy(array('produit'=>$ligneCde->getProduit(),'etatPrixRigueur'=> TypeEtat::ACTIF));
}
$this->initialiserSuiviHistoriqueCommande($em, 1, 2, $ligneCde->getProduit()->getId());
$this->initialiserSuiviHistoriqueCommande($em, 0, 1, $ligneCde->getProduit()->getId());
$uneLigneCommande = new LigneCommande();
$uneLigneCommande->setAnnule(false);
$uneLigneCommande->setEtatLigneCommande(1);
$uneLigneCommande->setProduit($ligneCde->getProduit());
$uneLigneCommande->setFournisseur($infoCmde->getFournisseur());
$uneLigneCommande->setMontantAutreTaxe($ligneCde->getMontantAutreTaxe());
$uneLigneCommande->setMontantHt($ligneCde->getMontantHt());
$uneLigneCommande->setQuantite($ligneCde->getQuantite());
$uneLigneCommande->setQuantiteLivre($ligneCde->getQuantite());
$uneLigneCommande->setPrixrigueur($ligneCde->getPrixRigueur());
$uneLigneCommande->setAbonne($infoCmde->getAbonne());
$uneLigneCommande->setQuantiteReste(0);
$uneLigneCommande->setTauxTva($ligneCde->getTauxTva());
$uneLigneCommande->setCommande($uneCommande);
//$uneCommande->addLignecommande($uneLigneCommande);
$montantCommande = (int) $montantCommande + (int) $ligneCde->getMontantHt();
$em->persist($uneLigneCommande);
$em->flush();
$this->initialiserCommandeSuivant($em, 1, $ligneCde->getProduit()->getId(), $uneLigneCommande->getId()) ;
//Recuperer les informations sur le dernier infoLivrer
$listeLivrer = $infoLivrerRepository->findBy(array('fournisseur'=>$infoCmde->getFournisseur(), 'etatInfoLivrer'=>1),array('id'=>'ASC'));
$traiteFait = 0;
if($surPlus!=null){
$quantiteSurPlus = $surPlus->getQuantite();
}else{
$quantiteSurPlus = 0;
}
if($siLivreImmedia == 1)
$this->validateLigneCommandeInterne($em, "L_".rand(), $uneInfoLivraison, $uneCommande, NULL, $uneLigneCommande->getPrixRigueur(), $uneLigneCommande->getQuantite(), $uneLigneCommande, $ligneCommandeRepository, $livrerRepository) ;
$quantiteCommande = $uneLigneCommande->getQuantite();
/*
foreach ( $listeLivrer as $infoLivrer) {
//var_dump(1);exit;
//Recuperer le nombre livré par l'utilisateur
$nombreLivre = $infoLivrerRepository->getTotalRenseigneLivraison($infoLivrer->getId());
//Traitement à faire
//Quand il existe un surpris il faut creer
if($nombreLivre[0]["nombreTotal"] == null){
$infoTotalLivre = 0;
}else{
$infoTotalLivre = $nombreLivre[0]["nombreTotal"];
}
if($infoLivrer->getTraiteInfoLivrer()!=0 ){
$nombreRestantTraiteLivraison = $infoLivrer->getTraiteInfoLivrer() ;
}else{
$nombreRestantTraiteLivraison = $infoLivrer->getNbreTotalLivre() - (int)$infoTotalLivre;
}
//var_dump($infoLivrer->getTraiteInfoLivrer(), $nombreRestantTraiteLivraison, $infoLivrer->getNbreTotalLivre(), (int)$infoTotalLivre);exit;
//if ($quantiteSurPlus >0) {
$uneLivrer = new \Entity\stock\Livrer();
$uneLivrer->setDateLivraison($infoCmde->getDatePublication());
$uneLivrer->setEtatLivraison(1);
$uneLivrer->setLignecommande($uneLigneCommande);
if($nombreRestantTraiteLivraison >= $quantiteCommande){
$uneLivrer->setNbreLivre($quantiteCommande);
$uneLigneCommande->setQuantiteLivre($quantiteCommande);
$uneLigneCommande->setQuantiteReste(0);
$uneLigneCommande->setEtatLigneCommande(2);
$uneCommande->setEtatCommande(2);
$enleveSurPlus = $quantiteSurPlus - $quantiteCommande;
$totalTraiteInfo = $nombreRestantTraiteLivraison - $quantiteCommande;
$infoLivrer->setTraiteInfoLivrer($totalTraiteInfo);
$traiteFait = 1;
if($nombreRestantTraiteLivraison == $quantiteCommande){
$infoLivrer->setEtatInfoLivrer(2);
}
$resteALivre = 0;
}else{
// if($nombreRestantTraiteLivraison)
$resteALivre = $quantiteCommande - $nombreRestantTraiteLivraison;
$uneLivrer->setNbreLivre($quantiteCommande); //$nombreRestantTraiteLivraison
$infoLivrer->setEtatInfoLivrer(2);
$uneLigneCommande->setQuantiteLivre($nombreRestantTraiteLivraison);
$uneLigneCommande->setQuantiteReste($resteALivre);
$enleveSurPlus = $quantiteSurPlus - $nombreRestantTraiteLivraison;
$quantiteCommande = $quantiteCommande - $nombreRestantTraiteLivraison;
}
$uneLivrer->setNbreReste($resteALivre);
$uneLivrer->setInfoLivrer($infoLivrer);
$uneLivrer->setNombreRestantLivrer(0);
$uneLivrer->setRefBonLivraison($infoLivrer->getRefBonLivraison());
$uneLivrer->setRefBonReception($infoLivrer->getRefBonLivraison());
if ($quantiteSurPlus >0){
$surPlus->setQuantite($enleveSurPlus);
$em->persist($surPlus);
}
$em->persist($uneLigneCommande);
$em->persist($uneLivrer);
$em->persist($infoLivrer);
$em->flush();
//Livraison imediate il faut retirer le produit en stoch
$unProduit = $produitRepository->find($ligneCde->getProduit()->getId());
$nombretRestant = (int) $unProduit->getEnStockProduit() - (int) $uneLigneCommande->getQuantite();
$unProduit->setEnStockProduit($nombretRestant);
$em->persist($unProduit);
$em->flush();
if($traiteFait == 1){
break;
}
//}
}*/
}
}
$objetFournisseur = $fournisseurRepository->find($infoCmde->getFournisseur()->getId());
$objetFournisseur->setDepassementFournisseur(0);
//Mise a jour des informations concernant la commande
$montantCommandeFinal = (int) $montantCommande - (int) $remiseCommande;
$uneCommande->setMontantCommande($montantCommandeFinal);
$uneCommande->setMontantResteCommande($montantCommandeFinal);
//$em->persist($objetFournisseur);
$em->persist($uneLigneCommande);
//var_dump(3);exit;
$em->flush();
$em->getConnection()->commit();
return $uneCommande;
} catch (\Exception $e) {
$em->getConnection()->rollback();
$em->close();
throw $e;
exit;
}
}
}
/**
* Methode s'occupant de copier les commandes en attente vers les commandes validees .
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne ajouterFournisseur.html.twig
*/
protected function validateLigneCommandeClient(Request $request, $idCommande, $siLivreImmedia, $remiseCommande,$montanthtunitchoice =0, $idUtilisateur,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository
) {
$em = $this->getDoctrine()->getManager();
$infoCmde = $commandeTmpRepository->find($idCommande);
$objetUtilisateur = $utilisateurRepository->find($idUtilisateur);
if ($infoCmde instanceof CommandeTmp) {
$em->getConnection()->beginTransaction();
try {
$uneCommande = new Commande();
$uneCommande->setAnnule(FALSE);
$uneCommande->setCodeCommande($infoCmde->getCodeCommande());
// if ($infoCmde->getAbonne() != NULL) {
// $uneCommande->setAbonne($infoCmde->getAbonne());
// }
$uneCommande->setDescriptionCommande($infoCmde->getDescriptionCommande());
$uneCommande->setEtatCommande(1);
$uneCommande->setUtilisateur($objetUtilisateur);
$uneCommande->setRefBonCommande($infoCmde->getRefBonCommande());
$uneCommande->setTauxEchange($infoCmde->getTauxEchange());
$uneCommande->setFournisseur($infoCmde->getFournisseur());
$uneCommande->setDateCommande($infoCmde->getDatePublication());
$uneCommande->setDateModification($infoCmde->getDateModification());
$uneCommande->setMontantResteCommande(0);
$uneCommande->setTypeCommande(3);
$uneCommande->setUtilisateur($objetUtilisateur);
$uneCommande->setCaisse($objetUtilisateur->getCaisse());
$uneCommande->setAbonne($objetUtilisateur->getAbonne());
$uneCommande->setClient($infoCmde->getClient());
$em->persist($uneCommande);
$em->flush();
$lc = $infoCmde->getLignecommandeTmps();
$montantCommande = 0;
//Recuperation des informations sur le le sur-plus de l'utilisateur
$surPlus = $surPlusRepository->findOneBy(array('fournisseur'=>$infoCmde->getFournisseur()));
// var_dump($infoCmde->getId());exit;
if($infoCmde->getClient() != null){
if($infoCmde->getClient()->getSiInterne()==1){
$autoObjetCommande = $this->saveCommande($em, "R".$infoCmde->getRefBonCommande(), 0, $infoCmde->getClient(), $objetUtilisateur );
$autoObjetLivraison = $this->saveLivraison($em, $autoObjetCommande, $infoCmde->getClient(),$infoLivrerRepository) ;
}
}
if (count($lc) > 0) {
foreach ($lc as $ligneCde) {
if($siLivreImmedia == 1){
$prixEnRigueur = $prixRigueurRepository->findOneBy(array('infoPrixRigueur'=>$montanthtunitchoice));
}else{
$prixEnRigueur = $prixRigueurRepository->findOneBy(array('produit'=>$ligneCde->getProduit(),'etatPrixRigueur'=> TypeEtat::ACTIF));
}
$uneLigneCommande = new LigneCommande();
$uneLigneCommande->setAnnule(false);
$uneLigneCommande->setEtatLigneCommande(1);
$uneLigneCommande->setProduit($ligneCde->getProduit());
$uneLigneCommande->setFournisseur($infoCmde->getFournisseur());
$uneLigneCommande->setMontantAutreTaxe($ligneCde->getMontantAutreTaxe());
$uneLigneCommande->setMontantHt($ligneCde->getMontantHt());
$uneLigneCommande->setQuantite($ligneCde->getQuantite());
$uneLigneCommande->setQuantiteLivre(0);
//if($objetUtilisateur->getCaisse()->getTypeCaisse() !=2){
$uneLigneCommande->setPrixrigueur($ligneCde->getPrixrigueur());
//}
$uneLigneCommande->setAbonne($infoCmde->getAbonne());
$uneLigneCommande->setQuantiteReste($ligneCde->getQuantite());
$uneLigneCommande->setTypeOperation($ligneCde->getTypeOperation());
$uneLigneCommande->setTauxTva($ligneCde->getTauxTva());
$uneLigneCommande->setClient($ligneCde->getClient());
$uneLigneCommande->setCommande($uneCommande);
$uneLigneCommande->setCodeGenere("L_".rand());
//$uneLigneCommande->setCaisse($objetUtilisateur->getCaisse());
$uneLigneCommande->setAbonne($objetUtilisateur->getAbonne());
$uneLigneCommande->setTypeLigneCommande(1);
$montantCommande = (int) $montantCommande + (int) $ligneCde->getMontantHt();
$em->persist($uneLigneCommande);
$em->flush();
//Recuperer les informations sur le dernier infoLivrer
$listeLivrer = $infoLivrerRepository->findBy(array('fournisseur'=>$infoCmde->getFournisseur(), 'etatInfoLivrer'=>1),array('id'=>'ASC'));
$traiteFait = 0;
if($infoCmde->getClient() != null){
if($infoCmde->getClient()->getSiInterne()==1){
$this->validateLigneCommandeInterne($em, "teste", $autoObjetLivraison, $autoObjetCommande, $ligneCde->getProduit(), $ligneCde->getPrixrigueur(), $ligneCde->getQuantite(),0, $ligneCommandeRepository, $livrerRepository);
}
}
if($surPlus!=null){
$quantiteSurPlus = $surPlus->getQuantite();
$quantiteCommande = $uneLigneCommande->getQuantite();
foreach ( $listeLivrer as $infoLivrer) {
//var_dump(1);exit;
//Recuperer le nombre livré par l'utilisateur
$nombreLivre = $infoLivrerRepository->getTotalRenseigneLivraison($infoLivrer->getId());
//Traitement à faire
//Quand il existe un surpris il faut creer
if($nombreLivre[0]["nombreTotal"] == null){
$infoTotalLivre = 0;
}else{
$infoTotalLivre = $nombreLivre[0]["nombreTotal"];
}
if($infoLivrer->getTraiteInfoLivrer()!=0 ){
$nombreRestantTraiteLivraison = $infoLivrer->getTraiteInfoLivrer() ;
}else{
$nombreRestantTraiteLivraison = $infoLivrer->getNbreTotalLivre() - (int)$infoTotalLivre;
}
//var_dump($infoLivrer->getTraiteInfoLivrer(), $nombreRestantTraiteLivraison, $infoLivrer->getNbreTotalLivre(), (int)$infoTotalLivre);exit;
if ($quantiteSurPlus >0) {
$uneLivrer = new App\Entity\stock\Livrer();
$uneLivrer->setDateLivraison($infoCmde->getDatePublication());
$uneLivrer->setEtatLivraison(1);
$uneLivrer->setLignecommande($uneLigneCommande);
if($nombreRestantTraiteLivraison >= $quantiteCommande){
$uneLivrer->setNbreLivre($quantiteCommande);
$uneLigneCommande->setQuantiteLivre($quantiteCommande);
$uneLigneCommande->setQuantiteReste(0);
$uneLigneCommande->setEtatLigneCommande(2);
$uneCommande->setEtatCommande(2);
$enleveSurPlus = $quantiteSurPlus - $quantiteCommande;
$totalTraiteInfo = $nombreRestantTraiteLivraison - $quantiteCommande;
$infoLivrer->setTraiteInfoLivrer($totalTraiteInfo);
$traiteFait = 1;
if($nombreRestantTraiteLivraison == $quantiteCommande){
$infoLivrer->setEtatInfoLivrer(2);
}
$resteALivre = 0;
}else{
$resteALivre = $quantiteCommande - $nombreRestantTraiteLivraison;
$uneLivrer->setNbreLivre($nombreRestantTraiteLivraison);
$infoLivrer->setEtatInfoLivrer(2);
$uneLigneCommande->setQuantiteLivre($nombreRestantTraiteLivraison);
$uneLigneCommande->setQuantiteReste($resteALivre);
$enleveSurPlus = $quantiteSurPlus - $nombreRestantTraiteLivraison;
$quantiteCommande = $quantiteCommande - $nombreRestantTraiteLivraison;
}
$uneLivrer->setNbreReste($resteALivre);
$uneLivrer->setInfoLivrer($infoLivrer);
$uneLivrer->setNombreRestantLivrer(0);
$uneLivrer->setRefBonLivraison($infoLivrer->getRefBonLivraison());
$uneLivrer->setRefBonReception($infoLivrer->getRefBonLivraison());
$surPlus->setQuantite($enleveSurPlus);
$em->persist($uneLigneCommande);
$em->persist($surPlus);
$em->persist($uneLivrer);
$em->persist($infoLivrer);
$em->flush();
//Livraison imediate il faut retirer le produit en stoch
$unProduit = $produitRepository->find($ligneCde->getProduit()->getId());
$nombretRestant = (int) $unProduit->getEnStockProduit() - (int) $uneLigneCommande->getQuantite();
$unProduit->setEnStockProduit($nombretRestant);
$em->persist($unProduit);
$em->flush();
if($traiteFait == 1){
break;
}
}
}
}
}
}
//$objetFournisseur = $fournisseurRepository->find($infoCmde->getFournisseur()->getId());
//$objetFournisseur->setDepassementFournisseur(0);
//Mise a jour des informations concernant la commande
$montantCommandeFinal = (int) $montantCommande - (int) $remiseCommande;
$uneCommande->setMontantCommande($montantCommandeFinal);
$uneCommande->setMontantResteCommande($montantCommandeFinal);
//$em->persist($objetFournisseur);
//var_dump(3);exit;
$em->flush();
$em->getConnection()->commit();
return $uneCommande;
} catch (\Exception $e) {
$em->getConnection()->rollback();
$em->close();
throw $e;
}
}
}
public function ValideCommandeLigneCommandeAction(Request $request, $idCommande,LoginManager $loginManager,ParamRepository $paramRepositor,OperationManager $operationManager,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository,LigneCommandeRepository $ligneCommandeRepository, CaisseRepository $caisseRepository,
PrixRigueurRepository $prixRigeurRepository
) {
/**
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = 'Enregistrer la commande et ses details!';
/*
* 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);
//$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
//$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
$tabInfoDroit['nomControleur'] = $this->nom;
$tabInfoDroit['descControleur'] = $this->description;
$tabInfoDroit['nomAction'] = $nomAction;
$tabInfoDroit['descAction'] = $descAction;
$this->request = $request;
$em = $this->getDoctrine()->getManager();
$lc = (int) trim($this->request->get('linecmde'));
//$lineCom = $ligneCommandeTmpRepository->find($lc);
$uneCommande = $commandeRepository->find($idCommande);
//Récuperation du siLivreImmédiatement
$siLivreImmedia = $this->request->get('actioncommande');
//Récuperation du siLivreImmédiatement
$idFournisseur = $this->request->get('idFournisseur');
//Recuperation du remise fait au client
$remiseCommande = $this->request->get('remisecommande');
$siVenteCredit = $this->request->get('siVenteCredit');
$montanthtunitchoice = $this->request->get('montanthtunitchoice');
//var_dump($idFournisseur);exit;
$em->getConnection()->beginTransaction();
if ($idCommande > 0) {
//try {
//var_dump($idCommande);exit;
$infoCommande = $this->validateLigneCommande($request, $idCommande, $siLivreImmedia, $remiseCommande,$montanthtunitchoice, $idFournisseur,
$fournisseurRepository,$prixRigeurRepository, $infoLivrerRepository, $commandeTmpRepository, $surPlusRepository, $prixRigueurRepository, $livrerRepository,$ligneCommandeRepository );
$this->data['Produit'] = $uneCommande;
$siConfiguration = false;
//Valider la ligne de commande
if($siConfiguration){ //configuration des donnees
// var_dump(1);exit;
// var_dump($idCommande);exit;
$criteria = array('commande' => $infoCommande);
$lineCom = $ligneCommandeRepository->findOneBy($criteria);
//Tratement à faire pour aligner la table des opérations
// if ($siVenteCredit == 1) {
//recuperation de la ville
$objetUtilisateur = $utilisateurRepository->find($sessionData['id']);
$idVille = $objetUtilisateur->getVille()->getId();
//Recuperation de la caisse de la ville de l'utilisateur
$tabCompteId = $operationManager->getCompteCaisse($em,$objetUtilisateur->getCaisse()->getId(),$caisseRepository);
//recuperation de l'identifiant du produit
$idProduit = $lineCom->getProduit()->getId();
$idTypeOp = \Types\stock\TypeStock::TYPEOPERACHATCACAO;
$montantEsp = $infoCommande->getMontantCommande();
$tabCompteMontant = $operationManager->getRecuperationCompte($em,$idTypeOp,$montantEsp,$typeOperationRepository);
$compteAuxi =$tabCompteId['compte'];
$infoDepo = 'Avance à '.$infoCommande->getFournisseur()->getNomFournisseur();
$d = new \DateTime(); //$sessionData['dateChoisie'];
$dateChoisie = $d->format('Y/m/d');
$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);
}
$em->getConnection()->commit();
/* } catch (\Exception $e) {
$em->getConnection()->rollback();
$em->close();
var_dump($e->getMessage());
exit;
}*/
if($infoCommande == null ) {
return $this->redirect($this->generateUrl('admin_commandes', array('type' => 1)));
} else if ($infoCommande->getTypeCommande() == 2 && $siVenteCredit != 1) {
return $this->redirect($this->generateUrl('admin_operation_get_operation_vente', array('type' => $infoCommande->getTypeCommande(), 'codecommande' => $infoCommande->getCodeCommande())));
} else {
return $this->redirect($this->generateUrl('admin_commandes', array('type' => $infoCommande->getTypeCommande())));
}
}
}
public function valideClientCommandeLigneCommandeAction(Request $request, $idCommande,LoginManager $loginManager,OperationManager $operationManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository,LigneCommandeRepository $ligneCommandeRepository, CaisseRepository $caisseRepository
) {
/**
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = 'Enregistrer la commande du client et ses details!';
/*
* 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);
//$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
//$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
$tabInfoDroit['nomControleur'] = $this->nom;
$tabInfoDroit['descControleur'] = $this->description;
$tabInfoDroit['nomAction'] = $nomAction;
$tabInfoDroit['descAction'] = $descAction;
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
$this->request = $request;
$em = $this->getDoctrine()->getManager();
$lc = (int) trim($this->request->get('linecmde'));
$clientId = $request->get("clientId");
$commandeId = $request->get("refCommande");
//var_dump($clientId , $commandeId);exit;
//Se base sur le code de l'achat
$client = $clientRepository->find($clientId );
// var_dump($idCommande);exit;
$uneCommande = $commandeTmpRepository->findOneBy(['codeCommande'=>$commandeId]);
$objetUtilisateur = $utilisateurRepository->find($sessionData['id']);
$idVille = 1;//$objetUtilisateur->getVille()->getId();
// var_dump(1);exit;
//Récuperation du siLivreImmédiatement
$siLivreImmedia = $this->request->get('actioncommande');
//Recuperation du remise fait au client
$remiseCommande = $this->request->get('remisecommande');
$siVenteCredit = $this->request->get('siVenteCredit');
$montantAPaye = $this->request->get('montantAPaye');
$dateRetrait = $this->request->get('dateRetrait');
//var_dump($montantAPaye);exit;
$montanthtunitchoice = $this->request->get('montanthtunitchoice');
//var_dump($siVenteCredit);exit;
$em->getConnection()->beginTransaction();
if ($uneCommande != null) {
if($uneCommande->getTypeCommande()==3 ) {
// try {
// if($objetUtilisateur->getCaisse()->getTypeCaisse() != 2){
$infoCommande = $this->validateLigneCommandeClient($request, $uneCommande->getId(), $siVenteCredit, $remiseCommande,$montanthtunitchoice, $sessionData['id']);
//Mise ajour de la date de retrait
$dateRetrait = new \DateTime();
$this->data['Produit'] = $uneCommande;
$siConfiguration = false;
if( $siVenteCredit != null ){
$siConfiguration = true;
}
//Valider la ligne de commande
if($siConfiguration){ //configuration des donnees
//var_dump($idCommande);exit;
//Generation de la reference de la facture.
$d = new \DateTime();
$an = $d->format('Y');
$m = $d->format('m');
$refFacture = $this->getRefLivrer($em, 1, $an, $m, $entite = 'LIVRER', $taille = 5);
//creation de l'entite fature
$uneFacture = new Facture();
$uneFacture->setCodeFacture($refFacture);
$uneFacture->setDatePublication($d);
$uneFacture->setTypeFacture(0);
$uneFacture->setCommande($infoCommande);
$em->persist($uneFacture);
$em->flush();
$criteria = array('commande' => $infoCommande);
$lineCom = $ligneCommandeRepository->findBy($criteria);
//Tratement à faire pour aligner la table des opérations
// if ($siVenteCredit == 1) {
//recuperation de la ville
// $objetUtilisateur = $utilisateurRepository->find($sessionData['id']);
if($objetUtilisateur->getCaisse() == null){
$this->get('session')->getFlashBag()->add('caisse.non.configure', "Vous n'avez pas de caisse configurée, Contacter l'administrateur ! ");
return $this->redirect($this->generateUrl('admin_lignecommande_add_client_form', array('id'=> $client->getId())));
}
//Recuperation de la caisse de la ville de l'utilisateur
$tabCompteId = $operationManager->getCompteCaisse($em,$objetUtilisateur->getCaisse()->getId(),$caisseRepository);
$etatLigneCommande =0 ;
//Voir si le montant payer = montant de la commande
$montantTotal = $ligneCommandeRepository->sumLigneCommande($infoCommande->getId());
if($montantTotal == $montantAPaye){
$etatLigneCommande = 2;
}else{
if($montantAPaye == 0){
$etatLigneCommande = 0;
}else{
$etatLigneCommande = 1;
}
}
// var_dump($lineCom);exit;
foreach ( $lineCom as $uneLigneCommande) {
$uneLigneCommande->setEtatLigneCommande($etatLigneCommande);
$em->persist($uneLigneCommande);
// if($objetUtilisateur->getCaisse()->getTypeCaisse() == 2){
// var_dump($uneLigneCommande->getId());exit;
// var_dump($uneLigneCommande->getTypeOperation(), $uneLigneCommande->getCaisse()); exit;
$idProduit = $uneLigneCommande->getProduit()->getId();
$objetTypeOperation = $typeOperationRepository->findOneBy(['abonne'=>$this->getAbonne($em, $sessionData['abonneId'],$abonneRepository), 'codeOpInt'=>$uneLigneCommande->getTypeOperation(), 'caisse'=>$objetUtilisateur->getCaisse() ]);
if($objetTypeOperation != null){
$idTypeOp = $objetTypeOperation->getId(); //$montantEsp = $infoCommande->getMontantCommande();
$tabCompteMontant = $operationManager->getRecuperationCompte($em,$idTypeOp,$montantAPaye,$typeOperationRepository);
$compteAuxi =$tabCompteId['compte'];
$infoDepo = $objetTypeOperation ->getLibTypeOperation()."/".$infoCommande->getClient()->getUtilisateur()->getNom();
$d = new \DateTime(); //$sessionData['dateChoisie'];
$dateChoisie = $d->format('Y/m/d');
$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']);
}
}
$em->flush();
//recuperation de l'identifiant du produit
/* if($objetUtilisateur->getCaisse()->getTypeCaisse() == 3 ){
$idProduit = $lineCom->getProduit()->getId();
$objetTypeOperation = $typeOperationRepository->findOneBy(['abonne'=>$this->getAbonne($em, $sessionData['abonneId'],$abonneRepository), 'codeOpInt'=>1 ]);
$idTypeOp = $objetTypeOperation->getId(); //$montantEsp = $infoCommande->getMontantCommande();
$tabCompteMontant = $operationManager->getRecuperationCompte($em,$idTypeOp,$montantAPaye,$typeOperationRepository);
$compteAuxi =$tabCompteId['compte'];
$infoDepo = 'Avance à '.$infoCommande->getClient()->getUtilisateur()->getNom();
$d = new \DateTime(); //$sessionData['dateChoisie'];
$dateChoisie = $d->format('Y/m/d H:i:s');
$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']);
}*/
}
$em->getConnection()->commit();
/*} catch (\Exception $e) {
$em->getConnection()->rollback();
$em->close();
var_dump($e->getMessage());
//exit;
}*/
//}
if ($infoCommande->getTypeCommande() == 2 && $siVenteCredit != 1) {
return $this->redirect($this->generateUrl('admin_operation_get_operation_vente', array('type' => $infoCommande->getTypeCommande(), 'codecommande' => $infoCommande->getCodeCommande())));
} else {
//var_dump(55555);exit;
return $this->redirect($this->generateUrl('admin_commandes', array('type' => $infoCommande->getTypeCommande())));
}
}else{
$tabCompteId = $operationManager->getCompteCaisse($em,$objetUtilisateur->getCaisse()->getId(),$caisseRepository);
$refFacture = $uneCommande->getCodeCommande();
foreach ( $uneCommande->getlignecommandeTmps() as $uneLigneCommandeTmp) {
$idProduit = $uneLigneCommandeTmp->getProduit()->getId();
//var_dump($uneLigneCommandeTmp->getTypeOperation());
// var_dump($uneLigneCommandeTmp->getTypeOperation(), $objetUtilisateur->getCaisse()->getId()); exit;
$objetTypeOperation = $typeOperationRepository->findOneBy(['abonne'=>$this->getAbonne($em, $sessionData['abonneId'],$abonneRepository), 'codeOpInt'=>$uneLigneCommandeTmp->getTypeOperation(), 'caisse'=>$objetUtilisateur->getCaisse() ]);
$idTypeOp = $objetTypeOperation->getId(); //$montantEsp = $infoCommande->getMontantCommande();
$tabCompteMontant = $operationManager->getRecuperationCompte($em,$idTypeOp,$montantAPaye,$typeOperationRepository);
$compteAuxi =$tabCompteId['compte'];
$infoDepo = $objetTypeOperation->getLibTypeOperation()."/".$uneLigneCommandeTmp->getQuantite()."_".$uneLigneCommandeTmp->getProduit()->getNomProduit()."/".$uneLigneCommandeTmp->getClient()->getUtilisateur()->getNom();
//var_dump( $idTypeOp );exit;
$d = new \DateTime(); //$sessionData['dateChoisie'];
$dateChoisie = $d->format('Y/m/d H:i:s');
$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);
}
$em->flush();
$em->getConnection()->commit();
return $this->redirect($this->generateUrl('admin_commandes', array('type' => $uneCommande->getTypeCommande())));
}
}else{
$this->get('session')->getFlashBag()->add('caisse.non.configure', "Vous n'avez pas de caisse configurée, Contacter l'administrateur ! ");
return $this->redirect($this->generateUrl('admin_lignecommande_add_client_form', array('id'=> 0)));
}
}
public function modifyLineCmdeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository,LigneCommandeRepository $ligneCommandeRepository
) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = 'Ajouter une nouvelle ligne commande!';
/*
* 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);
//$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
//$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
$tabInfoDroit['nomControleur'] = $this->nom;
$tabInfoDroit['descControleur'] = $this->description;
$tabInfoDroit['nomAction'] = $nomAction;
$tabInfoDroit['descAction'] = $descAction;
$locale = $loginManager->getLocale();
$this->data['locale'] = $locale;
$this->request = $request;
$em = $this->getDoctrine()->getManager();
$lc = (int) trim($this->request->get('linecmde'));
$lineCom = $ligneCommandeTmpRepository->find($lc);
$mod = array();
if ($lineCom instanceof App\Entity\stock\LigneCommandeTmp) {
$idcat = $lineCom->getProduit()->getCategorie()->getId();
$mod['typecom'] = $lineCom->getCommandeTmp()->getTypeCommande();
$mod['id'] = $lineCom->getId();
$mod['cat'] = $idcat;
$mod['listprod'] = $produitRepository->getCategorieProduit($idcat);
$mod['prod'] = $lineCom->getProduit()->getId(); //$produit->getNomProduit();
$mod['fourn'] = $lineCom->getCommandeTmp()->getFournisseur()->getId();
$mod['qte'] = $lineCom->getQuantite();
$mod['tauxTva'] = $lineCom->getTauxTva();
$mod['montant'] = $lineCom->getMontantHt();
$ttc = ( 1 + ($lineCom->getTauxTva() / 100)) * $lineCom->getMontantHt();
$mod['mtt_ttc'] = $ttc;
$mod['total_line'] = $ttc * $lineCom->getQuantite();
}
//var_dump($mod);exit;
return new Response(json_encode(array('mod' => $mod)));
}
public function mettreAJourCommande($em,$idCom){
$laCommande = $commandeRepository->find($idCom);
$laCommande->setEtatCommande(TypeEtat::INACTIF);
$laCommande->setMontantResteCommande(TypeEtat::APRODUIRE);
$em->persist($laCommande);
$em->flush();
}
public function mettreAJourLigneCommande($em,$idLigneCom){
$laLigneCommande = $ligneCommandeRepository->find($idLigneCom);
$laLigneCommande->setEtatLigneCommande(TypeEtat::INACTIF);
$em->persist($laLigneCommande);
$em->flush();
}
/**
* Methode s'occupant de l'ajout d'une commande.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne ajouterproduit.html.twig
*/
public function modifOperationCollecteurAction(Request $request, $typeCom, $ref,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository,LigneCommandeRepository $ligneCommandeRepository
) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Modifier les opérations des collecteurs (augmenter ou diminuer une avance à un colleteur) ";
/*
* Informations de session
*/
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
$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'));
}
$prod = $sessionData["produit_id"];
/*
* Création du formulaire par rapport a l'entité commandetmp
*/
$em = $this->getDoctrine()->getManager();
$user = $utilisateurRepository->find($sessionData['id']);
$uneCommande = new CommandeTmp();
$d = new \DateTime();
$an = $d->format('Y');
$m = $d->format('m');
$j = $d->format('d');
$refCommande = $this->getRefCommande($em, (int) $typeCom, $an, $m, $entite = 'COMMANDE', $taille = 5, $user->getId());
$uneCommande->setCodeCommande($refCommande);
$form = $this->createForm(CommandeTmpType::class, $uneCommande);
/*
* 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 Produits que Symfony 2 accepte
//$listeFournisseur = $em->getRepository($this->stockBundle.'Fournisseur')->findBy(array('etatFournisseur'=>1));
/*
* Donnée à afficher sur le twig
*/
//Recuperation des informations concernant le client
$infoClient =array();
$prixEnCours = $prixRigueurRepository->getActifPrixRigueur($prod);
if ($this->request->isMethod('POST')) {
$form->handleRequest($this->request);
// $refc = $request->request->get('refclt');
$idFournisseur = $request->request->get('idFournisseur');
// $tauxechange = $request->request->get('tauxechange');
$typeChoix = $request->request->get('typeChoix');
$typeAction = $request->request->get('typeAction');
$nameQuantiteMontant = $request->request->get('donneeOperation');
// var_dump($infoClient);exit;
/*
* Vérifier si les élément du formulaire sont valides
*/
// if ($form->isSubmitted()) {
//var_dump(1);exit;
$em->getConnection()->beginTransaction();
try {
$objetFournisseur = $fournisseurRepository->find($idFournisseur);
$ObjetModifierDonneeCollecteur = new ModifierDonneeCollecteur();
$ObjetModifierDonneeCollecteur->setTypeOperation($typeChoix );
$ObjetModifierDonneeCollecteur->setTypeAction($typeAction );
$ObjetModifierDonneeCollecteur->setQuantite($nameQuantiteMontant);
$ObjetModifierDonneeCollecteur->setComptable($user);
$ObjetModifierDonneeCollecteur->setFournisseur($objetFournisseur);
$em->persist($ObjetModifierDonneeCollecteur);
$em->flush();
$em->getConnection()->commit();
} catch (\Exception $e) {
$em->getConnection()->rollBack();
throw $e;
}
/*} else {
$this->flashMessage->add('commande.ajout.error', $this->translator->trans("site.formulaire.invalide"));
return $this->redirect($this->generateUrl('admin_commande_type', array('typeCom' => 1)));
}*/
}
$listeClient = array();
// var_dump(in_array($sessionData['idProfil'],\Types\user\TypeProfil::PROFIL_COMPTABLE));exit;
if (in_array($sessionData['idProfil'],\Types\user\TypeProfil::PROFIL_COMPTABLE)) {
//$listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($sessionData['id']);
$objetUtilisateur = $utilisateurRepository->find($sessionData['id']);
$listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($objetUtilisateur->getVille()->getId(),$prod);
} else {
$listeFournisseur = $fournisseurRepository->getAllFournisseur($prod);
}
//$listeFournisseur = $fournisseurRepository->getAllFournisseurByZone($sessionData['id']);
$this->data['formuView'] = $form->createView();
$this->data['Produit'] = $uneCommande;
$this->data['listeClient'] = $listeClient;
$this->data['prixEnCours'] = $prixEnCours;
$this->data['listeFournisseur'] = $listeFournisseur;
$this->data['typecom'] = $typeCom;
$this->data['locale'] = $locale;
$this->data['actionRepository'] = $actionRepository;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). 'Commande/modifOperationCollecteur.html.twig', $this->data, $this->response);
}
/**
* Activation, suppression, désactivation de categorie.
* @return Response
*/
public function traiterAddChauffeurAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository,LigneCommandeRepository $ligneCommandeRepository
) {
$rep = array('etat' => false, 'msg' => 'Erreur survenue lors du traitement');
/*
* Nom de l'action en cours
*/
$nomAction = 'traiterAddChauffeurAction';
/*
* Description de l'action de l'action en cours
*/
$descAction = "traiter l'ajout d'un chauffeur ";
/*
* 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_COM, Module::MOD_GEST_COM_DESC, $this->nom, $this->description, $nomAction, $descAction, $sessionData['id'])) {
// $this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
// $rep['msg'] = "Vous n'avez pas le droit d'effectuer cette action";
//
// return new Response(json_encode($rep));
// }
$rep =array();
$em = $this->getDoctrine()->getManager();
if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
$em->getConnection()->beginTransaction();
try {
$nomChauffeur = $request->request->get('nomChauffeur');
$telChauffeur = $request->request->get('telChauffeur');
//Enrégistrer les infos concernants la livraison
$objetChauffeur = new Chauffeur();
$objetChauffeur->setNomChauffeur($nomChauffeur);
$objetChauffeur->setTelChauffeur($telChauffeur);
$objetChauffeur->setAbonne($this->getAbonne($em, $sessionData['abonneId'],$abonneRepository));
$em->persist($objetChauffeur);
$em->flush();
$em->getConnection()->commit();
} catch (Exception $exc) {
$em->getConnection()->rollBack();
throw $exc;
}
$listeChauffeur = $chauffeurRepository->getAjaxChauffeur($sessionData['abonneId']);
$rep['listechauffeur'] = $listeChauffeur ;
return new Response(json_encode($rep));
}
return new Response(json_encode($rep));
}
/**
* Methode s'occupant de detail du Commande.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne detailCommande.html.twig
*/
public function annulerCommandeAction(Request $request, $id,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository,LigneCommandeRepository $ligneCommandeRepository
) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
try {
/*
* Récupération du détail de l'utilisateur
*/
$em = $this->getDoctrine()->getManager();
$objetCommande = $commandeRepository->find($id); ///getOneCommande($id);
$objetAbonne = $abonneRepository->find($sessionData['abonneId']);
//var_dump(1);exit;
$objetCommande->setAnnule(1);
$objetCommande->setSiCredit(1);
$em->persist($objetCommande);
$em->flush();
// Recuperation des dernieres commandes liees à ce commande
// $listeCommandeOneCommande = $commandeRepository->getAllcommandeCommande($id);
//Afficher les
return $this->redirect($this->generateUrl('admin_suivi_vente'));
} catch (\Exception $e) {
var_dump($e->getMessage());
exit;
}
$locale = "fr";
}
public function getLineCmdeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository,LigneCommandeRepository $ligneCommandeRepository
) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = 'mise à jour une nouvelle ligne commande!';
/*
* 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);
//$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
//$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
$tabInfoDroit['nomControleur'] = $this->nom;
$tabInfoDroit['descControleur'] = $this->description;
$tabInfoDroit['nomAction'] = $nomAction;
$tabInfoDroit['descAction'] = $descAction;
$em = $this->getDoctrine()->getManager();
$locale = $loginManager->getLocale();
$this->data['locale'] = $locale;
$this->request = $request;
$id = $request->request->get('ids');
// var_dump($id);exit;
// $em->getConnection()->beginTransaction();
try {
$uneLigneCmde = $ligneCommandeRepository->find($id );
if($uneLigneCmde != null){
$add['produit'] = $uneLigneCmde->getProduit()->getNomProduit();
$add['prodId'] = $uneLigneCmde->getProduit()->getId();
$add['id'] = $uneLigneCmde->getId();
$add['qte'] = $uneLigneCmde->getQuantite();
$mtttc = $uneLigneCmde->getQuantite() * $uneLigneCmde->getPrixRigueur()->getInfoPrixrigueur();
$add['mtttc'] = $mtttc ;
$add['prix'] = $uneLigneCmde->getPrixRigueur()->getInfoPrixrigueur();
}else{
$add['produit'] = "";
$add['prodId'] = "";
$add['id'] = 0;
$add['qte'] = "";
$add['mtttc'] ="";
$add['prix'] = "";
}
//$em->getConnection()->commit();
} catch (Exception $exc) {
//$em->getConnection()->rollBack();
throw $exc;
}
return new Response(json_encode(array('add' => $add)));
}
public function deleteLineCmdeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository, UtilisateurRepository $utilisateurRepository,PrixRigueurRepository $prixRigueurRepository ,VilleRepository $villeRepository,CommandeRepository $commandeRepository,
CommandeTmpRepository $commandeTmpRepository,CategorieProduitRepository $categorieProduitRepository,LigneCommandeTmpRepository $ligneCommandeTmpRepository,ClientRepository $clientRepository,CibleRepository $cibleRepository,CaracteristiquePrixRepository $caracteristiquePrixRepository,
TypeOperationRepository $typeOperationRepository,LocalisationRepository $localisationRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,CritereRepository $critereRepository,TypeCritereRepository $typeCritereRepository,
ChauffeurRepository $chauffeurRepository,InfoCritereRepository $infoCritereRepository,LivrerRepository $livrerRepository,InfoLivrerRepository $infoLivrerRepository,SurPlusRepository $surPlusRepository,LigneCommandeRepository $ligneCommandeRepository
) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = 'mise à jour une nouvelle ligne commande!';
/*
* 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);
//$tabInfoDroit['nomDroit'] = Module::MOD_GEST_CONF;
//$tabInfoDroit['descDroit'] = Module::MOD_GEST_CONF_DESC;
$tabInfoDroit['nomControleur'] = $this->nom;
$tabInfoDroit['descControleur'] = $this->description;
$tabInfoDroit['nomAction'] = $nomAction;
$tabInfoDroit['descAction'] = $descAction;
$em = $this->getDoctrine()->getManager();
$locale = $loginManager->getLocale();
$this->data['locale'] = $locale;
$this->request = $request;
$id = $request->request->get('ids');
// var_dump($id);exit;
// $em->getConnection()->beginTransaction();
try {
$add["rep"]="0k";
$uneLigneCmde = $ligneCommandeRepository->find($id );
$em->remove($uneLigneCmde );
$em->flush();
//$em->getConnection()->commit();
} catch (Exception $exc) {
//$em->getConnection()->rollBack();
throw $exc;
}
return new Response(json_encode(array('add' => $add)));
}
/* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne detailOperation.html.twig
*/
public function incrementerLigneCommandeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,OperationManager $operationManager,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository
,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository,TypeOperationRepository $typeOperationRepository, CommandeRepository $commandeRepository, PrixRigueurRepository $prixRigueurRepository
,LigneCommandeRepository $ligneCommandeRepository,ClientRepository $clientRepository,CategorieProduitRepository $categorieProduitRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,ChauffeurRepository $chauffeurRepository,InfoLivrerRepository $infoLivrerRepository ,
UtilisateurRepository $utilisateurRepository, CaisseRepository $caisseRepository, CibleRepository $cibleRepository, CaracteristiquePrixRepository $caracteristiquePrixRepository
) {
$rep = array('etat' => 0, 'msg' => 'Operation bien reussi', 'logout' => FALSE);
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "incrementer les lignes de commande";
/*
* 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";
$rep['etat'] =false;
return new Response(json_encode($rep));
}
/*
* Gestion des droits
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)) {
$this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
$rep['msg'] = "Vous n'avez pas le droit de recuperer la liste des operations d'une commande";
return new Response(json_encode($rep));
} */
$tabLivrer = array();
$tabLigneCommande = array();
/*
* 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')) {
//Recuperation du code de la commande
$commandeId= $request->get('commandeId');
$produitId= $request->get('produitId');
$quantite = $request->get('quantite');
$siQuantite = $request->get('siQuantite');
$typeOperation = $request->get('typeOperation');
$prix=$request->get('prix');
//var_dump($prix);exit;
$em = $this->getDoctrine()->getManager();
$objetUtilisateur = $utilisateurRepository->find($sessionData['id']);
$objetProduit = $produitRepository->find($produitId);
$objetCommande = $commandeRepository->find($commandeId);
if($objetProduit->getCategorie()->getTypeCategorie() != 2){
$objetPrixRigueur = $this->savePrix($em, $prix, $objetProduit, 2, $objetUtilisateur, $prixRigueurRepository, $cibleRepository, $caracteristiquePrixRepository) ;
$detailLigneCommande = $ligneCommandeRepository->findOneBy(['produit'=>$objetProduit, 'commande'=>$objetCommande, "prixrigueur"=>$objetPrixRigueur]);
if($detailLigneCommande == null){
$codeVente = "RV".rand();
$this->saveLigneCommande($em, $codeVente, null, $objetCommande , $objetProduit, $objetPrixRigueur, $quantite, 0, 1,$ligneCommandeRepository) ;
} else{
$quantite = $detailLigneCommande->getQuantite()+$quantite;
$detailLigneCommande->setQuantite($quantite);
$em->persist($detailLigneCommande);
$em->flush();
}
}else{
$tabCompteId = $operationManager->getCompteCaisse($em,$objetUtilisateur->getCaisse()->getId(),$caisseRepository);
$refFacture = "ReT3562";//$ligneCommande["factCodeGenere"] ;//$uneCommande->getCodeCommande();
$idProduit = $objetProduit->getId();
//var_dump($uneLigneCommandeTmp->getTypeOperation(), $objetUtilisateur->getCaisse()->getId()); exit;
$objetTypeOperation = $typeOperationRepository->find($typeOperation);
$idTypeOp = $objetTypeOperation->getId(); //$montantEsp = $infoCommande->getMontantCommande();
$montantAPaye=$prix;
$tabCompteMontant = $operationManager->getRecuperationCompte($em,$idTypeOp,$montantAPaye,$typeOperationRepository);
$compteAuxi =$tabCompteId['compte'];
$infoDepo = $objetTypeOperation->getLibTypeOperation()."/".$objetProduit->getNomProduit(); //.$uneCommande->getClient()->getUtilisateur()->getNom();
//var_dump( $idTypeOp );exit;
if($objetUtilisateur->getVille() == null){
$idVille = 1;
}else{
$idVille = $objetUtilisateur->getVille()->getId();
}
$d = new \DateTime(); //$sessionData['dateChoisie'];
$dateChoisie = $d->format('Y/m/d H:i:s');
$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);
}
$j = 0;
$tabInfoGeneral = array();
foreach ($objetCommande->getLigneCommandes() as $uneLigneCommande) {
$i = 0;
$prixTotalReel = 0;
$reference = 0;
$totalLivre = 0;
foreach ($uneLigneCommande->getLivrers() as $uneLivraison) {
$tabLivrer[$uneLigneCommande->getId()][$i]['nbreLivre'] = $uneLivraison->getNbreLivre();
$tabLivrer[$uneLigneCommande->getId()][$i]['dateLivraison'] = $uneLivraison->getDateLivraison();
$tabLivrer[$uneLigneCommande->getId()][$i]['nbreReste'] = $uneLivraison->getNbreReste();
$tabLivrer[$uneLigneCommande->getId()][$i]['ref'] = $uneLivraison->getRefBonLivraison();
$tabLivrer[$uneLigneCommande->getId()][$i]['prixUnitaire'] = $uneLivraison->getLigneCommande()->getPrixrigueur()->getInfoPrixRigueur();
$prixTotal = (int) $uneLivraison->getNbreLivre() * $uneLivraison->getLigneCommande()->getPrixrigueur()->getInfoPrixRigueur();
$tabLivrer[$uneLigneCommande->getId()][$i]['prixTotal'] = (String) $prixTotal;
$i++;
$reference = $uneLivraison->getRefBonLivraison();
$prixTotalReel= $prixTotalReel + $prixTotal;
$totalLivre = $totalLivre + $uneLivraison->getNbreLivre();
}
//Get Information dernierre commande
$ligneDernCommande = $ligneCommandeRepository->findOneby(['produit'=>$uneLigneCommande->getProduit(),'suivantCommande'=>$uneLigneCommande->getId()]);
$tabLigneCommande[$j]["id"] = $uneLigneCommande->getId();
$tabLigneCommande[$j]["produit"] = $uneLigneCommande->getProduit()->getNomProduit();
if($ligneDernCommande != null){
$tabLigneCommande[$j]["oldQuantite"] = $ligneDernCommande->getQuantite();
$tabLigneCommande[$j]["oldDateCommande"] = $ligneDernCommande->getCommande()->getDateCommande()->format("d/m/Y");
$tabLigneCommande[$j]["oldPrix"] = $ligneDernCommande->getPrixRigueur()->getInfoPrixRigueur();
}else{
$tabLigneCommande[$j]["oldQuantite"] = "-";
$tabLigneCommande[$j]["oldDateCommande"] = "-";
$tabLigneCommande[$j]["oldPrix"] = "-";
}
$tabLigneCommande[$j]["quantite"] = $uneLigneCommande->getQuantite();
$tabLigneCommande[$j]["dateCommande"] = $objetCommande->getDateCommande()->format("d/m/Y");
$tabLigneCommande[$j]["prix"] = $uneLigneCommande->getPrixRigueur()->getInfoPrixRigueur();
$tabLigneCommande[$j]["nombreLivrer"] = $totalLivre ;
$tabLigneCommande[$j]["nombrePrix"] = $uneLigneCommande->getPrixRigueur()->getInfoPrixRigueur();
$j++;
}
$montantTotalCommande = $ligneCommandeRepository->sumLigneCommande($objetCommande->getId());
$objetCommande->setMontantCommande($montantTotalCommande); //
$em->persist($objetCommande);
$em->flush($objetCommande);
$tabInfoGeneral['prixTotalReel']= $prixTotalReel;
$tabInfoGeneral['reference'] = $reference;
$tabInfoGeneral['codeCommande'] = $objetCommande->getCodeCommande();
$tabInfoGeneral['commandeId'] = $objetCommande->getId();
$tabInfoGeneral['fournisseur'] = "TEST";//$detailCommande[0]->getFournisseur()->getNomFournisseur();
$tabInfoGeneral['dateCommande'] = $objetCommande->getDateCommande()->format("d/m/Y");
$tabInfoGeneral['totalLivre'] = $totalLivre;
$rep['reponse'] = $tabLivrer;
$rep['infoGenerale'] = $tabInfoGeneral;
$rep['lignecommande'] = $tabLigneCommande;
// var_dump($listeLigneCommande);exit;
$rep['etat'] = true;
}
return new Response(json_encode($rep));
}
public function getProduitFournisseurAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,
TemplateRepository $templateRepository
,FournisseurRepository $fournisseurRepository, ProduitRepository $produitRepository,TypeOperationRepository $typeOperationRepository, CommandeRepository $commandeRepository, PrixRigueurRepository $prixRigeurRepository
,LigneCommandeRepository $ligneCommandeRepository,ClientRepository $clientRepository,CategorieProduitRepository $categorieProduitRepository,GroupementRepository $groupementRepository,ProducteurRepository $producteurRepository,ChauffeurRepository $chauffeurRepository,InfoLivrerRepository $infoLivrerRepository ,
UtilisateurRepository $utilisateurRepository ) {
//$locale = $loginManager->getLocale();
//$this->data['locale'] = $locale;
//$this->request = $request;
$em = $this->getDoctrine()->getManager();
/*
* Informations de session
*/
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
$fournisseurId = $request->request->get('fournisseurId');
// var_dump($id);exit;
try {
$listeProduit = $produitRepository->getAllFournisseurProduitAjax( $sessionData['abonneId'], $fournisseurId);
$infoFournisseur = $fournisseurRepository->getOneFournisseurAPI($fournisseurId);
$add['all'] = $listeProduit;
$add['fournisseur'] = $infoFournisseur;
} catch (Exception $exc) {
//$em->getConnection()->rollBack();
throw $exc;
}
return new Response(json_encode(array('add' => $add))); //'add'
}
}