<?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\stock\Categorie;
use App\Entity\stock\Fournisseur;
use App\Entity\stock\Facture;
use App\Entity\stock\Fichier;
use App\Repository\stock\LigneCommandeRepository;
use App\Repository\stock\CommandeRepository;
use App\Repository\stock\InventaireRepository;
use App\Form\stock\CategorieType;
use App\Form\stock\FichierType;
use App\Services\user\LoginManager;
use Types\stock\TypeMenu;
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\stock\TypeOperationRepository;
use App\Repository\stock\VilleRepository;
use App\Repository\stock\CaisseRepository;
use App\Repository\stock\FournisseurRepository;
use App\Repository\prod\ProducteurRepository;
use App\Repository\cms\TemplateRepository;
use App\Repository\prod\GroupementRepository;
use App\Repository\stock\CategorieProduitRepository;
use PHPExcel;
use PHPExcel_IOFactory;
use PHPExcel_Style_Fill;
use PHPExcel_Style_Alignment;
use PHPExcel_Style;
use PHPExcel_Worksheet_ColumnDimension;
use PHPExcel_Style_NumberFormat;
use PHPExcel_Writer_Excel2007;
use Symfony\Component\HttpFoundation\Request;
use App\ControllerModel\user\paramUtilTrait;
use App\Types\stock\TypeStock;
use App\Services\stock\OperationManager;
class OperationController extends AbstractController {
use paramUtilTrait;
protected $nom = 'CategorieController';
protected $description = 'Controlleur qui gère les opérations';
protected $response;
protected $logMessage = ' [ CategorieController ] ';
/**
* Déclaration de l'entity manager.
*
* @var
*/
protected $em;
public function __construct(TranslatorInterface $translator, LigneCommandeRepository $ligneCommandeRepository, OperationManager $operationManager) {
//parent::__construct();
$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_OP;
$this->moduleDesc = Module::MOD_GEST_OP_DESC;
$this->translator = $translator;
$this->ligneCommandeRepository= $ligneCommandeRepository;
$this->operationManager = $operationManager;
}
/**
* Methode s'occupant de l'ajout du produit.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
* @return twig d'ajout d'un abonne ajouterproduit.html.twig
*/
public function getAlimenterCaisseAction(Request $request, $type,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
TypeOperationRepository $typeOperationRepository,VilleRepository $villeRepository, FournisseurRepository $fournisseurRepository, AbonneRepository $abonneRepository,
ProducteurRepository $producteurRepository) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Alimenter les caisses extérieures ";
$locale ='fr';
$valRetour =$this->gestionDroitUtil($request, $nomAction, $descAction,$this->moduleTitre,$this->moduleDesc, $loginManager,$paramRepositor,$connexionRepository, $actionRepository, $moduleRepository, $controleurRepository, $profilRepository );
if($valRetour==1){
return $this->redirect($this->generateUrl('app_logout'));
}elseif($valRetour==2){
return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
}
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
$em = $this->getDoctrine()->getManager();
$prod = $sessionData["produit_id"];
$infoPartenaire = $this->getInfoPartenaire($em, $this->getAbonne($em, $sessionData['abonneId'],$abonneRepository));
try {
} catch (\Exception $e) {
var_dump($e->getMessage());
exit;
}
$infoPartenaire = $this->getInfoPartenaire($em, $this->getAbonne($em, $sessionData['abonneId'],$abonneRepository));
$typeOperation = $typeOperationRepository->getListeTypeOperation($total=0, $page=0, $articles_per_page=0, $sessionData["abonneId"]) ; //getListeTypeOperationSimple($sessionData["abonneId"]);
//var_dump($typeOperation);exit;
$listeFournisseur = $fournisseurRepository->getAllFournisseur($type=2, $sessionData['abonneId'], $infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
//liste de producteurs
$queryResult = $producteurRepository->getAllProducteur(0, 0, 0, 0, 0, 0, 0, 0, 0,1,5,array(),0,$sessionData['abonneId'], 0, 0,0,0,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'],0,0,0);
/*
* Préparation des informations que nous allons traiter sur le twig
*/
//$this->data['listeProduit'] = $listeProduit;
//recupération de la liste des villes
$listeVille = $villeRepository->getAllActiveVille($prod);
$idTypeOperation = TypeStock::TYPEOPERALIMCAISSE;
$this->data['locale'] = $locale;
$this->data['typeOperation'] = $typeOperation;
$this->data['type'] = $type;
$this->data['listeVille'] = $listeVille;
$this->data['listeProducteur'] = $queryResult['data'];
$this->data['idTypeOperation'] = $idTypeOperation;
$this->data['listeFournisseur'] = $listeFournisseur;
$this->data['actionRepository'] = $actionRepository;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Operation/alimenterCaisse.html.twig', $this->data, $this->response);
}
/**
* Methode s'occupant de l'ajout du produit.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
* @return twig d'ajout d'un abonne ajouterproduit.html.twig
*/
public function getPageOperationAction(Request $request, $codecommande, $type) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Avoir accès à la page de paiement des commandes livrées";
/*
* Préparation du message de log
*/
$this->logMessage .= ' [ ' . $nomAction . ' ] ';
/*
* Service de gestion des droits
*/
/*
* Informations de session
*/
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
/*
* Locale en cours
*/
$locale = $loginManager->getLocale();
$this->data['locale'] = $locale;
/*
* On vérifie si l'utilisateur est connecté
*/
$status = $loginManager->isConnecte($nomAction, $paramRepositor,$connexionRepository, $actionRepository);
if ($status['isConnecte']) {
/*
* Au cas ou l'utilisateur est connecté on vérifie s'il nest pas innactif. S'il est innactif
* on garde en mémoire flash la route actuelle pour effectuer une redirection lors de la prochaine connexion
*/
if ($status['isInnactif']) {
$routeName = $request->get('_route');
$routeParams = $request->get('_route_params');
$this->get('session')->getFlashBag()->add('restoreUrl', $this->generateUrl($routeName, $routeParams));
$this->get('session')->getFlashBag()->add('ina', $this->translator->trans("site.long.periode"));
return $this->redirect($this->generateUrl('app_logout'));
}
/*
* Seuls les utilisateurs admins ont le droit d'acceder à cette action
*/
if (!$status['isUser']) {
return $this->redirect($this->generateUrl('app_logout'));
}
} else {
return $this->redirect($this->generateUrl('app_logout'));
}
/*
* Gestion des droits
*/
if (!$loginManager->getOrSetActions(Module::MOD_GEST_PROD, Module::MOD_GEST_PROD_DESC, $this->getNomClassRun(__CLASS__), $this->description, $nomAction, $descAction, $sessionData['idProfil'], $moduleRepository, $controleurRepository, $actionRepository, $profilRepository)) {
$this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
$this->get('session')->getFlashBag()->add('access', "Vous n'avez pas le droit d'accéder à cette page");
return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
}
try {
} catch (\Exception $e) {
var_dump($e->getMessage());
exit;
}
$em = $this->getDoctrine()->getManager();
$typeOperation = $em->getRepository($this->stockBundle . 'TypeOperation')->getListeTypeOperationSimple( $sessionData['abonneId']);
/*
* Préparation des informations que nous allons traiter sur le twig
*/
//$this->data['listeProduit'] = $listeProduit;
$this->data['locale'] = $locale;
$this->data['codecommande'] = $codecommande;
$this->data['typeOperation'] = $typeOperation;
$this->data['type'] = $type;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Operation/operationPaiement.html.twig', $this->data, $this->response);
}
/**
* Methode s'occupant de l'ajout du produit.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
* @return twig d'ajout d'un abonne ajouterproduit.html.twig
*/
public function traterFichierDonneeExcelAction(Request $request, $id) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Expoter le fichier excel comportant les avances et livraison des collecteurs ";
$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();
$objetChemin = $em->getRepository($this->stockBundle . 'Fichier')->find($id);
//Recuperation du chemin du fichier
$chenimFichierExcel = __DIR__ . '/../../../public/' . $objetChemin->getTitreImage();
$restCommande =array();
$collectuer =null;
$objetProduit = $em->getRepository($this->stockBundle . 'Produit')->find(\Types\stock\TypeStock::IDPROD);
$em->getConnection()->beginTransaction();
try {
/*
* Récupération des la liste des critères
*/
$array_data = array();
$XLSXDocument = new \PHPExcel_Reader_Excel2007();
$Excel = $XLSXDocument->load($chenimFichierExcel);
// get all the row of my file
$rowIterator = $Excel->getActiveSheet()->getRowIterator();
$i = 0;
foreach ($rowIterator as $row) {
$cellIterator = $row->getCellIterator();
// Loop all cells, even if it is not set
$cellIterator->setIterateOnlyExistingCells(false);
$rowIndex = $row->getRowIndex();
$array_data[$rowIndex] = array('A' => '', 'B' => '', 'C' => '', 'D' => '', 'E' => '', 'F' => '', 'G' => '', 'H' => '', 'N' => '', 'O' => '', 'P' => '', 'R' => '');
if ($rowIndex >= $objetChemin->getDebutTraitement()) {
//$Excel->ge('A' . $IndexLigne, $value);
foreach ($cellIterator as $cell) {
if ($cell->getValue() != null) {
if ('A' == $cell->getColumn()) {
$numeroCommande = $cell->getValue();
} elseif ('B' == $cell->getColumn()) {
$liquidationCommande = $cell->getValue();
} elseif ('C' == $cell->getColumn()) {
$dateCommande = $cell->getValue();
} elseif ('F' == $cell->getColumn()) {
$zoneCommande = $cell->getValue();
} elseif ('G' == $cell->getColumn()) {
$collectuer = $cell->getValue();
} elseif ('H' == $cell->getColumn()) {
$operation = $cell->getValue();
//var_dump($operation);exit;
} elseif ('N' == $cell->getColumn()) {
$quantite = $cell->getValue();
} elseif ('O' == $cell->getColumn()) {
$avance = $cell->getValue();
} elseif ('P' == $cell->getColumn()) {
$livre = $cell->getValue();
} elseif ('Q' == $cell->getColumn()) {
$prixUnitaire = $cell->getValue();
} elseif ('R' == $cell->getColumn()) {
$prixTotal = $cell->getValue();
}
}
}
// if($i == 0){
// $restCommande[$collectuer] = 0;
//
// }
// if( stripos($numeroCommande, 'L')===FALSE){
if ($collectuer != null) {
$laDateComma = $this->traiterInfoDate($dateCommande);
$objetCollecteur = $this->ajouterCollecteur($em, $collectuer,$zoneCommande);
//var_dump($objetCollecteur->getId());
if ($operation == "Avance") {
$prixRig = $this->ajouterPrix($em, $prixUnitaire, $objetProduit,$laDateComma);
$montantTotal = (int) $prixUnitaire * (int) $quantite;
$this->recuperationDeVille($em, $zoneCommande, $objetCollecteur);
$objetCommande = $this->ajouterLaCommande($em, $objetCollecteur, $numeroCommande, $laDateComma, $montantTotal);
$this->ajouterLaLigneCommande($em, $objetCollecteur, $objetCommande, $montantTotal, $quantite, $objetProduit, $prixRig);
} elseif ($operation == "Livraison") {
if(!array_key_exists($objetCollecteur->getId(), $restCommande)){
$restCommande[$objetCollecteur->getId()] = 0;
//var_dump($objetCollecteur->getId());
}
//$objetCommande = $this->ajouterLaCommande($em, $objetCollecteur, $liquidationCommande, $laDateComma, $montantTotal);
//var_dump($restCommande["'".$collectuer]."'");exit;
//var_dump($rest&Commande[$objetCollecteur->getId()]);exit;
$restCommande[$objetCollecteur->getId()] = $this->ajouterLaLivraison($em, $numeroCommande, $quantite, $laDateComma, $collectuer, $numeroCommande,$zoneCommande,$restCommande[$objetCollecteur->getId()]);
$this->upDateSurPlus($em, $collectuer,$restCommande[$objetCollecteur->getId()]);
}
/*else {
$this->traiterAjustementCompte($em, $numeroCommande, $quantite, $prixUnitaire, $objetCollecteur, $objetProduit, $laDateComma);
}*/
$i++;
}
}
$collectuer = null;
//Traitement des operations
//Enregistrement des opérations des
}
$em->getConnection()->commit();
//$listeProduit = $em->getRepository($this->stockBundle . 'Produit')->getAllProduit();
//$listeProduit = $em->getRepository($this->stockBundle . 'Produit')->getAllProduit();
} catch (\Exception $exc) {
$em->getConnection()->rollBack();
throw $exc;
}
$objetChemin->setEtatFichier(2);
$objetChemin->setTitreImage($objetChemin->getTitreImage());
$em->persist($objetChemin);
$em->flush();
/*
* Aller sur la page de la liste des fichiers
*/
return $this->redirect($this->generateUrl('admin_fichiers'));
}
/**
* Methode s'occupant de l'ajout du produit.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
* @return twig d'ajout d'un abonne ajouterproduit.html.twig
*/
public function traterFichierDonneeResiduelExcelAction(Request $request, $id) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Expoter le fichier excel comportant les avances et livraison des collecteurs ";
$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();
$objetChemin = $em->getRepository($this->stockBundle . 'Fichier')->find($id);
//Recuperation du chemin du fichier
$chenimFichierExcel = __DIR__ . '/../../../public/' . $objetChemin->getTitreImage();
$restCommande =array();
$collectuer =null;
$objetProduit = $em->getRepository($this->stockBundle . 'Produit')->find(\Types\stock\TypeStock::IDPROD);
$em->getConnection()->beginTransaction();
try {
/*
* Récupération des la liste des critères
*/
$array_data = array();
$XLSXDocument = new \PHPExcel_Reader_Excel2007();
$Excel = $XLSXDocument->load($chenimFichierExcel);
// get all the row of my file
$rowIterator = $Excel->getActiveSheet()->getRowIterator();
$i = 0;
foreach ($rowIterator as $row) {
$cellIterator = $row->getCellIterator();
// Loop all cells, even if it is not set
$cellIterator->setIterateOnlyExistingCells(false);
$rowIndex = $row->getRowIndex();
$array_data[$rowIndex] = array('A' => '', 'B' => '', 'C' => '', 'D' => '', 'E' => '', 'F' => '', 'G' => '');
if ($rowIndex >= $objetChemin->getDebutTraitement()) {
//$Excel->ge('A' . $IndexLigne, $value);
foreach ($cellIterator as $cell) {
if ($cell->getValue() != null) {
if ('A' == $cell->getColumn()) {
$dateCommande = $cell->getValue();
} elseif ('B' == $cell->getColumn()) {
$sac = $cell->getValue();
} elseif ('C' == $cell->getColumn()) {
$collectuer = $cell->getValue();
} elseif ('D' == $cell->getColumn()) {
$nomCollecteur = $cell->getValue();
} elseif ('E' == $cell->getColumn()) {
$quantite = $cell->getValue();
} elseif ('F' == $cell->getColumn()) {
$prixUnitaire = $cell->getValue();
} elseif ('G' == $cell->getColumn()) {
$prixTotal = $cell->getValue();
}
}
}
// if($i == 0){
// $restCommande[$collectuer] = 0;
//
// }$quantite
// if( stripos($numeroCommande, 'L')===FALSE){
if ($collectuer != null) {
$laDateComma = $this->traiterInfoDate($dateCommande);
$objetCollecteur = $this->ajouterCollecteur($em, $collectuer,$objetChemin->getVille()->getNomVille());
$numeroCommande = "R".$objetChemin->getVille()->getNomVille()."_".$i;
$prixRig = $this->ajouterPrix($em, $prixUnitaire, $objetProduit,$laDateComma);
$montantTotal = (int) $prixUnitaire * (int) $quantite;
$this->recuperationDeVille($em, $objetChemin->getVille()->getNomVille(), $objetCollecteur);
$objetCommande = $this->ajouterLaCommande($em, $objetCollecteur, $numeroCommande, $laDateComma, $montantTotal);
$infoCommande = $this->ajouterLaLigneCommande($em, $objetCollecteur, $objetCommande, $montantTotal, $quantite, $objetProduit, $prixRig);
$this->ajouterLaLivraisonResiduelle($em, $numeroCommande, $quantite, $laDateComma, $collectuer, $numeroCommande,$objetChemin->getVille()->getNomVille(),$infoCommande->getId());
$i++;
}
}
$collectuer = null;
//Traitement des operations
//Enregistrement des opérations des
}
$em->getConnection()->commit();
//$listeProduit = $em->getRepository($this->stockBundle . 'Produit')->getAllProduit();
//$listeProduit = $em->getRepository($this->stockBundle . 'Produit')->getAllProduit();
} catch (\Exception $exc) {
$em->getConnection()->rollBack();
throw $exc;
}
$objetChemin->setEtatFichier(2);
$objetChemin->setTitreImage($objetChemin->getTitreImage());
$em->persist($objetChemin);
$em->flush();
/*
* Aller sur la page de la liste des fichiers
*/
return $this->redirect($this->generateUrl('admin_fichiers'));
}
public function ajouterCollecteur($em, $nomCollecteur,$ville='Kpalimé') {
//objet collecteur
$criteria = array('codeFournisseur' => $nomCollecteur);
$unFournisseur = $em->getRepository($this->stockBundle . 'Fournisseur')->findOneBy($criteria);
if ($unFournisseur == null) {
$unFournisseur = new Fournisseur();
$unFournisseur->setCodeFournisseur($nomCollecteur);
$unFournisseur->setNomFournisseur($nomCollecteur);
$unFournisseur->setRessourceFournisseur($nomCollecteur);
$unFournisseur->setAdresseFournisseur($ville);
$unFournisseur->setEtatFournisseur(\Types\user\TypeEtat::ACTIF);
$unFournisseur->setContactFournisseur('0000000');
$unFournisseur->setDateModification(new \DateTime());
$unFournisseur->setDatePublication(new \DateTime());
$em->persist($unFournisseur);
$em->flush();
}
return $unFournisseur;
}
public function ajouterPrix($em, $prix, $objetProduit,$laDateComma=null) {
//objet collecteur
$criteria = array('infoPrixRigueur' => $prix);
$ancienPrix = $em->getRepository($this->stockBundle . 'PrixRigueur')->findOneBy($criteria);
if ($ancienPrix != null) {
$ancienPrix->setDatePublication($laDateComma);
} else {
$this->initialiserAncienPrixZero($em, 0);
$ancienPrix = new \Entity\stock\PrixRigueur();
$ancienPrix->setInfoPrixRigueur($prix);
$ancienPrix->setDatePublication($laDateComma);
$ancienPrix->setProduit($objetProduit);
$ancienPrix->setEtatPrixRigueur(\Types\user\TypeEtat::INACTIF);
}
$em->persist($ancienPrix);
$em->flush();
return $ancienPrix;
}
public function traiterInfoDate($date) {
//traitement
//$rest = substr("abcdef", -3, 1);
$date = $date - 1;
$date = date("m/d/y", mktime(0, 0, 0, 1, $date, 1900));
$objetDate = new \DateTime($date);
// var_dump($objetDate);exit;
return $objetDate;
}
public function recuperationDeVille($em, $nomVille, $objetFournisseur) {
//var_dump($nomVille);exit;
$criteria = array('nomVille' => $nomVille);
$ville = $em->getRepository($this->stockBundle . 'Ville')->findOneBy($criteria);
if ($ville == null) {
$ville = new \Entity\stock\Ville();
$ville->setNomVille($nomVille);
$em->persist($ville);
$em->flush();
}
//recuperation de l'utilisateur
$criteriaUtil = array('ville' => $ville);
$utilisateur = $em->getRepository($this->userBundle . 'Utilisateur')->findOneBy($criteriaUtil);
$criteriaSeTrouver = array('ville' => $ville, 'utilisateur' => $utilisateur, 'fournisseur' => $objetFournisseur );
$seTrouve = $em->getRepository($this->stockBundle . 'SeTrouver')->findOneBy($criteriaSeTrouver);
if($seTrouve == null){
//Enrégistrement pour lie utilisateur ville et collecteur
$seTrouve = new \Entity\stock\SeTrouver();
$seTrouve->setDateLivraison(new \DateTime());
$seTrouve->setFournisseur($objetFournisseur);
$seTrouve->setUtilisateur($utilisateur);
$seTrouve->setVille($ville);
$em->persist($seTrouve);
$em->flush();
}
return $seTrouve;
}
public function ajouterLaCommande($em, $objetCollecteur, $numeroCommande, $objetDate, $montantCommande) {
// $uneCommande = null;
// //Verifier si la commande existe
// $criteriaCode = array('codeCommande' => $numeroCommande, 'fournisseur' => $objetCollecteur);
// $uneCommande = $em->getRepository($this->stockBundle . 'Commande')->findOneBy($criteriaCode);
// if (count($uneCommande) == 0) {
$uneCommande = new \Entity\stock\Commande();
$uneCommande->setCodeCommande($numeroCommande);
$uneCommande->setRefBonCommande($numeroCommande);
$uneCommande->setFournisseur($objetCollecteur);
$uneCommande->setDateCommande($objetDate);
$uneCommande->setMontantCommande($montantCommande);
$uneCommande->setMontantResteCommande(0);
$uneCommande->setEtatCommande(\Types\user\TypeEtat::ACTIF);
$uneCommande->setDateModification(new \DateTime());
$uneCommande->setDatePublication(new \DateTime());
$em->persist($uneCommande);
$em->flush();
// }
//traitement
return $uneCommande;
}
public function ajouterLaLigneCommande($em, $objetCollecteur, $objetCommande, $montantCommande, $quantiteCommande, $objetProduit, $objetPrix) {
$uneLigneCommande = null;
if ($objetCommande != null) {
$uneLigneCommande = new \Entity\stock\LigneCommande();
$uneLigneCommande->setMontantAutreTaxe(0);
$uneLigneCommande->setCommande($objetCommande);
$uneLigneCommande->setFournisseur($objetCollecteur);
$uneLigneCommande->setProduit($objetProduit);
$uneLigneCommande->setMontantHt($montantCommande);
$uneLigneCommande->setPrixrigueur($objetPrix);
$uneLigneCommande->setQuantiteReste($quantiteCommande);
$uneLigneCommande->setQuantiteLivre(0);
$uneLigneCommande->setQuantite($quantiteCommande);
$uneLigneCommande->setEtatLigneCommande(\Types\user\TypeEtat::ACTIF);
$em->persist($uneLigneCommande);
$em->flush();
}
return $uneLigneCommande;
}
public function traiterAjustementCompte($em, $codeCommande, $quantiteCommande, $montantCommande, $objetCollecteur, $objetProduit, $dateCommande) {
// var_dump(strpos($codeCommande, "REG/"));
$prixActuel = 0;
$codeCommande = str_replace("REG/", "", $codeCommande);
$criteriaCode = array('codeCommande' => $codeCommande, 'fournisseur' => $objetCollecteur);
$objetCommande = $em->getRepository($this->stockBundle . 'Commande')->findOneBy($criteriaCode);
$criteriaLigneCom = array('commande' => $objetCommande, 'fournisseur' => $objetCollecteur, 'quantite' => $quantiteCommande);
$uneLigneCommande = $em->getRepository($this->stockBundle . 'LigneCommande')->getObjetLigneCommande($objetCollecteur->getId(), $quantiteCommande, $dateCommande);
if(count($uneLigneCommande)!=0){
$uneLigneCommande = $uneLigneCommande[0];
}
if ($uneLigneCommande != null) {
// var_dump(strpos($codeCommande, "REG/"));exit;
$prixActuel = (int)$montantCommande+(int)$uneLigneCommande->getPrixRigueur()->getInfoPrixRigueur();
$dateJour = new \DateTime();
$objetPrix = $this->ajouterPrix($em, $prixActuel, $objetProduit,$dateJour );
$uneLigneCommande->setPrixrigueur($objetPrix);
$uneLigneCommande->setTauxTva($montantCommande);
$em->persist($uneLigneCommande);
$em->flush();
//var_dump($codeCommande,$objetCollecteur->getNomFournisseur());
//exit;
}
return $uneLigneCommande;
}
public function ajouterLaLivraison($em, $codeCommande, $quantiteLivre, $laDateComma="", $nomCollecteur="", $codeLivraison="",$ville ="Kpalime",$commandeReste) {
//objet collecteur
$resteAEnvoye = 0;
$quantiteLivrerAEnregistre = $quantiteLivre;
$quantiteLivre = (int) $quantiteLivre + (int)$this->recupererSurPlus($em, $nomCollecteur);
$em->getConnection()->beginTransaction();
try {
$ancienFournisseur = $this->ajouterCollecteur($em, $nomCollecteur,$ville);
$arreter =1;
$uneLivraison = null;
$infoLivrer = new \Entity\stock\InfoLivrer();
$infoLivrer->setNbreReste(0);
$infoLivrer->setNbreTotalLivre($quantiteLivre);
$infoLivrer->setRefBonLivraison($codeCommande);
$infoLivrer->setFournisseur($ancienFournisseur);
$infoLivrer->setRefBonReception($codeCommande);
$infoLivrer->setNbreSaisie($quantiteLivrerAEnregistre);
$infoLivrer->setDateLivraison($laDateComma);
$em->persist($infoLivrer);
$em->flush();
$LigneCommande = $em->getRepository($this->stockBundle . 'LigneCommande')->findBy(array('etatLigneCommande'=>1,'fournisseur'=>$ancienFournisseur));
foreach ( $LigneCommande as $unObjetLigneCommande) {
//var_dump($unObjetLigneCommande->getId());exit;
if ($unObjetLigneCommande->getQuantiteReste() != 0) {
$uneLivraison = new \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;
}
$em->persist($unObjetLigneCommande);
$em->flush();
$uneLivraison->setLignecommande($unObjetLigneCommande);
$uneLivraison->setDateLivraison(new \DateTime());
$uneLivraison->setEtatLivraison(1);
$uneLivraison->setNbreReste($QuantiteTotalReste);
$uneLivraison->setNombreRestantLivrer($QuantiteTotalReste);
$uneLivraison->setInfolivrer($infoLivrer);
$uneLivraison->setRefBonLivraison('L'.$unObjetLigneCommande->getCommande()->getCodeCommande());
$uneLivraison->setRefBonReception('L'.$unObjetLigneCommande->getCommande()->getCodeCommande());
$em->persist($uneLivraison);
$em->flush();
}
}
}
$em->getConnection()->commit();
} catch (Exception $exc) {
$em->getConnection()->rollBack();
throw $exc;
}
return $quantiteLivre;
}
public function ajouterLaLivraisonResiduelle($em, $codeCommande, $quantiteLivre, $laDateComma="", $nomCollecteur="", $codeLivraison="",$ville ="Kpalime",$idLigneCommande) {
//objet collecteur
$em->getConnection()->beginTransaction();
try {
$ancienFournisseur = $this->ajouterCollecteur($em, $nomCollecteur,$ville);
$arreter =1;
$uneLivraison = new \Entity\stock\Livrer(); //Création de l'abjet Livrer
$infoLivrer = new \Entity\stock\InfoLivrer();
$infoLivrer->setNbreReste(0);
$infoLivrer->setNbreTotalLivre($quantiteLivre);
$infoLivrer->setRefBonLivraison($codeCommande);
$infoLivrer->setFournisseur($ancienFournisseur);
$infoLivrer->setRefBonReception($codeCommande);
$infoLivrer->setNbreSaisie($quantiteLivre);
$infoLivrer->setDateLivraison($laDateComma);
$em->persist($infoLivrer);
$em->flush();
$unObjetLigneCommande = $em->getRepository($this->stockBundle . 'LigneCommande')->find($idLigneCommande);
$unObjetLigneCommande->setQuantiteLivre($unObjetLigneCommande->getQuantite());
$unObjetLigneCommande->setEtatLigneCommande(2);
$em->persist($unObjetLigneCommande);
$em->flush();
$this->mettreAJourCommande($em,$unObjetLigneCommande->getCommande()->getId());
$uneLivraison->setLignecommande($unObjetLigneCommande);
$uneLivraison->setDateLivraison(new \DateTime());
$uneLivraison->setEtatLivraison(1);
$uneLivraison->setNbreReste(0);
$uneLivraison->setNbreLivre($quantiteLivre);
$uneLivraison->setNombreRestantLivrer(0);
$uneLivraison->setInfolivrer($infoLivrer);
$uneLivraison->setRefBonLivraison('L'.$unObjetLigneCommande->getCommande()->getCodeCommande());
$uneLivraison->setRefBonReception('L'.$unObjetLigneCommande->getCommande()->getCodeCommande());
$em->persist($uneLivraison);
$em->flush();
$em->getConnection()->commit();
} catch (Exception $exc) {
$em->getConnection()->rollBack();
throw $exc;
}
return $quantiteLivre;
}
/**
* Methode s'occupant de lister les Operations.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne listeOperation.html.twig
*/
public function exportOpertionAction(Request $request, $type, $etat, $nomcol, $datefin, $datedeb, $ville, $util, $silivre, $numcom) {
//$session = $this->getRequest()->getSession();
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
$prod = $sessionData["produit_id"];
//var_dump($prod);exit;
$em = $this->getDoctrine()->getManager();
//var_dump($currentConnete["listeActions_abonne"]);exit;
global $listeOperation, $articles_per_page, $last_page, $previous_page, $next_page, $total;
//$typeOperation = $em->getRepository("adminStockBundle:TypeOperation")->findAll();
$total = 10; //$em->getRepository("adminStockBundle:Operation")->getTotalOperationsBrouillard($caisse, $datedeb, $datefin, $typeop, $typedate);
$listeOperation = $em->getRepository($this->stockBundle . 'Commande')->getListeRechercheCommande($nomcol, $datefin, $datedeb, $ville, $util, $silivre, $numcom,$prod);
$listeOperation3 = $em->getRepository($this->stockBundle . 'Commande')->getListeRechercheCommande($nomcol, $datefin, $datedeb, $ville, $util, $silivre, $numcom,$prod);
$listeOperation2 = $em->getRepository($this->stockBundle . 'Commande')->getListeRechercheInfoTotalCommande($nomcol, $datefin, $datedeb, $ville, $util, $silivre, $numcom,$prod);
$excelService = new PHPExcel();
$excelService->getProperties()
->setTitle("DETAILS DES OPERATIONS DE GESTIONS DES AVANCES ET DE LIVRAISON DES COLLECTES DE CACAO ")
->setDescription("DETAILS DES OPERATIONS DE GESTIONS DES AVANCES ET DE LIVRAISON DES COLLECTES DE CACAO");
$excelService->getActiveSheet()->setTitle('Liste des Operations ');
$excelService->setActiveSheetIndex(0);
$lesCriteres = $this->RecuperCritereRecherche($em, $nomcol, $datefin,$datedeb, $ville, $util, $silivre, $numcom);
//create the response
$excelService->setActiveSheetIndex(0)
->setCellValue('A1', '')//DETAILS DES OPERATIONS DE GESTIONS DES AVANCES ET DE LIVRAISON DES COLLECTES DE CACAO
->setCellValue('B1', '')
->setCellValue('C1', '')
->setCellValue('E1', '')
->setCellValue('F1', '')
->setCellValue('G1', '')
->setCellValue('H1', '')
->setCellValue('I1', '')
->setCellValue('J1', '')
->setCellValue('K1', '')
->setCellValue('L1', '')
->setCellValue('M1', '')
->setCellValue('N1', '');
$excelService->setActiveSheetIndex(0)
->setCellValue('A3', 'Collecteur :')
->setCellValue('B3',$lesCriteres['nomCollecteur']);
$excelService->setActiveSheetIndex(0)
->setCellValue('A4', 'Ville :')
->setCellValue('B4', $lesCriteres['nomVille']);
$excelService->setActiveSheetIndex(0)
->setCellValue('A5', 'Gérant :')
->setCellValue('B5', $lesCriteres['nomGerant']);
$excelService->setActiveSheetIndex(0)
->setCellValue('A6', 'Stuat. livrée :')
->setCellValue('B6', $lesCriteres['livre']);
$excelService->setActiveSheetIndex(0)
->setCellValue('A7', 'Date début :')
->setCellValue('B7', $lesCriteres['dateDebut']);
$excelService->setActiveSheetIndex(0)
->setCellValue('A8', 'Date fin')
->setCellValue('B8', $lesCriteres['dateFin']);
$excelService->setActiveSheetIndex(0)
->setCellValue('A10', 'N')
->setCellValue('B10', 'Liquidations')
->setCellValue('C10', 'Date')
->setCellValue('D10', 'Mois')
->setCellValue('E10', 'Année')
->setCellValue('F10', 'Zone')
->setCellValue('G10', 'Collecteurs')
->setCellValue('H10', 'Opérations')
->setCellValue('I10', 'Quantité')
->setCellValue('J10', 'Avce')
->setCellValue('K10', 'Livrée')
->setCellValue('L10', 'PU')
->setCellValue('M10', 'MONTANT');
$aux = 11;
if ($type == 1) {
//var_dump(count($listeOperation),count($listeOperation));exit;
foreach ($listeOperation2 as $row) {
$datop = null;
$daval = null;
if($row['typeOperation'] == 1){
$excelService->setActiveSheetIndex(0)
->setCellValue('A' . $aux, $row['code']) //$row['dateOperation']
->setCellValue('B' . $aux, $row['codeCommandeLivraison'])
->setCellValue('C' . $aux, $row['date']->format("d/M/Y"))
->setCellValue('D' . $aux, $row['date']->format("m"))//$row['dateValeur']
->setCellValue('E' . $aux, $row['date']->format("Y"))
->setCellValue('F' . $aux, $row['zone'])
->setCellValue('G' . $aux, $row['collecteur'])
->setCellValue('H' . $aux, 'Avance')
->setCellValue('I' . $aux, $row['quantite'])
->setCellValue('J' . $aux, $row['quantite'])
->setCellValue('K' . $aux, '')
->setCellValue('L' . $aux, $row['prixUnitaire'])
->setCellValue('M' . $aux, '-')
;
}else{
$excelService->setActiveSheetIndex(0)
->setCellValue('A' . $aux, $row['code']) //$row['dateOperation']
->setCellValue('B' . $aux, $row['codeCommandeLivraison'])
->setCellValue('C' . $aux, $row['date']->format("d/M/Y"))
->setCellValue('D' . $aux, $row['date']->format("m"))//$row['dateValeur']
->setCellValue('E' . $aux, $row['date']->format("Y"))
->setCellValue('F' . $aux, $row['zone'])
->setCellValue('G' . $aux, $row['collecteur'])
->setCellValue('H' . $aux, 'Livraison')
->setCellValue('I' . $aux, $row['quantite'])
->setCellValue('J' . $aux, "")
->setCellValue('K' . $aux, $row['quantite'])
->setCellValue('L' . $aux, $row['prixUnitaire'])
->setCellValue('M' . $aux, '-');
}
$this->applyStyleCell($excelService, $aux);
$aux++;
$this->cellAutoSize($excelService);
// Set active sheet index to the first sheet
$excelService->getActiveSheet()->getStyle('M' . $aux)->getNumberFormat()->applyFromArray(
array(
'code' => '# ### ### ### ###_-'
)
);
}
$response = new Response();
//
} //elseif ($imprimer == 1) {
if ($type == 1) {
//$response = $excelService->getResponse();
$response->headers->set('Content-Type', 'text/vnd.ms-excel; charset=utf-8');
$response->headers->set('Content-Disposition', 'attachment;filename=fichier_excel_operation_gestion_collect-' . date("Y_m_d_His") . '.xls');
//$response->prepare();
$response->sendHeaders();
$objWriter = PHPExcel_IOFactory::createWriter($excelService, 'Excel5');
$objWriter->save('php://output');
exit();
}
if ($type == 5) {
// var_dump(count($listeOperation2));exit;
foreach ($listeOperation3 as $row) {
$datop = null;
$daval = null;
// if($row['typeOperation'] == 1){
//var_
$excelService->setActiveSheetIndex(0)
->setCellValue('A' . $aux, $row->getDateCommande()->format("d/m/Y")) //$row['dateOperation']
->setCellValue('B' . $aux, $row->getCodeCommande())
->setCellValue('C' . $aux, '')
->setCellValue('D' . $aux, '')//$row['dateValeur']
->setCellValue('E' . $aux, '')
->setCellValue('F' . $aux, $row->getLigneCommandes()[0]->getQuantite()*$row->getLigneCommandes()[0]->getPrixRigueur()->getInfoPrixRigueur())
->setCellValue('G' . $aux, '')
->setCellValue('H' . $aux, '')
->setCellValue('I' . $aux, 'Avance à '.$row->getFournisseur()->getNomFournisseur())
->setCellValue('J' . $aux, '')
->setCellValue('K' . $aux, '')
->setCellValue('L' . $aux, '')
->setCellValue('M' . $aux, '')
;
$this->applyStyleCell($excelService, $aux);
$aux++;
$this->cellAutoSize($excelService);
// Set active sheet index to the first sheet
$excelService->getActiveSheet()->getStyle('M' . $aux)->getNumberFormat()->applyFromArray(
array(
'code' => '# ### ### ### ###_-'
)
);
$excelService->getActiveSheet()
->getStyle('A' . $aux)
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH);
}
$response = new Response();
//
} //elseif ($imprimer == 1) {
if ($type == 5) {
//$response = $excelService->getResponse();
$response->headers->set('Content-Type', 'text/vnd.ms-excel; charset=utf-8');
$response->headers->set('Content-Disposition', 'attachment;filename=fichier_excel_operation_gestion_collect-' . date("Y_m_d_His") . '.xls');
//$response->prepare();
$response->sendHeaders();
$objWriter = PHPExcel_IOFactory::createWriter($excelService, 'Excel5');
$objWriter->save('php://output');
exit();
}
// Quand le telechargement doit etre en csv
elseif ($type == 2) {
$this->data['listeCommande'] = $listeOperation;
$this->data['lesCriteres'] = $lesCriteres;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Operation/impressionLigneCommande.html.twig', $this->data, $this->response);
}
// Quand le telechargement doit etre en fichier txt
elseif ($type == 3) {
$aux = 0;
$handle = fopen('php://memory', 'r+');
$header = array();
$donneperation = null;
$donneperation = array();
$i = 0;
$separateur = chr(9);
foreach ($listeOperation as $operation) {
$donneperation[$i] = "" . $operation['dateOperation']->format("d/m/Y") . "" . $separateur . "" . $operation['numMvt'] . "" . $separateur . "" . $operation['libOperation'] . "" . $separateur . "" . $operation['montant'] . "\r\n";
//var_dump($donneperation[$i]);exit;
fputcsv($handle, $donneperation);
$i++;
}
$response = $this->render('adminStockBundle:Operation:export_txt.html.twig', array('donneperation' => $donneperation), $this->response);
$filename = "export_" . date("Y_m_d_His") . ".txt";
$response->headers->set('Content-Type', 'text/txt');
$response->headers->set('Content-Disposition', 'attachment; filename=' . $filename);
return $response;
}
// Quand le telechargement doit etre en fichier pdf
elseif ($type == 4) {
ob_start();
$donneperation = $this->get('templating')->render('adminStockBundle:Operation:impression.html.twig', array('locale' => $locale, 'listeOperation' => $listeOperation));
$html2pdf = new HTML2PDF('P', 'A4', 'fr');
$html2pdf->WriteHTML($donneperation, true);
exit;
$fichier = $html2pdf->Output('exemple.pdf');
$response = new Response();
$response->clearHttpHeaders();
$response->setContent(file_get_contents($fichier));
$response->headers->set('Content-Type', 'application/force-download');
$response->headers->set('Content-disposition', 'filename=' . $fichier);
return $response;
} elseif ($type == 10) {
return $this->render('adminStockBundle:operation:brouillardCaisse.html.twig');
}
}
/**
* Methode s'occupant 'afficher la ligne d'une commande.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne detailOperation.html.twig
*/
public function getInfoCommandeAction(Request $request, LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,OperationManager $operationManager) {
$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 = "recuperation de la liste des operations d'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_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));
}
/*
* 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
$codeCommande = $request->get('code');
$type = $request->get('type');
$em = $this->getDoctrine()->getManager();
/*
* Service de gestion des caisse
*/
//$operationManager = $this->get('operation_manager');
// var_dump($type);exit;
$listeLigneCommande = $operationManager->getListeLigneCommande($codeCommande, $type);
//var_dump($listeLigneCommande);exit;
if (count($listeLigneCommande) != 0) {
//$em->getRepository($this->stockBundle . 'Commande')->getInformationCommande($codeCommande);
$rep['reponse'] = $listeLigneCommande;
// var_dump($listeLigneCommande);exit;
$rep['etat'] = 1;
}
}
return new Response(json_encode($rep));
}
/* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne detailOperation.html.twig
*/
public function getListeOperationCommandeAjaxAction(Request $request, LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,ProfilRepository $profilRepository,OperationManager $operationManager, CommandeRepository $commandeRepository,
LigneCommandeRepository $ligneCommandeRepository, InventaireRepository $inventaireRepository ) {
$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 = "recuperation de la liste des operations d'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_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
$idCommande = $request->get('idcommande');
$idAbonne = $request->get('idabonne');
$em = $this->getDoctrine()->getManager();
/*
* Service de gestion des caisse
*/
//$operationManager = $this->get('operation_manager');
// $listeLigneCommande = $em->getRepository($this->stockBundle . 'Operation')->getOperationsCaisseBrouillard(0, 1,0, 0, 0,$idCommande, $idAbonne,'CPTE001', '0') ;
$detailCommande = $commandeRepository->getOneCommande($idCommande);
$j = 0;
$tabInfoGeneral = array();
foreach ($detailCommande[0]->getLigneCommandes() as $uneLigneCommande) {
$i = 0;
$prixTotalReel = 0;
$prixLivrer = 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;
$prixLivrer = $uneLivraison->getPrixrigueur()->getInfoPrixRigueur();
$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");
if($ligneDernCommande->getPrixRigueur() != null )
$tabLigneCommande[$j]["oldPrix"] = $ligneDernCommande->getPrixRigueur()->getInfoPrixRigueur();
else
$tabLigneCommande[$j]["oldPrix"] = "-";
}else{
$tabLigneCommande[$j]["oldQuantite"] = "-";
$tabLigneCommande[$j]["oldDateCommande"] = "-";
$tabLigneCommande[$j]["oldPrix"] = "-";
}
$inventaire = $inventaireRepository->findOneBy(["etatInventaire"=>1, "produit"=>$uneLigneCommande->getProduit()]);
if($inventaire != null){
$tabLigneCommande[$j]["inventaire"] = $inventaire->getQuantiteSaisie() ;
$tabLigneCommande[$j]["dateInventaire"] = $inventaire->getDateInventaire()->format("d/m/Y");
$dateInventaire = $inventaire->getDateInventaire()->format("d/m/Y");
}else{
$tabLigneCommande[$j]["inventaire"] = 0 ;
$tabLigneCommande[$j]["dateInventaire"] = "-";
$dateInventaire = 0;
}
$inventaireA = $inventaireRepository->findOneBy( ["lignecommande"=>$ligneDernCommande]);
if($inventaireA != null){
$tabLigneCommande[$j]["inventaireA"] = $inventaireA->getQuantiteSaisie() ;
$tabLigneCommande[$j]["dateInventaireA"] = $inventaireA->getDateInventaire()->format("d/m/Y");
//$dateInventaire = $inventaireA->getDateInventaire()->format("d/m/Y");
}else{
$tabLigneCommande[$j]["inventaireA"] = 0 ;
$tabLigneCommande[$j]["dateInventaireA"] = "-";
//$dateInventaire = 0;
}
if($uneLigneCommande->getLivrers()[0] != null)
$tabLigneCommande[$j]["quantite"] = $uneLigneCommande->getLivrers()[0]->getNbreLivre();
else
$tabLigneCommande[$j]["quantite"] = $uneLigneCommande->getQuantite();
$tabLigneCommande[$j]["dateCommande"] = $detailCommande[0]->getDateCommande()->format("d/m/Y");
if($uneLigneCommande->getLivrers()[0] != null)
$tabLigneCommande[$j]["prix"] = $uneLigneCommande->getLivrers()[0]->getPrixRigueur()->getInfoPrixRigueur();
else
$tabLigneCommande[$j]["prix"] = $uneLigneCommande->getPrixRigueur()->getInfoPrixRigueur();
//$tabLigneCommande[$j]["prix"] = $uneLigneCommande->getPrixRigueur()->getInfoPrixRigueur();
$tabLigneCommande[$j]["nombreLivrer"] = $totalLivre ;
$portion= $commandeRepository->getPortionProduit(0,$dateInventaire , $detailCommande[0]->getDateCommande()->format("d/m/Y"), 0, 0, 0, 0,0,4,20,1,4,$sessionData["abonneId"],0,$uneLigneCommande->getProduit()->getId());//$uneVille->getId()
$tabLigneCommande[$j]["portion"] = $portion;
//var_dump($portion);exit;
if($prixLivrer == 0)
$tabLigneCommande[$j]["nombrePrix"] = $uneLigneCommande->getPrixRigueur()->getInfoPrixRigueur();
else
$tabLigneCommande[$j]["nombrePrix"] = $prixLivrer;
$j++;
}
$tabInfoGeneral['prixTotalReel']= $prixTotalReel;
$tabInfoGeneral['reference'] = $reference;
$tabInfoGeneral['codeCommande'] = $detailCommande[0]->getCodeCommande();
$tabInfoGeneral['fournisseur'] = $detailCommande[0]->getFournisseur()->getNomFournisseur();
$tabInfoGeneral['dateCommande'] = $detailCommande[0]->getDateCommande()->format("d/m/Y");
$tabInfoGeneral['totalLivre'] = $totalLivre;
//$tabInfoGeneral['portion'] = $portion;
$rep['reponse'] = $tabLivrer;
$rep['infoGenerale'] = $tabInfoGeneral;
$rep['lignecommande'] = $tabLigneCommande;
// var_dump($listeLigneCommande);exit;
$rep['etat'] = 1;
}
return new Response(json_encode($rep));
}
/* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne detailOperation.html.twig
*/
public function getListeOperationCommandeVenteAjaxAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository,CommandeRepository $commandeRepository ,LigneCommandeRepository $ligneCommandeRepository) {
$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 = "recuperation de la liste des operations d'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_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
$idCommande = $request->get('idcommande');
$idAbonne = $request->get('idabonne');
$em = $this->getDoctrine()->getManager();
/*
* Service de gestion des caisse
*/
////$operationManager = $this->get('operation_manager');
// $listeLigneCommande = $em->getRepository($this->stockBundle . 'Operation')->getOperationsCaisseBrouillard(0, 1,0, 0, 0,$idCommande, $idAbonne,'CPTE001', '0') ;
$detailCommande = $commandeRepository->getOneCommande($idCommande);
$j = 0;
$tabInfoGeneral = array();
$tabLivrer = array();
$tabLigneCommande = array();
$prixTotalReel = 0;
$reference = 0;
$totalLivre = 0;
foreach ($detailCommande[0]->getLigneCommandes() as $uneLigneCommande) {
$i = 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"] = $detailCommande[0]->getDateCommande()->format("d/m/Y");
$tabLigneCommande[$j]["prix"] = $uneLigneCommande->getPrixRigueur()->getInfoPrixRigueur();
$tabLigneCommande[$j]["nombreLivrer"] = $totalLivre ;
$tabLigneCommande[$j]["nombrePrix"] = $uneLigneCommande->getPrixRigueur()->getInfoPrixRigueur();
$j++;
}
$tabInfoGeneral['prixTotalReel']= $prixTotalReel;
$tabInfoGeneral['reference'] = $reference;
$tabInfoGeneral['codeCommande'] = $detailCommande[0]->getCodeCommande();
$tabInfoGeneral['fournisseur'] = "TEST";//$detailCommande[0]->getFournisseur()->getNomFournisseur();
$tabInfoGeneral['dateCommande'] = $detailCommande[0]->getDateCommande()->format("d/m/Y");
$tabInfoGeneral['totalLivre'] = $totalLivre;
$rep['reponse'] = $tabLivrer;
$rep['infoGenerale'] = $tabInfoGeneral;
$rep['lignecommande'] = $tabLigneCommande;
// var_dump($listeLigneCommande);exit;
$rep['etat'] = 1;
}
return new Response(json_encode($rep));
}
/* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne detailOperation.html.twig
*/
public function setPourcentageLigneCommandeAction(Request $request) {
$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 = "rApplicqué des pourcentages sur une ligne 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";
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
$idLigneCmde= $request->get('idLigneCmde');
$pourcentage= $request->get('pourcentage');
//var_dump($idLigneCmde, $pourcentage);exit;
$em = $this->getDoctrine()->getManager();
/*
* Service de gestion des caisse
*/
$objetUtilisateur = $em->getRepository($this->userBundle . 'Utilisateur')->find($sessionData['id']);
//$operationManager = $this->get('operation_manager');
// $listeLigneCommande = $em->getRepository($this->stockBundle . 'Operation')->getOperationsCaisseBrouillard(0, 1,0, 0, 0,$idCommande, $idAbonne,'CPTE001', '0') ;
$detailLigneCommande = $em->getRepository($this->stockBundle . 'LigneCommande')->find($idLigneCmde);
$objetCommande= $detailLigneCommande->getCommande();
$prix = -1*$detailLigneCommande->getPrixRigueur()->getInfoPrixRigueur()*$pourcentage/100;
$objetPrixRigueur = $this->savePrix($em, $prix, $detailLigneCommande->getProduit(), 2, $objetUtilisateur) ;
$codeVente = "R".$detailLigneCommande->getCodeGenere();
$this->saveLigneCommande($em, $codeVente, $detailLigneCommande->getCommande()->getInfoLivrers()[0], $detailLigneCommande->getCommande(), $detailLigneCommande->getProduit(), $objetPrixRigueur, $detailLigneCommande->getQuantite(), $detailLigneCommande->getId(), 2,$this->ligneCommandeRepository) ;
$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 = $em->getRepository($this->stockBundle . 'LigneCommande')->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 = $em->getRepository($this->stockBundle . 'LigneCommande')->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'] = 1;
}
return new Response(json_encode($rep));
}
/* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne detailOperation.html.twig
*/
public function setDeleteLigneCommandeAction(Request $request, LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,AbonneRepository $abonneRepository, UtilisateurRepository $utilisateurRepository,
LigneCommandeRepository $ligneCommandeRepository) {
//var_dump($objetCommande->getId());exit;
$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 = "supprimer une ligne 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;
$j = 0;
$tabInfoGeneral = array();
/*
* 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_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
$idLigneCmde= $request->get('idLigneCmde');
//var_dump($idLigneCmde, $pourcentage);exit;
$em = $this->getDoctrine()->getManager();
/*
* Service de gestion des caisse
*/
$objetUtilisateur = $utilisateurRepository->find($sessionData['id']);
//$operationManager = $this->get('operation_manager');
// $listeLigneCommande = $em->getRepository($this->stockBundle . 'Operation')->getOperationsCaisseBrouillard(0, 1,0, 0, 0,$idCommande, $idAbonne,'CPTE001', '0') ;
$detailLigneCommande = $ligneCommandeRepository->find($idLigneCmde);
//var_dump($detailLigneCommande);exit;
$objetCommande= $detailLigneCommande->getCommande();
$em->remove($detailLigneCommande );
$em->flush();
$prixTotalReel =0;
$i = 0;
$prixTotalReel = 0;
$reference = 0;
$totalLivre = 0;
foreach ($objetCommande->getLigneCommandes() as $uneLigneCommande) {
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++;
}
//var_dump($objetCommande->getId());exit;
$montantTotalCommande = $ligneCommandeRepository->sumLigneCommande($objetCommande->getId());
$objetCommande->setMontantCommande($montantTotalCommande); //
$em->persist($objetCommande);
$em->flush($objetCommande);
//var_dump($montantTotalCommande );exit;
$tabInfoGeneral['prixTotalReel']= $prixTotalReel;
$tabInfoGeneral['reference'] = $reference;
$tabInfoGeneral['codeCommande'] = $objetCommande->getCodeCommande();
$tabInfoGeneral['commandeId'] = $objetCommande->getId();
$tabInfoGeneral['fournisseur'] = "XXXXX";//$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'] = 1;
}
return new Response(json_encode($rep));
}
/**
* Methode s'occupant 'de faire les traitements du paiement fait avec le mode paiement espece
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne detailOperation.html.twig
*/
public function traiteCommandeAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,
ConnexionRepository $connexionRepository,ActionRepository $actionRepository, OperationManager $operationManager,
ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository, CaisseRepository $caisseRepository, TypeOperationRepository $typeOperationRepository, UtilisateurRepository $utilisateurRepository,
) {
$rep = array('etat' => FALSE, 'msg' => 'Erreur survenue lors du traitement', 'logout' => FALSE);
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Traitement de l'opération courante ";
/*
* 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_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 faire le paiement ";
return new Response(json_encode($rep));
}
/*
* Traitement de la requete qui vient de la vue
* on vérifie si la requete est Ajax et si la methode est post
*/
if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
$em = $this->getDoctrine()->getManager();
// Recuperation du type operation
//Recuperation du de linfo util
$concatInfo ="";
$montantEsp = $request->get('montantEsp');
$idAbonne = $request->get('idabonne');
$idTypeOp = $request->get('idTypeOp');
$infoDepoCheq = $request->get('infoDepoCheq');
if($request->get('fournisseurId') != ""){
$fournisseurId = $request->get('fournisseurId');
$producteurId = null;
}else{
$fournisseurId = null;
}
if($request->get('producteurId') != null && $request->get('producteurId') != '0'){
$producteurId = $request->get('producteurId');
$fournisseurId = null;
}else{
$producteurId = null;
}
//var_dump($fournisseurId, $producteurId );exit;
// $montantCheq = $request->get('montantCheq');
$montantEsp = preg_replace('/\D/', '', $montantEsp);
$numCheque = $request->get('numCheque');
//$operationManager = $this->get('operation_manager');
//var_dump($producteurId );exit;
$idVille = $request->get('idVille');
//recuperation de la ville
$objetUtilisateur = $utilisateurRepository->find($sessionData['id']);
//var_dump($idTypeOp);exit;
$objetTypeOperation = $typeOperationRepository->find($idTypeOp);
//var_dump($objetTypeOperation);exit;
$infoDepo = $objetTypeOperation->getLibTypeOperation()." : ".$request->get('infoDepoEsp');
if($idVille == 0){
if($objetUtilisateur->getVille() != null)
$idVille = $objetUtilisateur->getVille()->getId();
}
//recuperation de l'identifiant du produit
$tabCompteId = $operationManager->getCompteCaisse($em,$objetTypeOperation->getCaisse()->getId(), $caisseRepository);//getCompteVille($em,$idVille);
$idProduit = null;
$tabCompteMontant = $operationManager->getRecuperationCompte($em,$idTypeOp,$montantEsp,$typeOperationRepository);
$compteAuxi = $tabCompteId['compte'];
$d = new \DateTime(); //$sessionData['dateChoisie'];
$dateChoisie = $d->format('Y/m/d H:i:s');
if($request->get('producteurId') != null && $request->get('producteurId') != '0'){
$typeProducteur = 3;
//recupérer le compte du producteur
$objetCaisse = $caisseRepository->findOneby(['typeCaisse'=>$typeProducteur, 'abonne'=>$objetUtilisateur->getAbonne()]);
$tabCompteId['id'] = $objetCaisse->getId();
}
$an = $d->format('Y');
$m = $d->format('m');
$j = $d->format('d');
$refFacture = $this->getRefLivrer($em, 1, $an, $m, $entite = 'LIVRER', $taille = 5, $j);
$operationManager->geneLigneOperationComptable(null, $tabCompteId['id'], $tabCompteMontant['montant'], $infoDepo, $telDepo = '', $refFacture, $numCheque, $tabCompteMontant['compte'], $idTypeOp, $piece = 0, $nomCompte = '', $typePaie=1, $idProduit, $compteAuxi, $dateChoisie,$idVille, $sessionData["abonneId"],null,null, $utilisateurRepository,$caisseRepository, $producteurId, $fournisseurId);
//if($idTypeOp == 109){
//$this->genereLigneSuivieLivraison($em, $objetUtilisateur->getVille(),$montantEsp,1, "Avance pour achat de cacao ", NULL, NULL);
//}
$rep['etat'] = true;
$rep['reponse']['reponse'] = $infoDepo;
$rep['reponse']['montantEsp'] = $montantEsp;
$rep['reponse']['infoDepoCheq'] = $infoDepoCheq;
//$rep['reponse']['montantCheq'] = $montantCheq;
$rep['reponse']['numCheque'] = $numCheque;
$rep['reponse']['nomCompte'] = $nomCompte;
}
return new Response(json_encode($rep));
}
/**
* Methode s'occupant 'de faire les traitements du paiement fait avec le mode paiement espece
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne detailOperation.html.twig
*/
public function traiteCommandeChequeAction(Request $request) {
$rep = array('etat' => FALSE, 'msg' => 'Erreur survenue lors du traitement', 'logout' => FALSE);
/**
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "traitement du paiement avec cheque";
/*
* 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_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 faire le paiement ";
return new Response(json_encode($rep));
}
/*
* Traitement de la requete qui vient de la vue
* on vérifie si la requete est Ajax et si la methode est post
*/
if (($this->request->isXmlHttpRequest()) && ($this->request->getMethod() == 'POST')) {
}
return new Response(json_encode($rep));
}
/**
* Methode s'occupant de l'ajout du operation.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne ajouterOperation.html.twig
*/
public function afficherFactureAction(Request $request) {
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Operation/templateFacture.html.twig', $this->data, $this->response);
}
/**
* Methode s'occupant d'imprimer .
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne ajouterOperation.html.twig
*/
public function traiteRecuAction(Request $request, $id) {
$em = $this->getDoctrine()->getManager();
//Recuperation des informations concernant le client
$infoClient = $em->getRepository($this->stockBundle . 'Commande')->getClientCommande($id);
//Recuperation des informations concernant les lignes commande
$ligneCommande = $em->getRepository($this->stockBundle . 'Commande')->getLigneCommande($id);
//Recuperation des informations concernant les operation de la commande
$ligneOperation = $em->getRepository($this->stockBundle . 'Operation')->getListeOperationCommande($id);
/*
* Preparation des informations à traiter sur les twig
*/
$this->data['infoClient'] = $infoClient;
$this->data['ligneCommande'] = $ligneCommande;
$this->data['ligneOperation'] = $ligneOperation;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Operation/recuPaiement.html.twig', $this->data, $this->response);
}
/**
* Methode s'occupant de lister les Operations.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne listeOperation.html.twig
*/
public function listerOperationAction(Request $request) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Affichage de la liste des operations";
/*
* Préparation du message de log
*/
$this->logMessage .= ' [ ' . $nomAction . ' ] ';
/*
* Service de gestion des droits
*/
/*
* Informations de session
*/
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
/*
* Locale en cours
*/
$locale = $loginManager->getLocale();
$this->data['locale'] = $locale;
/*
* On vérifie si l'utilisateur est connecté
*/
$status = $loginManager->isConnecte($nomAction, $paramRepositor,$connexionRepository, $actionRepository);
if ($status['isConnecte']) {
/*
* Au cas ou l'utilisateur est connecté on vérifie s'il nest pas innactif. S'il est innactif
* on garde en mémoire flash la route actuelle pour effectuer une redirection lors de la prochaine connexion
*/
if ($status['isInnactif']) {
$routeName = $request->get('_route');
$routeParams = $request->get('_route_params');
$this->get('session')->getFlashBag()->add('restoreUrl', $this->generateUrl($routeName, $routeParams));
$this->get('session')->getFlashBag()->add('ina', $this->translator->trans("site.long.periode"));
return $this->redirect($this->generateUrl('app_logout'));
}
/*
* Seuls les utilisateurs admins ont le droit d'acceder à cette action
*/
if (!$status['isUser']) {
return $this->redirect($this->generateUrl('app_logout'));
}
} else {
return $this->redirect($this->generateUrl('app_logout'));
}
/*
* Gestion des droits
*/
if (!$loginManager->getOrSetActions(Module::MOD_GEST_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 ] ';
$this->get('session')->getFlashBag()->add('access', "Vous n'avez pas le droit d'accéder à cette page");
return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
}
try {
/*
* Récupération des la liste des critères
*/
$em = $this->getDoctrine()->getManager();
$listeOperation = $em->getRepository($this->stockBundle . 'Operation')->getAllOperation();
} catch (\Exception $e) {
var_dump($e->getMessage());
exit;
}
// var_dump($listeOperation);exit;
/*
* Préparation des informations que nous allons traiter sur le twig
*/
$this->data['listeOperation'] = $listeOperation;
$this->data['locale'] = $locale;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Operation/listeOperation.html.twig', $this->data, $this->response);
}
public function mettreAJourCommande($em, $idCom) {
$laCommande = $em->getRepository($this->stockBundle . 'Commande')->find($idCom);
$laCommande->setEtatCommande(\Types\user\TypeEtat::INACTIF);
$laCommande->setMontantResteCommande(\Types\user\TypeEtat::APRODUIRE);
$em->persist($laCommande);
$em->flush();
}
public function cellAutoSize($excelService) {
foreach (range('A', 'M') as $columnID) {
$excelService->getActiveSheet()->getColumnDimension($columnID)
->setAutoSize(true);
}
}
public function applyStyleCell($excelService, $aux) {
if ($aux % 2 == 0) {
$color = 'ddebf7';
} else {
$color = 'ffffff';
}
$styleArray = array(
'font' => array(
'color' => array('rgb' => '000'),
'size' => 13,
'type' => PHPExcel_Style_Fill::FILL_SOLID,
'startcolor' => array(
'rgb' => $color
)
));
$styleArray_2 = array(
'font' => array(
'color' => array('rgb' => 'f00'),
'size' => 14,
'bold' => true
));
// foreach (range('A', 'M') as $columnID) {
//
// $excelService->getActiveSheet()
// ->getStyle($columnID . $aux)->applyFromArray($styleArray);
// var_dump($columnID . $aux);exit;
// $excelService->getActiveSheet()->getStyle($columnID . $aux)->getFill()
// ->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
// ->getStartColor()
// ->setRGB($color);
//}
$excelService->getActiveSheet()
->getStyle('A10:M10')->applyFromArray($styleArray_2);
$excelService->getActiveSheet()
->getStyle('A3:B3')->applyFromArray($styleArray);
$excelService->getActiveSheet()
->getStyle('A4:B4')->applyFromArray($styleArray);
$excelService->getActiveSheet()
->getStyle('A5:B5')->applyFromArray($styleArray);
$excelService->getActiveSheet()
->getStyle('A6:B6')->applyFromArray($styleArray);
$excelService->getActiveSheet()
->getStyle('A'. $aux.':'.'M'.$aux)->applyFromArray($styleArray);
$excelService->getActiveSheet()
->getStyle('A'. $aux.':'.'M'.$aux)
->getFill()
->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
->getStartColor()
->setRGB($color);
}
/**
* Methode s'occupant de lister les Operations.
*
* @author armand.tevi@gmail.com
* @copyright ADMIN 2015
*
* @version 1
*
* @return twig d'ajout d'un abonne listeOperation.html.twig
*/
public function listeSuivieLivraisonAction(Request $request, $type,$datefin, $datedeb, $ville) {
/*
* Nom de l'action en cours
*/
$nomAction = __FUNCTION__;
/*
* Description de l'action de l'action en cours
*/
$descAction = "Liste des opérations préfinancements et livraisons ";
$locale ='fr';
$valRetour =$this->gestionDroitUtil($request, $nomAction, $descAction,$this->moduleTitre,$this->moduleDesc, $loginManager,$paramRepositor,$connexionRepository, $actionRepository, $moduleRepository, $controleurRepository, $profilRepository );
if($valRetour==1){
return $this->redirect($this->generateUrl('app_logout'));
}elseif($valRetour==2){
return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
}
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
$prod = $sessionData["produit_id"];
$em = $this->getDoctrine()->getManager();
$total = 10; //$em->getRepository("adminStockBundle:Operation")->getTotalOperationsBrouillard($caisse, $datedeb, $datefin, $typeop, $typedate);
if ($request->getMethod() == 'POST') {
$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);
}
$listeOperation = $em->getRepository($this->stockBundle . 'Operation')->getOperationsSuivieLivraison($datedeb, $datefin, $typeop = '0', $ville);
$excelService = new PHPExcel();
$excelService->getProperties()
->setTitle("OPERATIONS DE LIVRAISON ")
->setDescription("LISTE DES OPERATIONS DE LIVRAISON");
$excelService->getActiveSheet()->setTitle('Liste des Operations ');
$excelService->setActiveSheetIndex(0);
$lesCriteres = $this->RecuperCritereRechercheSuivie($em,$datefin,$datedeb, $ville);
//create the response
$excelService->setActiveSheetIndex(0)
->setCellValue('A1', '')//DETAILS DES OPERATIONS DE GESTIONS DES AVANCES ET DE LIVRAISON DES COLLECTES DE CACAO
->setCellValue('B1', '')
->setCellValue('C1', '')
->setCellValue('E1', '')
->setCellValue('F1', '')
->setCellValue('G1', '')
->setCellValue('H1', '')
->setCellValue('I1', '');
$excelService->setActiveSheetIndex(0)
->setCellValue('A3', 'Ville :')
->setCellValue('B3', $lesCriteres['nomVille']);
$excelService->setActiveSheetIndex(0)
->setCellValue('A4', 'Date début :')
->setCellValue('B4', $lesCriteres['dateDebut']);
$excelService->setActiveSheetIndex(0)
->setCellValue('A5', 'Date fin')
->setCellValue('B5', $lesCriteres['dateFin']);
$excelService->setActiveSheetIndex(0)
->setCellValue('A7', 'Zone')
->setCellValue('B7', 'Date')
->setCellValue('C7', 'Type operation')
->setCellValue('D7', 'intitulé')
->setCellValue('E7', 'Montant')
->setCellValue('F7', 'Montant')
->setCellValue('G7', 'Solde')
->setCellValue('H7', 'Stock en route')
->setCellValue('I7', 'Sortie');
$locale ="fr";
$aux = 8;
if ($type == 1) {
foreach ($listeOperation as $row) {
$datop = null;
$daval = null;
if( $row->getTypeoperation() == 1){
$excelService->setActiveSheetIndex(0)
->setCellValue('A' . $aux, $row->getVille()->getNomVille()) //$row['dateOperation']
->setCellValue('B' . $aux, $row->getDateSuivie()->format("d/M/Y"))
->setCellValue('C' . $aux, "Achat")
->setCellValue('D' . $aux, $row->getInstitule())//$row['dateValeur']
->setCellValue('E' . $aux, $row->getMontant())
->setCellValue('F' . $aux, "")
->setCellValue('G' . $aux, "")
->setCellValue('H' . $aux, "")
->setCellValue('I' . $aux, "")
;
}else{
$excelService->setActiveSheetIndex(0)
->setCellValue('A' . $aux, $row->getVille()->getNomVille()) //$row['dateOperation']
->setCellValue('B' . $aux, $row->getDateSuivie()->format("d/M/Y"))
->setCellValue('C' . $aux, "Achat")
->setCellValue('D' . $aux, $row->getInstitule())//$row['dateValeur']
->setCellValue('E' . $aux, $row->getMontant())
->setCellValue('F' . $aux, "")
->setCellValue('G' . $aux, "")
->setCellValue('H' . $aux, "")
->setCellValue('I' . $aux, "");
}
$this->applyStyleCell($excelService, $aux);
$aux++;
$this->cellAutoSize($excelService);
// Set active sheet index to the first sheet
$excelService->getActiveSheet()->getStyle('E' . $aux)->getNumberFormat()->applyFromArray(
array(
'code' => '# ### ### ### ###_-'
)
);
}
$response = new Response();
//
} //elseif ($imprimer == 1) {
if ($type == 1) {
//$response = $excelService->getResponse();
$response->headers->set('Content-Type', 'text/vnd.ms-excel; charset=utf-8');
$response->headers->set('Content-Disposition', 'attachment;filename=fichier_excel_operation_gestion_collect-' . date("Y_m_d_His") . '.xls');
//$response->prepare();
$response->sendHeaders();
$objWriter = PHPExcel_IOFactory::createWriter($excelService, 'Excel5');
$objWriter->save('php://output');
exit();
}
// Quand le telechargement doit etre en csv
elseif ($type == 2) {
$this->data['listeCommande'] = $listeOperation;
$this->data['lesCriteres'] = $lesCriteres;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Operation/impressionLigneCommande.html.twig', $this->data, $this->response);
}
// Quand le telechargement doit etre en fichier txt
elseif ($type == 3) {
$aux = 0;
$handle = fopen('php://memory', 'r+');
$header = array();
$donneperation = null;
$donneperation = array();
$i = 0;
$separateur = chr(9);
foreach ($listeOperation as $operation) {
$donneperation[$i] = "" . $operation['dateOperation']->format("d/m/Y") . "" . $separateur . "" . $operation['numMvt'] . "" . $separateur . "" . $operation['libOperation'] . "" . $separateur . "" . $operation['montant'] . "\r\n";
//var_dump($donneperation[$i]);exit;
fputcsv($handle, $donneperation);
$i++;
}
$response = $this->render('adminStockBundle:Operation:export_txt.html.twig', array('donneperation' => $donneperation), $this->response);
$filename = "export_" . date("Y_m_d_His") . ".txt";
$response->headers->set('Content-Type', 'text/txt');
$response->headers->set('Content-Disposition', 'attachment; filename=' . $filename);
return $response;
}
// Quand le telechargement doit etre en fichier pdf
elseif ($type == 4) {
ob_start();
$donneperation = $this->get('templating')->render('adminStockBundle:Operation:impression.html.twig', array('locale' => $locale, 'listeOperation' => $listeOperation));
$html2pdf = new HTML2PDF('P', 'A4', 'fr');
$html2pdf->WriteHTML($donneperation, true);
exit;
$fichier = $html2pdf->Output('exemple.pdf');
$response = new Response();
$response->clearHttpHeaders();
$response->setContent(file_get_contents($fichier));
$response->headers->set('Content-Type', 'application/force-download');
$response->headers->set('Content-disposition', 'filename=' . $fichier);
return $response;
} else {
$listeVille = $em->getRepository($this->stockBundle . 'Ville')->getAllActiveVille($prod);
//Recuperer la liste des villes
$this->data['datefin_'] = $datefin;
$this->data['datedeb_'] = $datedeb;
$this->data['ville_'] = $ville;
$this->data['afficher'] = 1;
$this->data['listeVille'] = $listeVille;
$this->data['listeOperation'] = $listeOperation;
return $this->render('adminStockBundle:InfoLivrer:suivieLivraison.html.twig',$this->data);
}
}
public function exportOpertionPaiementMobileAction(Request $request,$datedeb, $datefin, $four, $ville, $prix,$prod, $typepaiement, $type){
//(Request $request, $type, $etat, $nomcol, $datefin, $datedeb, $ville, $util, $silivre, $numcom) {
//$session = $this->getRequest()->getSession();
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
$prod = $sessionData["produit_id"];
//var_dump($prod);exit;
$em = $this->getDoctrine()->getManager();
//var_dump($currentConnete["listeActions_abonne"]);exit;
global $listeOperation, $articles_per_page, $last_page, $previous_page, $next_page, $total;
//$typeOperation = $em->getRepository("adminStockBundle:TypeOperation")->findAll();
$total = 10; //$em->getRepository("adminStockBundle:Operation")->getTotalOperationsBrouillard($caisse, $datedeb, $datefin, $typeop, $typedate);
//$listeOperation = $em->getRepository($this->stockBundle . 'Commande')->getListeRechercheCommande($nomcol, $datefin, $datedeb, $ville, $util, $silivre, $numcom,$prod);
$listeOperation = $em->getRepository($this->stockBundle . 'InfoLivrer')->getRechercheInfoLivrerPaiementMobile($four, $ville, $datedeb, $datefin, $prix,0,$prod,$typepaiement);
$excelService = new PHPExcel();
$excelService->getProperties()
->setTitle("Opérations de payement mobile ")
->setDescription("Opérations de payement mobile");
$excelService->getActiveSheet()->setTitle('Liste des Operations ');
$excelService->setActiveSheetIndex(0);
//$lesCriteres = $this->RecuperCritereRecherche($em, $nomcol, $datefin,$datedeb, $ville, $util, $silivre, $numcom);
//create the response
$excelService->setActiveSheetIndex(0)
->setCellValue('A1', 'Numéro Tel')//DETAILS DES OPERATIONS DE GESTIONS DES AVANCES ET DE LIVRAISON DES COLLECTES DE CACAO
->setCellValue('B1', 'Prénom')
->setCellValue('C1', 'Nom')
->setCellValue('D1', 'Montant')
->setCellValue('E1', 'CFA')
->setCellValue('F1', 'Motif de paiement');
$aux = 2;
if ($type == 1) {
//var_dump(count($listeOperation),count($listeOperation));exit;
foreach ($listeOperation as $row) {
$datop = null;
$daval = null;
//Montant paiement
$montant = $row->getPrixrigueur()->getInfoPrixRigueur()*$row->getNbreTotalLivre();
$infoIdentite = $row->getLivrers()[0]->getLigneCommande()->getProducteur()->getUtilisateur()->getNom();
$tabIdentite = explode(" ", $infoIdentite);
//var_dump(count($row->getLivrers()));exit;
$excelService->setActiveSheetIndex(0)
->setCellValue('A' . $aux, "228".$row->getLivrers()[0]->getLigneCommande()->getProducteur()->getUtilisateur()->getTel1()) //$row['dateOperation']
->setCellValue('B' . $aux, $tabIdentite[1])
->setCellValue('C' . $aux, $tabIdentite[0])
->setCellValue('D' . $aux, $montant)//$row['dateValeur']
->setCellValue('E' . $aux, "952")
->setCellValue('F' . $aux, "Paiement achat produit agricole")
;
//$this->applyStyleCell($excelService, $aux);
$this->cellAutoSize($excelService);
// Set active sheet index to the first sheet
$excelService->getActiveSheet()->getStyle('D' . $aux)->getNumberFormat()->applyFromArray(
array(
'code' => '# ### ### ### ###_-'
)
);
$aux++;
}
$response = new Response();
//
}
if ($type == 3) {
//$response = $excelService->getResponse();
$response->headers->set('Content-Type', 'text/vnd.ms-excel; charset=utf-8');
$response->headers->set('Content-Disposition', 'attachment;filename=fichier_excel_operation_gestion_collect-' . date("Y_m_d_His") . '.csv');
//$response->prepare();
$response->sendHeaders();
$objWriter = PHPExcel_IOFactory::createWriter($excelService, 'Excel5');
$objWriter->save('php://output');
exit();
}
if ($type == 5) {
//$response = $excelService->getResponse();
$response->headers->set('Content-Type', 'text/vnd.ms-excel; charset=utf-8');
$response->headers->set('Content-Disposition', 'attachment;filename=fichier_excel_operation_gestion_collect-' . date("Y_m_d_His") . '.xls');
//$response->prepare();
$response->sendHeaders();
$objWriter = PHPExcel_IOFactory::createWriter($excelService, 'Excel5');
$objWriter->save('php://output');
exit();
}
// Quand le telechargement doit etre en csv
elseif ($type == 2) {
$this->data['listeCommande'] = $listeOperation;
$this->data['lesCriteres'] = $lesCriteres;
return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Operation/impressionLigneCommande.html.twig', $this->data, $this->response);
}
// Quand le telechargement doit etre en fichier txt
elseif ($type == 1) {
$aux = 0;
$handle = fopen('php://memory', 'r+');
$header = array();
$donneperation = null;
$donneperation = array();
$separateur = chr(59);
$i = 0;
$donneperation[$i] = "" . "Numero" . $separateur . "Nom" . $separateur . "Prenom" . $separateur . "montant" . $separateur . "motif".$separateur . "statut". "";
foreach ($listeOperation as $row) {
++$i;
$datop = null;
$daval = null;
//Montant paiement
$montant = $row->getPrixrigueur()->getInfoPrixRigueur()*$row->getNbreTotalLivre();
$infoIdentite = $row->getLivrers()[0]->getLigneCommande()->getProducteur()->getUtilisateur()->getNom();
$tabIdentite = explode(" ", $infoIdentite);
$donneperation[$i] = "" . "228".$row->getLivrers()[0]->getLigneCommande()->getProducteur()->getUtilisateur()->getTel1() . "" . $separateur . "" . $tabIdentite[1] . "" . $separateur . "" . $tabIdentite[0] . "" . $separateur . "" . $montant ."" . $separateur . "952".$separateur . "Paiement achat produit agricole". "";
fputcsv($handle, $donneperation);
}
$response = $this->render('adminStockBundle:Operation:export_csv.html.twig', array('donneperation' => $donneperation), $this->response);
$filename = "export_" . date("Y_m_d_His") . ".csv";
$response->headers->set('Content-Type', 'text/csv');
$response->headers->set('Content-Disposition', 'attachment; filename=' . $filename);
return $response;
}
// Quand le telechargement doit etre en fichier pdf
elseif ($type == 4) {
ob_start();
$donneperation = $this->get('templating')->render('adminStockBundle:Operation:impression.html.twig', array('locale' => $locale, 'listeOperation' => $listeOperation));
$html2pdf = new HTML2PDF('P', 'A4', 'fr');
$html2pdf->WriteHTML($donneperation, true);
exit;
$fichier = $html2pdf->Output('exemple.pdf');
$response = new Response();
$response->clearHttpHeaders();
$response->setContent(file_get_contents($fichier));
$response->headers->set('Content-Type', 'application/force-download');
$response->headers->set('Content-disposition', 'filename=' . $fichier);
return $response;
} elseif ($type == 10) {
return $this->render('adminStockBundle:operation:brouillardCaisse.html.twig');
}
}
}