<?php
namespace App\Controller\GestionComerciale;
use App\Entity\Articles\Article;
use App\Entity\Articles\Categorie;
use App\Entity\Articles\ConditionAchat;
use App\Entity\Articles\Marque;
use App\Entity\Articles\MouvementStock;
use App\Entity\Articles\NumeroSerie;
use App\Entity\Articles\Type;
use App\Entity\Email\Modele;
use App\Entity\Etiquettes\Etiquette;
use App\Entity\Email\Categorie as CategorieEmail;
use App\Entity\FO\Parametrage;
use App\Entity\FO\Societe;
use App\Entity\Fournisseurs\Fournisseur;
use App\Entity\GestionComerciale\ArticleCommande;
use App\Entity\GestionComerciale\Commande;
use App\Entity\GestionComerciale\CommandeFournisseur;
use App\Entity\GestionComerciale\Fabrication;
use App\Entity\GestionComerciale\HistoriqueCommande;
use App\Entity\GestionComerciale\ModeReglement;
use App\Entity\GestionComerciale\Reception;
use App\Entity\GestionComerciale\StatutCommandeFournisseur;
use App\Entity\Taxes\Taxe;
use App\Form\GestionComerciale\AvoirFactureCommandeFournisseurType;
use App\Form\GestionComerciale\CommandeFournisseurType;
use App\Form\GestionComerciale\FactureFournisseurType;
use App\Form\GestionComerciale\SupprimerCommandeFournisseurType;
use App\Library\Datatable\Util\Datatable;
use App\Library\Uploader\Services\FileUploader;
use App\Security\Voter\EntityVoter;
use App\Service\Articles\ArticleService;
use App\Service\Fournisseurs\FournisseurService;
use App\Service\GestionComerciale\CommandeFournisseurService;
use App\Service\GestionComerciale\CommandeService;
use App\Service\GestionComerciale\EmailService;
use App\Service\GestionComerciale\EtatCommandeService;
use App\Service\GestionComerciale\NumerotationDocumentService;
use App\Service\Utilisateur\ColonneTableauService;
use Doctrine\ORM\EntityManagerInterface;
use DTS\eBaySDK\FileTransfer\Types\Data;
use Knp\Snappy\Pdf;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Form\Extension\Validator\ViolationMapper\ViolationMapper;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Validation;
use Symfony\Component\Validator\ConstraintViolation;
use Symfony\Component\Form\FormError;
use Symfony\Component\Process\Process;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class CommandeFournisseurController extends AbstractController
{
/**
* @Route("/carnet-commande/", name="dtc_carnet_commande")
*/
public function carnetCommandeAction(Request $request, Datatable $datatable, EntityManagerInterface $em, TranslatorInterface $translator, ColonneTableauService $serviceColonneTableau)
{
//test git
$errors = '';
$selectReappro = $request->request->get('selectReappro');
$tableau_class_cellule[] = ["className" => "colonne_id", "targets" => [0], "visible" => true, "orderable" => false, "searchable" => false];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [1],
// TODO CHANGE THIS
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "id"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [2],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "reference"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [3],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "referenceFournisseur"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [4],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "libelle"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [5],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "fournisseur"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id ",
"orderable" => false,
"targets" => [6],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "client"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id w200",
"targets" => [7],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "qteMini"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id w200",
"targets" => [8],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "qteMaxi"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id w200",
"targets" => [9],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "stock"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id w200",
"targets" => [10],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "dispo"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id w300",
"targets" => [11],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "ralClient"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id w300",
"targets" => [12],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "stockReserveFabrication"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id w300",
"targets" => [13],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "ralFournisseur"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id w300",
"targets" => [14],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "conditionnement"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id w300",
"targets" => [15],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "delai"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id w200 qte",
"targets" => [16],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "qte"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id w200 prixHT",
"targets" => [17],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "prixHT"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [18],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "pump"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [19],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "typeReapro"),
];
$categorie_enfants = [];
$categorie_enfants_enfants = [];
$repo_categorie_article = $em->getRepository(Categorie::class);
$categorie_article_racine = $repo_categorie_article->findBy(["categorieParent" => 1]);
$repo_marque_article = $em->getRepository(Marque::class);
$marque_article = $repo_marque_article->findBy([], ['libelle' => 'ASC']);
$repo_type_article = $em->getRepository(Type::class);
$type_article = $repo_type_article->findBy([], ['libelle' => 'ASC']);
$param = $request->query->all();
if (array_key_exists('categorie_article', $param) and $param["categorie_article"] > 0) {
$parent = $repo_categorie_article->find($param["categorie_article"]);
if (is_object($parent)) {
$categorie_enfants = $repo_categorie_article->findBy(["categorieParent" => $parent]);
}
if (array_key_exists('sous_categorie_article', $param) and $param["sous_categorie_article"] > 0) {
$parent2 = $repo_categorie_article->find($param["sous_categorie_article"]);
if (is_object($parent2)) {
$categorie_enfants_enfants = $repo_categorie_article->findBy(["categorieParent" => $parent]);
}
}
}
$this->datatableCarnetCommande2($selectReappro, $request, $datatable, $em, $translator);
return $this->render('GestionComerciale/CommandeFournisseur/carnet-commande.html.twig', [
'tableauClassColonne' => $tableau_class_cellule,
'errors' => $errors,
'selectReappro' => $selectReappro,
'parametres' => $param,
"categorie_article" => $categorie_article_racine,
"sous_categorie_article" => $categorie_enfants,
"sous_categorie_article" => $categorie_enfants_enfants,
"marque" => $marque_article,
"type" => $type_article,
]);
}
/**
* @Route("/achat/commande/nouveau/", name="dtc_commande_fournisseur_ajouter")
*/
public function ajouterAction(Request $request, $id = null, EntityManagerInterface $em, CommandeFournisseurService $commandeFournisseurService,
CommandeService $commandeService, FournisseurService $fournisseurService, TranslatorInterface $translator, ValidatorInterface $validator
) {
$repoArticle = $em->getRepository(Article::class);
$repoFournisseurs = $em->getRepository(Fournisseur::class);
$repo_taxe = $em->getRepository(Taxe::class);
$commande = new CommandeFournisseur();
$user = $this->getUser();
$commande->setUtilisateur($user);
$conditionId = $request->request->get('conditionId');
$id = "";
$dataTables = $request->request->get('dataTables');
if(!empty($dataTables['actions'])) {
$tempArray = ['ids' => $dataTables['actions']];
$id = $tempArray['ids'][0];
}
else {
$dataTables['actions']=array();
}
if ($id != "") {
$fournisseurIds = $request->request->get('fournisseur');
if ($fournisseurIds[$id] != '') {
$repoFournisseurs = $em->getRepository(Fournisseur::class);
$fournisseur = $repoFournisseurs->find($fournisseurIds[$id]);
if (is_object($fournisseur)) {
$commande->setFraisFixe($fournisseur->getFraisFixe());
if (is_object($fournisseur->getModereglement())) {
$commande->setModeReglement($fournisseur->getModereglement());
if (is_object($fournisseur->getCompta()) && $fournisseur->getCompta()->getId() == 1) {
$commande->setAvecTaxe(true);
}
}
}
}
}
//Saisie préremplie (avoir)
$valeurs = $request->query->get('valeurs');
//var_dump($valeurs);
if ($valeurs != '') {
$repo_commande = $em->getRepository(CommandeFournisseur::class);
$commandeOrigine = $repo_commande->find($valeurs['commande']);
if (is_object($commandeOrigine)) {
$commande = new CommandeFournisseur;
$commande->setFournisseur($commandeOrigine->getFournisseur());
}
//print_r($valeurs['articles']['choixArticlesAvoir']);
if (array_key_exists('commande', $valeurs)) {
$repo_article_commande = $em->getRepository(ArticleCommande::class);
//print_r($valeurs);
for ($i = 0; $i < count($valeurs['articles']['idArticleCommande']); $i++) {
if (in_array($valeurs['articles']['idArticleCommande'][$i], $valeurs['articles']['choixArticlesAvoir'])) {
$articleCommande = $repo_article_commande->find($valeurs['articles']['idArticleCommande'][$i]);
if (is_object($articleCommande)) {
$clone = clone $articleCommande;
$clone->setId(null);
$clone->setArticleCommandeParent(null);
$clone->setArticleCommandeRepris($articleCommande);
$clone->setQuantite(-$valeurs['articles']['quantite'][$i]);
$date = date_format($commande->getDate(), 'd/m/Y');
$utilisateur = $commande->getUtilisateur();
//$commentaire = "Reprise sur facture n° ".$commande->getReference()." du ".$date.' saisie par '.$utilisateur->getNom().' '.$utilisateur->getPrenom();
$commentaire = "Reprise sur facture n° ".$commandeOrigine->getReference()." du ".$date;
$clone->setCommentaire($commentaire);
//echo "<div>Qte : ".$valeurs['articles']['quantite'][$i]."</div>";
//echo "<div>ID : ".$valeurs['articles']['idArticle'][$i]."</div>";
//echo "<div>REM : ".$clone->getRemise()."</div>";
//echo "<br/>";
$commande->addArticleCommande($clone);
}
}
}
}
}
$form = $this->createForm(CommandeFournisseurType::class, $commande);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
if ($request->request->get('export') != '') {
//echo "toto";
//exit;
}
$articles = [
'ids' => $request->request->get('ids'),
'commentaire' => $request->request->get('commentaire'),
'commentaireSuppl' => $request->request->get('commentaireSuppl'),
'commentairePrive' => $request->request->get('commentairePrive'),
'libelles' => $request->request->get('libelles'),
'tva' => $request->request->get('tva'),
'idsTva' => $request->request->get('idsTva'),
'remise' => $request->request->get('remiseValue'),
'remiseSuppl' => $request->request->get('remiseSuppl'),
'prix' => $request->request->get('prix'),
'qte' => $request->request->get('qte'),
'rals' => $request->request->get('rals'),
'conditionsAchat' => $request->request->get('conditionsAchat'),
'fabricationIds' => $request->request->get('fabricationIds'),
'fraisAnnexes' => $request->request->get('fraisAnnexes'),
'articlesCommande' => $request->request->get('articlesCommande'),
'coefficientsConditionnement' => $request->request->get('coefficientsConditionnement'),
'ecocontribution' => $request->request->get('ecocontribution'),
'dateApproximativeReception' => $request->request->get('dateApproximativeReception'),
'montantHT' => $request->request->get('montantHT'),
'montantTVA' => $request->request->get('montantTVA'),
'PrixAchatUnitaireAvecFrais' => $request->request->get('PrixAchatUnitaireAvecFrais'),
'ajouterFraisPrixAchat' => $request->request->get('ajouterFraisPrixAchat'),
'articlesCommandeRepris' => $request->request->get('articlesCommandeRepris'),
'idsArticleCommandeOrigine' => $request->request->get('idArticleCommandeOrigine'),
'articlesCommandeIds' => $request->request->get('articlesCommandeIds'),
];
//
if (is_array($articles['ids']) && count($articles['ids']) > 0) {
foreach ($articles['ids'] as $key => $article) {
if ($articles['conditionsAchat'][$key] == "") {
$id = $articles['ids'][$key];
$art = $repoArticle->find($id);
if ($art->getDivers() == 1) {
$repo_cond = $em->getRepository(ConditionAchat::class);
$cond = $repo_cond->findOneBy(['article' => $art]);
if (is_object($cond)) {
$articles['conditionsAchat'][$key] = $cond->getId();
}
}
}
}
}
$valeurs = ["articles" => $articles, 'typeDocument' => 'commande'];
$em->persist($commande);
$em->flush();
$commandeFournisseurService->sauvegarder($commande, $valeurs);
$commandeService->changeDateLivraisonTheoriqueCommandeProcess(null, $commande);
/*
$commandeFournisseurService = $this->container->get('dtc.commande.fournisseur');
$commandeFournisseurService->creerHistorique($commande, 1);
*/
$this->addFlash('notice', $translator->trans('Commande fournisseur ajoutée avec succès !'));
//exit;
//return $this->redirectToRoute('dtc_commande_fournisseur_liste',array());
return $this->redirectToRoute('dtc_commande_fournisseur_modifier', ["id" => $commande->getId()]);
} else {
$errors = $validator->validate($commande);
//echo "PAS VALIDE";
}
} elseif ($conditionId != '') {
$conditionAchat = $em->getRepository(ConditionAchat::class)->find($conditionId);
if (is_object($conditionAchat)) {
$article = $conditionAchat->getArticle();
$fournisseur = $conditionAchat->getFournisseur();
if (is_object($fournisseur)) {
$commande->setFournisseur($fournisseur);
$commande->setModeReglement($fournisseur->getModereglement());
}
$conditionAchats = [$conditionAchat];
if (is_object($article->getArticleEnconsigne())) {
//verifier condition d'achat
$conditionAchat = $em->getRepository(ConditionAchat::class)->findOneBy([
'article' => $article->getArticleEnconsigne(),
'fournisseur' => $fournisseur,
]);
if (is_object($conditionAchat)) {
$conditionAchats[] = $conditionAchat;
}
}
foreach ($conditionAchats as $conditionAchat) {
$article = $conditionAchat->getArticle();
$articleCommande = new ArticleCommande;
if (is_object($article)) {
$articleCommande->setArticle($article);
$articleCommande->setEcocontribution($article->getEcocontribution());
}
$quantite = $request->request->get('qteAcommander');
$articleCommande->setQuantite($quantite);
$articleCommande->setRal($quantite);
$articleCommande->setPrixBase($conditionAchat->getPrixAchatBrut());
$articleCommande->setConditionAchat($conditionAchat);
$articleCommande->setLibelle($conditionAchat->getLibelle());
$articleCommande->setFraisAnnexes($conditionAchat->getFraisAnnexes());
if ($conditionAchat->getCoefficientConditionnement() == '') {
$articleCommande->setCoefficientConditionnement(1);
} else {
$articleCommande->setCoefficientConditionnement($conditionAchat->getCoefficientConditionnement());
}
$articleCommande->setRemise($conditionAchat->getTauxRemise());
$articleCommande->setRemiseSupplementaire($conditionAchat->getTauxRemiseSupplementaire());
$taxe = $repo_taxe->find(5);
if (is_object($fournisseur)) {
$taxe = $fournisseurService->getTaxe($fournisseur, $article);
}
if (is_object($taxe)) {
$articleCommande->setTva($taxe->getTaux());
$articleCommande->setTaxe($taxe);
}
$commande->addArticleCommande($articleCommande);
}
}
} else {
//print_r($request->request->get('libelles'));
$dataTables = $request->request->get('dataTables');
if(!empty($dataTables['actions'])) {
$tempArray = ['ids' => $dataTables['actions']];
}
else {
$dataTables['actions']=array();
}
$articles = [
'ids' => $dataTables['actions'],
'qte' => $request->request->get('qte'),
'conditions' => $request->request->get('conditions'),
/*
'commentaire'=>$request->request->get('commentaire'),
'commentaireSuppl'=>$request->request->get('commentaireSuppl'),
'libelles'=>$request->request->get('libelles'),
'tva'=>$request->request->get('tva'),
'remise'=>$request->request->get('remiseValue'),
'remiseSuppl'=>$request->request->get('remiseSuppl'),
'prix'=>$request->request->get('prix'),
'qte'=>$request->request->get('qte'),
'rals'=>$request->request->get('rals')
*/
];
$id = "";
if(!empty($articles['ids'])) $id = $articles['ids'][0];
if ($id != "") {
$fournisseurIds = $request->request->get('fournisseur');
if ($fournisseurIds[$id] != '') {
$repo_fabrication = $em->getRepository(Fabrication::class);
}
$repoFournisseurs = $em->getRepository(Fournisseur::class);
$fournisseur = $repoFournisseurs->find($fournisseurIds[$id]);
if (is_object($fournisseur)) {
$commande->setFournisseur($fournisseur);
}
if (is_object($fournisseur->getModereglement())) {
$commande->setModeReglement($fournisseur->getModereglement());
}
foreach ($articles['ids'] as $key => $id) {
$article = $repoArticle->find($id);
if (is_object($article)) {
$conditionAchat = '';
$repo_condition_achat = $em->getRepository(ConditionAchat::class);
if ( ! empty($articles['conditions'][$id])) {
$conditionAchat = $repo_condition_achat->find($articles['conditions'][$id]);
}
if ( ! is_object($conditionAchat)) {
$conditionAchat = $repo_condition_achat->findOneBy(['article' => $id]);
}
if (is_object($conditionAchat)) {
$conditionAchats = [$conditionAchat];
if (is_object($article->getArticleEnconsigne())) {
//verifier condition d'achat
$conditionAchat = $em->getRepository(ConditionAchat::class)->findOneBy([
'article' => $article->getArticleEnconsigne(),
'fournisseur' => $fournisseur,
]);
if (is_object($conditionAchat)) {
$conditionAchats[] = $conditionAchat;
}
}
foreach ($conditionAchats as $conditionAchat) {
$article = $conditionAchat->getArticle();
$articleCommande = new ArticleCommande;
$articleCommande->setArticle($article);
$articleCommande->setEcocontribution($article->getEcocontribution());
$articleCommande->setRal($articles['qte'][$id]);
$articleCommande->setQuantite($articles['qte'][$id]);
//prix
$prix = 0;
$quantite = 0;
$remise = 0;
$remiseSupplementaire = 0;
if (is_object($conditionAchat)) {
$articleCommande->setConditionAchat($conditionAchat);
$articleCommande->setLibelle($conditionAchat->getLibelle());
$articleCommande->setFraisAnnexes($conditionAchat->getFraisAnnexes());
$articleCommande->setCoefficientConditionnement($conditionAchat->getCoefficientConditionnement());
$articleCommande->setRemise(floatval($conditionAchat->getTauxRemise()));
$articleCommande->setRemiseSupplementaire(floatval($conditionAchat->getTauxRemiseSupplementaire()));
$prix = $conditionAchat->getPrixAchatBrut();
}
if ($prix == 0) {
$prix = $article->getPrixBase();
$quantite = $articles['qte'][$id];
$remise = 0;
}
$articleCommande->setPrixBase($prix);
$taxe = $repo_taxe->find(5);
if (is_object($commande->getFournisseur())) {
$taxe = $fournisseurService->getTaxe($commande->getFournisseur(), $article);
}
if (is_object($taxe)) {
$articleCommande->setTva($taxe->getTaux());
$articleCommande->setTaxe($taxe);
}
//$artCode->setTvaVente($tva);
//$artCode->setTotalHt(round($valeurs['articles']['montantHT'][$i],2));
//$totalTva += $tva;
//$total += $artCode->getTotalHtV2();
$articleCommande->setAjouterFraisPrixAchat(true);
$commande->addArticleCommande($articleCommande);
}
}
}
}
//$commande->setTotal
}
}
return $this->render('GestionComerciale/CommandeFournisseur/ajouter.html.twig', ['commande' => $commande, 'form' => $form->createView(), 'errors' => $errors]);
}
/**
* @Route("/achat/commande/modifier/{id}", name="dtc_commande_fournisseur_modifier")
*/
public function modifierAction(Request $request, CommandeFournisseur $commande, EntityManagerInterface $em,
CommandeFournisseurService $commandeFournisseurService, CommandeService $commandeService, TranslatorInterface $translator, ValidatorInterface $validator
) {
$user = $this->getUser();
//$commande->setUtilisateur($user);
$modalWidth = 800;
if ( ! empty($request->request->get('commande'))) {
$commandeClient = $em->getRepository(Commande::class)->find($request->request->get('commande'));
if (is_object($commandeClient)) {
$commande->setCommande($commandeClient);
}
}
$form = $this->createForm(CommandeFournisseurType::class, $commande);
$est_editable = $commandeFournisseurService->estEditable($commande);
$est_receptionnable = $commandeFournisseurService->estReceptionnable($commande);
$est_annulable = $commandeFournisseurService->estAnnulable($commande);
$taxes = $em->getRepository(Taxe::class)->findAll();
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
$droit = $this->isGranted(EntityVoter::UPDATE, CommandeFournisseur::class);
if ( ! $droit) {
return $this->redirectToRoute('dtc_commande_fournisseur_modifier', ["id" => $commande->getId()]);
}
if ($form->isValid()) {
if ($request->request->get('annuler') != '') {
$commandeFournisseurService->annulerCommande($commande);
$commandeService->changeDateLivraisonTheoriqueCommandeProcess(null, $commande);
$this->addFlash('notice', $translator->trans('Commande annulée avec succès !'));
$commandeFournisseurService->creerHistorique($commande, 6);
return $this->redirectToRoute('dtc_commande_fournisseur_liste', []);
}
$em->persist($commande);
$em->flush();
$articles = [
'valider' => $request->request->get('valider'),
'valider-commande' => $request->request->get('valider-commande'),
'ids' => $request->request->get('ids'),
'commentaire' => $request->request->get('commentaire'),
'commentaireSuppl' => $request->request->get('commentaireSuppl'),
'commentairePrive' => $request->request->get('commentairePrive'),
'libelles' => $request->request->get('libelles'),
'tva' => $request->request->get('tva'),
'idsTva' => $request->request->get('idsTva'),
'remise' => $request->request->get('remiseValue'),
'remiseSuppl' => $request->request->get('remiseSuppl'),
'prix' => $request->request->get('prix'),
'qte' => $request->request->get('qte'),
'rals' => $request->request->get('rals'),
'conditionsAchat' => $request->request->get('conditionsAchat'),
'fabricationIds' => $request->request->get('fabricationIds'),
'fraisAnnexes' => $request->request->get('fraisAnnexes'),
'articlesCommande' => $request->request->get('articlesCommande'),
'coefficientsConditionnement' => $request->request->get('coefficientsConditionnement'),
'ecocontribution' => $request->request->get('ecocontribution'),
'dateApproximativeReception' => $request->request->get('dateApproximativeReception'),
'montantHT' => $request->request->get('montantHT'),
'montantTVA' => $request->request->get('montantTVA'),
'PrixAchatUnitaireAvecFrais' => $request->request->get('PrixAchatUnitaireAvecFrais'),
'ajouterFraisPrixAchat' => $request->request->get('ajouterFraisPrixAchat'),
'articlesCommandeRepris' => $request->request->get('articlesCommandeRepris'),
'idsArticleCommandeOrigine' => $request->request->get('idArticleCommandeOrigine'),
'articlesCommandeIds' => $request->request->get('articlesCommandeIds'),
];
//print_r($articles);
//exit;
//echo "<div>GGGGGG</div>";
$valeurs = ["articles" => $articles, 'typeDocument' => 'commande'];
if ($request->request->get('action') == 'valider') {
$valeurs['valider'] = true;
}
//if($request->request->get('action') == 'devalider') $valeurs['devalider'] = true;
if ($request->isXmlHttpRequest()) {
$commandeFournisseurService->sauvegarder($commande, $valeurs, false, false);
if ($request->request->get('declencheur') != "supprimer-row-article") {
$commandeFournisseurService->creerHistorique($commande, $request->request->get('declencheur'));
}
return new JsonResponse(['data' => 1, 'date' => (new \Datetime)->format('d/m/Y Ã H:i')]);
}
$commandeFournisseurService->sauvegarder($commande, $valeurs);
$commandeService->changeDateLivraisonTheoriqueCommandeProcess(null, $commande);
$this->addFlash('notice', $translator->trans('Commande sauvegardée avec succès !'));
$commandeFournisseurService->creerHistorique($commande, 2);
//dump($valeurs);
return $this->redirectToRoute('dtc_commande_fournisseur_modifier', ["id" => $commande->getId()]);
} else {
$errors = $validator->validate($commande);
}
}
if ($commande->getTotal() < $commande->getFournisseur()->getMinimumFacturation()) {
$this->addFlash(
'warning',
'La commande n\'a pas atteint le minimum de commande de <b>'.$commande->getFournisseur()->getMinimumFacturation().'€</b> pour ce fournisseur !'
);
}
if ($commande->getTotal() < $commande->getFournisseur()->getFranco()) {
$this->addFlash(
'warning',
'La commande n\'a pas atteint le franco de <b>'.$commande->getFournisseur()->getFranco().'€</b> pour ce fournisseur !'
);
}
return $this->render('GestionComerciale/CommandeFournisseur/ajouter.html.twig', [
'form' => $form->createView(),
'errors' => $errors,
'commande' => $commande,
'modalWidth' => $modalWidth,
'est_editable' => $est_editable,
'est_receptionnable' => $est_receptionnable,
'est_annulable' => $est_annulable,
'taxes' => $taxes,
]);
}
/**
* @Route("/achat/commande/supprimer/multiple", name="dtc_commande_fournisseur_liste_supprimer")
*/
public function supprimerMultipleAction(Request $request, EntityManagerInterface $em, TranslatorInterface $translator)
{
$data = $request->get('dataTables');
$ids = $data['actions'];
$repo = $em->getRepository(CommandeFournisseur::class);
for ($i = 0; $i < count($ids); $i++) {
$v = $repo->find($ids[$i]);
if (is_object($v)) {
$em->remove($v);
}
}
$em->flush();
$this->addFlash(
'notice',
$translator->trans('Commande supprimée avec succès !')
);
$url = $this->generateUrl('dtc_commande_fournisseur_liste', []);
return new JsonResponse(['url' => $url, 'valide' => '1']);
}
/**
* @Route("/achat/commande/supprimer/{id}", name="dtc_commande_fournisseur_supprimer")
*/
public function supprimerAction(Request $request, CommandeFournisseur $commande, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$titre_modal = $translator->trans("Demande de confirmation");
$user = $this->getUser();
$form = $this->createForm(SupprimerCommandeFournisseurType::class, $commande);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$em->remove($commande);
$em->flush();
$this->addFlash(
'notice',
$translator->trans('Commande supprimée avec succès !')
);
$url = $this->generateUrl('dtc_commande_fournisseur_liste', []);//dtc_commande_fournisseur_liste
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
} else {
$errors = $validator->validate($commande);
$rendu = $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'id' => $commande->getId(), 'type' => '']);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
$rendu = $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'id' => $commande->getId(), 'type' => '', 'errors' => $errors]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("/achat/charger-tableau/{id}/{type}", name="dtc_commande_fournisseur_charger_tableau")
*/
public function chargerTableauAction(Request $request, $id = "0", $type = "a", EntityManagerInterface $em)
{
$repo_article = $em->getRepository(Article::class);
//$article = $repo_article->findBy(array());
//$rendu = $this->renderView('GestionComerciale/CommandeFournisseur/charger_tableau.html.twig', array("id"=>$article,"article"=>$id));
$rendu = $this->renderView('GestionComerciale/CommandeFournisseur/charger_tableau.html.twig', ["id" => $id, "type" => $type]);
return new JsonResponse(['rendu' => $rendu]);
}
/**
* @Route("/achat/commande", name="dtc_commande_fournisseur_liste")
*/
public function listerAction(Request $request, $article = '', EntityManagerInterface $em, ColonneTableauService $serviceColonneTableau, Datatable $datatable,
TranslatorInterface $translator
) {
$statutCommande = $request->query->get('statutCommande');
//$tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(0),"visible"=>true,"orderable"=>false);
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [0],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "id"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id text-center",
"targets" => [1],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "date"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [2],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "utilisateur"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id text-center",
"targets" => [3],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "dateReceptionEstime"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id text-center",
"targets" => [4],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "dateReception"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id text-center",
"targets" => [5],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "accuse"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id text-center",
"targets" => [6],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "dateAccuse"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [7],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "reference"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [8],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "fournisseur"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [9],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "statut"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id text-right",
"targets" => [10],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "totalHT"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id text-center",
"targets" => [11],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "litige"),
];
$tableau_class_cellule[] = ["orderable" => false, "className" => "colonne_id", "targets" => [12], "visible" => true];
$this->datatable($request, $datatable, $translator);
$param = $request->query->all();
$repo_statut = $em->getRepository(StatutCommandeFournisseur::class);
$liste_statut = $repo_statut->findBy(['id' => [5, 1, 2, 3, 4]]);
$affichageParDefaut = true;
foreach ($param as $key => $par) {
$pos = strpos($key, 'statut_commande_');
if ($pos !== false) {
$affichageParDefaut = false;
break;
}
}
$param['affichageParDefaut'] = $affichageParDefaut;
$repo_fournisseur = $em->getRepository(Fournisseur::class);
$fournisseurs = $repo_fournisseur->findBy([], ['libelle' => 'ASC']);
if ($article == '') {
return $this->render(
'GestionComerciale/CommandeFournisseur/lister.html.twig',
[
'liste_statut' => $liste_statut,
'parametres' => $param,
"fournisseurs" => $fournisseurs,
'tableauClassColonne' => $tableau_class_cellule,
'statutCommande' => $statutCommande,
]
);
} else {
return $this->render(
'GestionComerciale/CommandeFournisseur/dataTableCommandesF.html.twig',
[
'liste_statut' => $liste_statut,
'parametres' => $param,
"fournisseurs" => $fournisseurs,
'tableauClassColonne' => $tableau_class_cellule,
'article' => $article,
]
);
}
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatable(Request $request, Datatable $datatable, TranslatorInterface $translator)
{
$param = $request->query->all();
$datatable->setEntity(CommandeFournisseur::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Date") => 'x.date',
$translator->trans("Créée par") => 'u.nom',
$translator->trans("Date de réception estimée") => 'x.dateApproximativeReception',
$translator->trans("Date réception") => 'r.date',
$translator->trans("Accusé") => 'x.accuseReception',
$translator->trans("Date accusé") => 'x.dateAccuseReception',
$translator->trans("Réf") => 'x.reference',
$translator->trans("Fournisseur") => 'f.libelle',
$translator->trans("Statut") => 's.id',
$translator->trans("Total HT") => 'x.total',
$translator->trans("Litige") => 'l.id',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.utilisateur', 'u', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.receptions', 'r', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.fournisseur', 'f', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.litiges', 'l', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
1 => [
'view' => 'FO/DataTable/heure.html.twig',
],
2 => [
'view' => 'FO/DataTable/utilisateur.html.twig',
],
3 => [
'view' => 'FO/DataTable/date.html.twig',
],
4 => [
'view' => 'FO/DataTable/date_reception_cmde_fournisseur.html.twig',
],
5 => [
'view' => 'FO/DataTable/statut.html.twig',
'params' => [
'edit_route' => 'dtc_commande_fournisseur_accuse',
],
],
6 => [
'view' => 'FO/DataTable/date.html.twig',
],
7 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => ['edit_route' => 'dtc_commande_fournisseur_modifier'],
],
8 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_fournisseur_modifier',
'typeDocument' => 'fournisseur',
],
],
9 => [
'view' => 'FO/DataTable/statut-commande-fournisseur.html.twig',
],
10 => [
'view' => 'FO/DataTable/total-ht-cf.html.twig',
],
11 => [
'view' => 'FO/DataTable/litiges.html.twig',
],
12 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_commande_fournisseur_modifier',
//'supprimer_route' => 'dtc_commande_fournisseur_supprimer',
'objet' => CommandeFournisseur::class,
'deplierFournisseur' => true,
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([6, 7, 8])
->setGroupBy("x.id");;
$where = '';
$parameters = [];
if (is_object($request)) {
$article = $request->query->get('article');
if ($article != '') {
$datatable->addJoin('x.articleCommande', 'ac', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('ac.article', 'a', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)/*->setWhere( // set your dql where statement
'a.id = :article',
array('article' => $article)
)*/
;
$where .= 'a.id = :article';
$parameters['article'] = $article;
//$datatable->setGroupBy("a.id");
}
/*
$statutCommande = $request->query->get('statutCommande');
if ($statutCommande == '' || $statutCommande == '3'){
if ($where != '') $where .= ' AND ';
$where .= 's.ordre IN (:statutCommande)';
$parameters['statutCommande'] = array(5,1);
} else {
if ($where != '') $where .= ' AND ';
$where .= 's.ordre IN (:statutCommande)';
$parameters['statutCommande'] = array($statutCommande);
}
*/
} else {
$datatable->setMultiple(
[
'delete' => [
'title' => 'Supprimer',
'route' => 'dtc_commande_liste_supprimer',
],
]
);
//$where .= 's.ordre IN (:statutCommande)';
//$parameters['statutCommande'] = array(5,1);
}
if (array_key_exists('parametres', $param)) {
if ( ! empty($param["parametres"]['litige'])) {
if ($where != "") {
$where .= " AND ";
}
$where .= '(l.id IS NOT NULL)';
}
if (array_key_exists('fournisseur', $param["parametres"]) and $param["parametres"]["fournisseur"] > 0) {
//$datatable->addJoin('x.client', 'client', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$parameters["fournisseur"] = $param["parametres"]["fournisseur"];
$where .= "f.id = :fournisseur";
}
if (array_key_exists('date_debut', $param["parametres"]) and $param["parametres"]["date_debut"] != "") {
$param["parametres"]["date_debut"] = \DateTime::createFromFormat('d/m/Y', $param["parametres"]["date_debut"]);
$param["parametres"]["date_debut"]->setTime(00, 00, 00);
$parameters["date_debut"] = $param["parametres"]["date_debut"];
if ($where != "") {
$where .= " AND ";
}
$where .= "x.date >= :date_debut";
}
if (array_key_exists('date_fin', $param["parametres"]) and $param["parametres"]["date_fin"] != "") {
$param["parametres"]["date_fin"] = \DateTime::createFromFormat('d/m/Y', $param["parametres"]["date_fin"]);
$param["parametres"]["date_fin"]->setTime(23, 59, 59);
$parameters["date_fin"] = $param["parametres"]["date_fin"];
if ($where != "") {
$where .= " AND ";
}
$where .= "x.date <= :date_fin";
}
foreach ($param['parametres'] as $key => $par) {
$pos = strpos($key, 'statut_commande_');
if ($pos !== false) {
$statutsCommande[] = str_replace('statut_commande_', '', $key);
}
}
}
if (empty($statutsCommande)) {
$statutsCommande = [5, 1, 2];
}
if (count($statutsCommande)) {
if (in_array(4, $statutsCommande)) {
if ($where != '') {
$where .= ' AND ';
}
$where .= 'x.reference NOT LIKE :like';
$parameters['like'] = "FF%";
}
if ($where != '') {
$where .= ' AND ';
}
$where .= 's.id IN (:statutsCommande)';
$parameters['statutsCommande'] = $statutsCommande;
}
//echo $where;
//print_r($parameters['statutsCommande']);
if ($where != '') {
$datatable->setWhere($where, $parameters);
}
//$datatable->setSearchFields(array(0,2));
return $datatable;
}
/**
* @Route("/achat/commande/grid", name="dtc_commande_fournisseur_liste_grid")
*/
public function gridAction(Request $request, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatable($request, $datatable, $translator)->execute();
}
/**
* Grid action
* @return Response
*/
/**
* @Route("/carnet-commande/grid", name="dtc_carnet_commande_liste_grid")
*/
public function carnetCommandeGridAction(Request $request, Datatable $datatable, EntityManagerInterface $em, TranslatorInterface $translator)
{
$selectReappro = $request->query->get('selectReappro');
return $this->datatableCarnetCommande2($selectReappro, $request, $datatable, $em, $translator)->execute();
}
/**
* @Route("/achat/commande/{id}/reception", name="dtc_commande_fournisseur_reception")
*/
public function receptionAction(Request $request, CommandeFournisseur $commande, EntityManagerInterface $em, TranslatorInterface $translator,
ColonneTableauService $serviceColonne, CommandeFournisseurService $commandeService, NumerotationDocumentService $numerotationService,
EtatCommandeService $etatCommandeService
) {
set_time_limit(600);
$articles_array_pour_bp_auto = [];
$repo_article = $em->getRepository(Article::class);
$repo_article_commande = $em->getRepository(ArticleCommande::class);
$user = $this->getUser();
$commande->setUtilisateur($user);
//$request = $request;
$errors = "";
//$colspan = 14;
$tabColonneUser = [];
$tabColonneUser["id"] = 1;
$tabColonneUser["reference"] = 1;
$tabColonneUser["libelle"] = 1;
$tabColonneUser["referenceF"] = 1;
$tabColonneUser["libelleF"] = 1;
$tabColonneUser["qteStockCommande"] = 1;
$tabColonneUser["uniteVente"] = 1;
$tabColonneUser["qte"] = 1;
$tabColonneUser["uniteAchat"] = 1;
$tabColonneUser["ralF"] = 1;
$tabColonneUser["qtéreceptionn"] = 1;
$tabColonneUser["prixHT"] = 1;
$tabColonneUser["txRem"] = 1;
$tabColonneUser["txRemSuppl"] = 1;
$tabColonneUser["fraisAnnexes"] = 1;
$tabColonneUser["ecocontribution"] = 0;
$tabColonneUser["prixAchatUnitaire"] = 1;
$tabColonneUser["montantHt"] = 1;
$tabColonneUser["totalHt"] = 1;
$tabColonneUser["CC"] = 1;
$tabColonneUser["qteMiniAchat"] = 1;
$tabColonneUser["conditionnement"] = 1;
$tabColonneUser["etiquettes"] = 1;
$colspan = count($tabColonneUser);
$colonneUtilisateur = "App\\Entity\\GestionComerciale\\ReceptionCommandeFournisseur";
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'id') == false) {
$colspan--;
$tabColonneUser["id"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'reference') == false) {
$colspan--;
$tabColonneUser["reference"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'libelle') == false) {
$colspan--;
$tabColonneUser["libelle"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'referenceF') == false) {
$colspan--;
$tabColonneUser["referenceF"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'libelleF') == false) {
$colspan--;
$tabColonneUser["libelleF"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'qteStockCommande') == false) {
$colspan--;
$tabColonneUser["qteStockCommande"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'uniteVente') == false) {
$colspan--;
$tabColonneUser["uniteVente"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'qte') == false) {
$colspan--;
$tabColonneUser["qte"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'uniteAchat') == false) {
$colspan--;
$tabColonneUser["uniteAchat"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'ralF') == false) {
$colspan--;
$tabColonneUser["ralF"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'qtéreceptionn') == false) {
$colspan--;
$tabColonneUser["qtéreceptionn"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'prixHT') == false) {
$colspan--;
$tabColonneUser["prixHT"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'txRem') == false) {
$colspan--;
$tabColonneUser["txRem"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'txRemSuppl') == false) {
$colspan--;
$tabColonneUser["txRemSuppl"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'fraisAnnexes') == false) {
$colspan--;
$tabColonneUser["fraisAnnexes"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'ecocontribution') == false) {
$colspan--;
$tabColonneUser["ecocontribution"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'prixAchatUnitaire') == false) {
$colspan--;
$tabColonneUser["prixAchatUnitaire"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'montantHt') == false) {
$colspan--;
$tabColonneUser["montantHt"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'totalHt') == false) {
$colspan--;
$tabColonneUser["totalHt"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'CC') == false) {
$colspan--;
$tabColonneUser["CC"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'qteMiniAchat') == false) {
$colspan--;
$tabColonneUser["qteMiniAchat"] = 0;
}
if ($serviceColonne->getColonneUtilisateur($colonneUtilisateur, 'conditionnement') == false) {
$colspan--;
$tabColonneUser["conditionnement"] = 0;
}
if ($request->isMethod('POST')) {
/*
$conditionsAchat = $request->request->get('conditionsAchat');
foreach($conditionsAchat as $conditionAchat){
$actionAmener = $request->request->get('nvelleCondAchat_'.$conditionAchat);
$commandeService->creerOuMajConditionAchat($conditionAchat, $actionAmener);
}
*
*/
$prixCalc = str_replace(" ", "", $request->request->get('prix'));
$prixCalc = str_replace(chr(194).chr(160), '', $prixCalc);
$commentaireReception = $request->request->get('commentaireReception');
$articles = [
'ids' => $request->request->get('ids'),
'commentaire' => $request->request->get('commentaire'),
'libelles' => $request->request->get('libelles'),
'tva' => $request->request->get('tva'),
//'remiseSuppl'=>$request->request->get('remiseSuppl'),
'prix' => $prixCalc,
'qte' => $request->request->get('qte'),
'rals' => $request->request->get('rals'),
//'nvellesCond'=>$request->request->get('NvellesCondition'),
'conditionsAchat' => $request->request->get('conditionsAchat'),
'etiquettes' => $request->request->get('etiquettes'),
'remises' => $request->request->get('remises'),
'remisesSuppl' => $request->request->get('remisesSuppl'),
'receptions' => $request->request->get('receptions'),
'fabrications' => $request->request->get('fabrications'),
'emplacement' => $request->request->get('emplacement'),
'nbEmplacement' => $request->request->get('nbEmplacement'),
'fraisAnnexes' => $request->request->get('fraisAnnexes'),
'articlesCommande' => $request->request->get('articlesCommande'),
'articlesCommandeRepris' => $request->request->get('articlesCommandeRepris'),
'coefficientsConditionnement' => $request->request->get('coefficientsConditionnement'),
'ecocontribution' => $request->request->get('ecocontribution')
//'numero_serie'=>$request->request->get('numero_serie'),
//'duree_garantie'=>$request->request->get('duree_garantie'),
];
$BL = $request->request->get('BL');
$dateReceptionTxt = $request->request->get('dateReception');
$dateReception = date_create_from_format('d/m/Y H:i', $dateReceptionTxt);
if ($BL == '') {
$BL = $dateReception->format('Ymd-His');
}
foreach ($articles['ids'] as $key => $article) {
if ($articles['qte'][$key] > 0) {
$articles_array_pour_bp_auto = $articles['ids'][$key];
}
if ($articles['conditionsAchat'][$key] == "") {
$id = $articles['ids'][$key];
$art = $repo_article->find($id);
if ($art->getDivers() == 1) {
$repo_cond = $em->getRepository("DTCArticlesBundle:ConditionAchat");
$cond = $repo_cond->findOneBy(['article' => $art]);
if (is_object($cond)) {
$articles['conditionsAchat'][$key] = $cond->getId();
}
}
}
}
$valeurs = ["articles" => $articles, 'typeDocument' => 'commande', 'BL' => $BL, 'dateReception' => $dateReception];
$reception = new Reception();
$reception->setCommandeFournisseur($commande);
$reception->setFraisPortSupplementaire($commande->getFraisPortSupplementaire());
$reception->setFraisFixe($commande->getFraisFixe());
$reception->setFraisApproche($commande->getFraisApproche());
$reception->setCommentaire($commentaireReception);
$reception->setFournisseur($commande->getFournisseur());
$reception->setBonLivraison($BL);
if (is_object($dateReception)) {
$reception->setDate($dateReception);
}
$reception->setReference($numerotationService->generer($reception));
$em->persist($reception);
//les numéros de série
$numeraux_serie = $request->request->get('numero_serie');
$durees_garantie = $request->request->get('duree_garantie');
if (count($numeraux_serie) > 0) {
foreach ($numeraux_serie as $articleCommandeId => $numerauxByArticle) {
foreach ($numerauxByArticle as $numero_serie) {
if ($numero_serie != '') {
$ac = $repo_article_commande->find($articleCommandeId);
$duree = $durees_garantie[$articleCommandeId];
$numeroSerie = new NumeroSerie();
$numeroSerie->setDureeGarantie($duree);
if (is_object($ac)) {
$numeroSerie->setArticleCommande($ac);
}
$numeroSerie->setNumero($numero_serie);
$em->persist($numeroSerie);
}
}
}
}
$em->flush();
//echo "OKOKOKOKOAAAAA";
$commandeService->creerMvtStock($commande, $valeurs, $reception);
//$commandeService->creerNouvellesConditionsAchat($commande, $valeurs);
$message = '';
foreach ($articles['ids'] as $key => $article) {
$conditionAchat = $articles['conditionsAchat'][$key];
$actionAmener = $request->request->get('condAchat_'.$conditionAchat);
$message .= $conditionAchat.' - '.$actionAmener.' - ';
if ($actionAmener != 1) {
$donnees['prix'] = $articles['prix'][$key];
$donnees['fraisAnnexes'] = $articles['fraisAnnexes'][$key];
$message .= $donnees['prix'];
$commandeService->creerOuMajConditionAchat($conditionAchat, $actionAmener, $donnees);
}
$message .= ' / ';
}
//Création des BPs
$repo_commande = $em->getRepository(Commande::class);
/*
if(count($commande->getArticleCommande())>0) {
foreach($commande->getArticleCommande() as $acc) {
$articles_array_pour_bp_auto[]=$acc->getArticle()->getId();
}
}
*/
if (count($articles_array_pour_bp_auto) > 0) {
//print_r($articles_array_pour_bp_auto);
$commandesEnCours = $repo_commande->listeCommandeEnCoursPourReception($articles_array_pour_bp_auto);
foreach ($commandesEnCours as $c) {
//echo "<div>".$c->getReference()." ID ".$c->getId()."</div>";
$etatCommandeService->calculerEtatCommande($c, $creer_bon = true);
}
}
/*
$commandes = $repo_commande->listeCommandeEnCours2();
$output->writeln('<info>qte : '.count($commandes).'</info>');
foreach($commandes as $c ) {
$output->writeln('COMMANDE ID : '.$c->getId());
if($c->getId() == 18018 or 1==1) {
$etatCommandeService->calculerEtatCommande($c,$creer_bon = true);
// exit;
}
}
*/
//Reduction du temps possible en utilisant un process pour mettre à jour les états de commande.
/*
$repo_commande = $em->getRepository(Commande::class);
$etatCommandeService = $this->container->get('dtc.etatcommande');
$commandes = $repo_commande->listeCommandeEnCours();
foreach($commandes as $c ) {
$etatCommandeService->calculerEtatCommande($c,$creer_bon = true);
}
*
*/
$this->addFlash('notice', $translator->trans('Mouvements de stock créés avec succès !'));
//return $this->redirectToRoute('dtc_commande_fournisseur_modifier',array("id"=>$commande->getId()));
$url = $this->generateUrl('dtc_commande_fournisseur_modifier', ["id" => $commande->getId(), "tab" => "receptions"]);
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
}
$etiquettes = $repo_commande = $em->getRepository(Etiquette::class)->findAll();
$titre_modal = $translator->trans('Réceptionner');
$rendu = $this->renderView('GestionComerciale/CommandeFournisseur/reception.html.twig', [
'etiquettes' => $etiquettes,
'errors' => $errors,
'commande' => $commande,
'tabColonneUser' => $tabColonneUser,
'modalWidth' => 800,
]);//'form' => $form->createView(),
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
//return $this->render('GestionComerciale/CommandeFournisseur/reception.html.twig', array('form' => $form->createView(),'errors'=>$errors,'commande'=>$commande));
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableCarnetCommande(Datatable $datatable, TranslatorInterface $translator)
{
$datatable->setEntity(ArticleCommande::class, "ac")
->setFields(
[
$translator->trans("ID") => 'p.id',
$translator->trans("Réf") => 'p.reference',
$translator->trans("Libelle") => 'p.libelle',
$translator->trans("Fournisseur") => 'f.libelle',//'p.id',
$translator->trans("Stock") => 'p.stock',
$translator->trans("Qté mini") => 'p.seuilMiniCommandeFournisseur',
//$translator->trans("Clients") => 'c.id',
$translator->trans("Clients") => 'p.id',
$translator->trans("Ral client") => 'p.stockReserve',
$translator->trans("Ral fourn.") => 'p.ralFournisseur',
$translator->trans("Qté") => 'p.id',
$translator->trans("Type Réappro") => 'p.id',
$translator->trans("Art. int./ext.") => 'p.id',
/*
$translator->trans("Actions") => 'p.id',
*
*/
"_identifier_" => 'p.id',
]
)
->addJoin('ac.article', 'p', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.fournisseur', 'f', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('ac.commandeFournisseur', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('p.fournisseurDefaut', 'f', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('p.conditionsAchat', 'ca', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('ca.fournisseur', 'f', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
3 => [
'view' => 'FOBundle:DataTable:choix_fournisseur_2.html.twig'//'DTCFO/DataTable/choix_fournisseur_controller.html.twig'
],
/*
4 => array(
'view' => 'FO/DataTable/etat_commande_fournisseur.html.twig'
),
*
*/
/*
6 => array(
'view' => 'FO/DataTable/clients_controller.html.twig'
),
*
*/
6 => [
'view' => 'FO/DataTable/clients2.html.twig',
],
9 => [
'view' => 'FO/DataTable/qte_conseillee_controller.html.twig',
],
10 => [
'view' => 'FO/DataTable/type_reappro.html.twig',
],
11 => [
'view' => 'FO/DataTable/type_reappro_int_ext.html.twig',
],
/*
12 => array(
'view' => 'FO/DataTable/actions.html.twig',
'params' => array(
'edit_route' => 'dtc_commande_fournisseur_modifier',
'supprimer_route' => 'dtc_commande_fournisseur_supprimer',
'objet' => 'DTCGestionComercialeBundle:CommandeFournisseur',
),
),
*
*/
]
)
->setWhere('(p.stock-COALESCE(p.stockReserve,0)+COALESCE(p.ralFournisseur,0)) < p.seuilMiniCommandeFournisseur and c.statutCommande IN (1,2)')
->setGroupBy('p.id')
->setMultiple(
[
'commande' => [
'title' => 'Commander',
'route' => 'dtc_commande_fournisseur_ajouter',
],
'exportPdf' => [
'title' => 'Export PDF',
'route' => 'dtc_suggestion_commande_fournisseur_export',
],
]
)
->setSearch(true)
->setSearchFields([1, 2, 3, 10, 11]);
//$datatable->getQueryBuilder()->setDoctrineQueryBuilder($query);
return $datatable;
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableCarnetCommande2($selectReappro, Request $request, Datatable $datatable, EntityManagerInterface $em, TranslatorInterface $translator)
{
$conn = $em->getConnection();
$conn->getConfiguration()->setSQLLogger(null);
$param = $request->query->all();
$parametres = [];
if ( ! array_key_exists('parametres', $param)) {
$param["parametres"] = $param;
}
$datatable->setEntity(Article::class, "p")
->setFields(
[
$translator->trans("ID") => 'p.id',
$translator->trans("Réf") => 'p.reference',
$translator->trans("Réf fourn") => 'cha.referenceFournisseur',
$translator->trans("Libellé") => 'p.libelle',
$translator->trans("Fournisseur") => 'f.reference',//'p.id',
$translator->trans("Clients") => 'p.id',
$translator->trans("Qté mini") => 'p.seuilMiniCommandeFournisseur',
$translator->trans("Qté maxi") => 'p.seuilMaxiCommandeFournisseur',
$translator->trans("Stock") => 'p.stock',
$translator->trans("Dispo") => 'p.dispo',
$translator->trans("RAL client") => 'p.stockReserve',
$translator->trans("Reserve fab.") => 'p.stockReserveFabrication',
$translator->trans("RAL fourn.") => 'p.ralFournisseur',
$translator->trans('conditionnement') => 'cha.conditionnement',
$translator->trans('delai') => 'cha.delai',
$translator->trans("Qté") => 'p.id',
$translator->trans("PU HT") => 'p.prixBase',
$translator->trans("CUMP") => 'p.cpump',
$translator->trans("Type Réappro") => 'p.id',
//$translator->trans("Art. int./ext.") => 'p.produitInterne',
/*
$translator->trans("Actions") => 'p.id',
*
*/
"_identifier_" => 'p.id',
]
)
//->addJoin('p.articleCommande', 'ac', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('ac.commande', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('p.conditionsAchat', 'cha', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('p.fournisseurDefaut', 'f', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
1 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => ['edit_route' => 'dtc_article_modifier'],
],
2 => [
'view' => 'FO/DataTable/reference_fournisseur.html.twig',
'params' => [],
],
4 => [
'view' => 'FO/DataTable/choix_fournisseur_2.1.html.twig'//'DTCFO/DataTable/choix_fournisseur_controller.html.twig'
],
5 => [
'view' => 'FO/DataTable/clients2.html.twig',
],
6 => [
'view' => 'FO/DataTable/ajout_class_number.html.twig',
'params' => ['class' => 'text-center'],
],
7 => [
'view' => 'FO/DataTable/ajout_class_number.html.twig',
'params' => ['class' => 'text-center'],
],
8 => [
'view' => 'FO/DataTable/ajout_class_number.html.twig',
'params' => ['class' => 'text-center'],
],
9 => [
'view' => 'FO/DataTable/ajout_class_number.html.twig',
'params' => ['class' => 'text-center'],
],
10 => [
'view' => 'FO/DataTable/ral.html.twig',
'params' => ['class' => 'text-center'],
],
11 => [
'view' => 'FO/DataTable/ajout_class_number.html.twig',
'params' => ['class' => 'text-center'],
],
12 => [
'view' => 'FO/DataTable/ajout_class_number.html.twig',
'params' => ['class' => 'text-center'],
],
13 => [
'view' => 'FO/DataTable/conditionnement.html.twig',
],
14 => [
'view' => 'FO/DataTable/delai.html.twig',
],
15 => [
'view' => 'FO/DataTable/qte_conseillee2.html.twig',
],
16 => [
//'view' => 'FO/DataTable/prix.html.twig'
'view' => 'FO/DataTable/prix_condition_achat.html.twig',
],
17 => [
'view' => 'FO/DataTable/prix.html.twig',
],
18 => [
'view' => 'FO/DataTable/type_reappro_2.html.twig',
],
/*
14 => array(
'view' => 'FO/DataTable/type_reappro_int_ext_2.html.twig'
),
*
*/
/*
12 => array(
'view' => 'FO/DataTable/actions.html.twig',
'params' => array(
'edit_route' => 'dtc_commande_fournisseur_modifier',
'supprimer_route' => 'dtc_commande_fournisseur_supprimer',
'objet' => 'DTCGestionComercialeBundle:CommandeFournisseur',
),
),
*
*/
]
)
->setGroupBy('p.id')
->setMultiple(
[
'commande' => [
'title' => 'Commander',
'route' => 'dtc_commande_fournisseur_ajouter',
],
]
)
->setSearch(true)
->setSearchFields([1, 2, 3, 4]);
$where = "(p.aCommander = 1 and (p.est_commentaire = 0 or p.est_commentaire is NULL) and (p.divers is null or p.divers = 0 or (p.divers = 1 and p.stock >= 0 and p.stockReserve > 0)))";
$where .= " and (p.arretGamme IS NULL or p.arretGamme = 0)";
//$where .= "and f.id != 132 ";
//$where = 'p.aCommander = 1 and p.produitInterne != 1 and p.virtuel != 1 and p.consigne != 1 ';
/*
if ($selectReappro == 'ral')
$where .= ' and (COALESCE(p.stockReserve, 0) - COALESCE(p.stockReserveFabrication, 0)) > 0 ';
if ($selectReappro == 'reappro')
$where .= ' and p.stockReserve = 0 ';
if ($selectReappro == 'fabrication')
$where .= ' and p.stockReserveFabrication > 0 ';
*/
switch ($selectReappro) {
case 'ral':
$where .= ' and (COALESCE(p.stockReserve, 0) - COALESCE(p.stockReserveFabrication, 0)) > 0 ';
break;
case 'ralP':
$where .= ' and (COALESCE(p.stockReserve, 0) - COALESCE(p.stockReserveFabrication, 0)) > 0 and (COALESCE(p.stock, 0) + COALESCE(p.ralFournisseur, 0) - COALESCE(p.stockReserve, 0)) < 0 ';
break;
case 'reappro':
$where .= ' and COALESCE(p.seuilMiniCommandeFournisseur, 0) > 0 and COALESCE(p.seuilMaxiCommandeFournisseur, 0) > 0 ';
break;
case 'reapproP':
$where .= ' and COALESCE(p.seuilMiniCommandeFournisseur, 0) > 0 and COALESCE(p.seuilMaxiCommandeFournisseur, 0) > 0 and (COALESCE(p.stock, 0) + COALESCE(p.ralFournisseur, 0)) < COALESCE(p.seuilMaxiCommandeFournisseur, 0)';
break;
case 'fabrication':
$where .= ' and p.stockReserveFabrication > 0 ';
break;
case 'fabricationP':
$where .= ' and p.stockReserveFabrication > 0 and (COALESCE(p.stock, 0) + COALESCE(p.ralFournisseur, 0) - COALESCE(p.stockReserve, 0)) < 0 ';
break;
default:
break;
}
if (array_key_exists('categorie_article', $param['parametres']) and $param['parametres']['categorie_article'] != "") {
$datatable->addJoin('p.articleCategorie', 'ac', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$datatable->addJoin('ac.categorie', 'cat', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$where .= " AND cat.id = :categorie";
$parametres['categorie'] = $param['parametres']['categorie_article'];
if (array_key_exists('sous_categorie_article', $param['parametres']) and $param['parametres']['sous_categorie_article'] != "") {
$datatable->addJoin('p.articleCategorie', 'ac2', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$datatable->addJoin('ac2.categorie', 'cat2', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$where .= " AND cat2.id = :categorie2";
$parametres['categorie2'] = $param['parametres']['sous_categorie_article'];
}
if (array_key_exists('sous_sous_categorie_article', $param['parametres']) and $param['parametres']['sous_sous_categorie_article'] != "") {
$datatable->addJoin('p.articleCategorie', 'ac3', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$datatable->addJoin('ac3.categorie', 'cat3', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$where .= " AND cat3.id = ".$param['parametres']['sous_sous_categorie_article'];
}
}
if (array_key_exists('marque', $param['parametres']) and $param['parametres']['marque'] != "") {
//$qb->join('x.marque', 'm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$where .= " AND p.marque = :marque";
$parametres['marque'] = $param['parametres']['marque'];
}
if (array_key_exists('type', $param['parametres']) and $param['parametres']['type'] != "") {
//$qb->join('x.marque', 'm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$where .= " AND p.type = :type";
$parametres['type'] = $param['parametres']['type'];
}
if (array_key_exists('client', $param['parametres']) and $param['parametres']['client'] != "") {
$datatable->addJoin('p.clientsEnRal', 'cRal', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$where .= " AND cRal.id = :client";
$parametres['client'] = $param['parametres']['client'];
}
$datatable->setWhere($where, $parametres)
->setOrder("p.reference", "asc");
//$datatable->getQueryBuilder()->setDoctrineQueryBuilder($query);
return $datatable;
}
public function qteConseilleeAction(Request $request, Article $article, ArticleService $articleService)
{
$retour = $articleService->getQteConseillee($article);
return $this->render('FO/DataTable/qte_conseillee.html.twig', [
'qteConseillee' => $retour['qteConseillee'],
'qteMini' => $retour['qteMini'],
'qteMaxi' => $retour['qteMaxi'],
'article' => $article,
]);
}
/**
* @Route("", name="")
*/
public function getClientsAction(Request $request, Article $article, EntityManagerInterface $em)
{
$clients = [];
$repoArticleCommande = $em->getRepository(ArticleCommande::class);
if (is_object($article)) {
$retour = $repoArticleCommande->getRalClientEtCmdAssociees($article);
if ($retour != '') {
foreach ($retour as $datas) {
foreach ($datas as $data) {
$client['id'] = $data['clientId'];
$client['name'] = $data['client'];
$clients[$data['clientId']] = $client;
}
}
}
}
return $this->render('FO/DataTable/clients.html.twig', [
'clients' => $clients,
]);
}
/**
* @Route("", name="")
*/
public function getPrixByConditionAchatAction(Request $request, $condition, $quantite)
{
$quantiteMini = $condition->getQuantite();
$quantiteConditionnement = $condition->getConditionnement();
if ($quantite < $quantiteMini) {
$quantiteR = ceil($quantite / $quantiteMini) * $quantiteMini;
} else {
$quantiteR = $quantiteMini;
}
$retour['quantite'] = ceil($quantiteR / $quantiteConditionnement) * $quantiteConditionnement;
$retour['remise'] = $condition->getRemise();
$retour['prix'] = $condition->getPrixUnitaire();
$response = new JsonResponse();
$response->setData($retour);
return $response;
}
/**
* @Route("/carnet-commande/refresh", name="dtc_carnet_commande_refresh")
*/
public function carnetCommandeRefreshAction(Request $request, EntityManagerInterface $em)
{
/*
$process = new Process('php app/console maj:qteConseillee');
$process->run();
*
*/
$em = $em;
$repoArticle = $em->getRepository(Article::class);
$repoArticle->updateACommander();
/*
$articlesAmaj = $repoArticle->findByACommander(true);
foreach ($articlesAmaj as $article){
$articleService = $this->get('dtc.article');
$articleService->majQteConseillee($article);
}
*
*/
$response = new JsonResponse();
$response->setData(1);
return $response;
}
/**
* @Route("/achat/facturer", name="dtc_facturer_fournisseur")
*/
public function facturerAction(Request $request, EntityManagerInterface $em, FournisseurService $fournisseurService, CommandeFournisseurService $commandeService)
{
$data = $request->get('dataTables');
$ids = $data['actions'];
$ids = $request->get('mouvementsStock');
$repo_mode_reglement = $em->getRepository(ModeReglement::class);
$repo_mvt_stock = $em->getRepository(MouvementStock::class);
$repo_fournisseur = $em->getRepository(Fournisseur::class);
$repo_article_commande = $em->getRepository(ArticleCommande::class);
$repo_conditionAchat = $em->getRepository(ConditionAchat::class);
$repo_statut_commande = $em->getRepository(StatutCommandeFournisseur::class);
$statutCommandeFournisseur = $repo_statut_commande->findOneByOrdre(5);//Facture
$repo_taxe = $em->getRepository(Taxe::class);
$date = new \DateTime;
$commandes = [];
$message = '';
$count = 0;
$modeReglementFournisseurTab = [];
//Regroupement par fournisseur
foreach ($ids as $id) {
//Verifier si le mvt de stock n'est pas déjà facturé totalement
$mvtStock = $repo_mvt_stock->find($id);
//$fournisseur = $mvtStock->getFournisseur();
$fournisseur = $mvtStock->getCommandeFournisseur()->getFournisseur();
if ($fournisseur->getDivers() == 1 && is_object($fournisseur->getParent())) {
$fournisseur = $fournisseur->getParent();
}
$fournisseurs[$fournisseur->getId()][] = $id;
$modeReglementFournisseurTab[$fournisseur->getId()][] = $mvtStock->getCommandeFournisseur()->getModeReglement()->getId();
}
//print_r($modeReglementFournisseurTab);
//exit;
if ($em->getFilters()->isEnabled('softdeleteable')) {
$em->getFilters()->disable('softdeleteable');
}
//Regroupement par ref
foreach ($fournisseurs as $fournisseur => $mvtsStockId) {
$articles = [];
foreach ($mvtsStockId as $mvtStockId) {
$mvtStock = $repo_mvt_stock->find($mvtStockId);
$articleId = $mvtStock->getArticle()->getId();
$divers = $mvtStock->getArticle()->getDivers();
$prix = $mvtStock->getPrixAchat();
$remise = $mvtStock->getRemise();
$remiseSuppl = $mvtStock->getRemiseSuppl();
$fraisAnnexes = $mvtStock->getFraisAnnexes();
//Regroupement par ref
//$key = $articleId.'-'.strval($prix).'-'.strval($remise).'-'.strval($remiseSuppl).'-'.strval($fraisAnnexes);
//Pas de regroupement par réf
$key = $mvtStockId;
if (array_key_exists($key, $articles)) {
//$articles[$key]['quantite'] += floatval($mvtStock->getQuantite());
$articles[$key]['quantite'] += floatval($mvtStock->getResteAfacturer());
$articles[$key]['mvtsStock'][] = $mvtStock;
} else {
$article['mvtsStock'] = [$mvtStock];
//$article['quantite'] = floatval($mvtStock->getQuantite());
$article['quantite'] = floatval($mvtStock->getResteAfacturer());
//$article['prix'] = floatval($mvtStock->getPrixAchat());
if (is_object($mvtStock->getArticleCommandeCf()) && ! empty($mvtStock->getArticleCommandeCf()->getCoefficientConditionnement())) {
$article['prix'] = floatval($mvtStock->getPrixSansRemise()) * $mvtStock->getArticleCommandeCf()->getCoefficientConditionnement();
} elseif (is_object($mvtStock->getConditionAchat()) && ! empty($mvtStock->getConditionAchat()->getCoefficientConditionnement())) {
$article['prix'] = floatval($mvtStock->getPrixSansRemise()) * $mvtStock->getConditionAchat()->getCoefficientConditionnement();
} else {
$article['prix'] = floatval($mvtStock->getPrixSansRemise());
}
/*
if(is_object($mvtStock->getConditionAchat()) && !empty($mvtStock->getConditionAchat()->getCoefficientConditionnement())){
$article['prix'] = floatval($mvtStock->getPrixSansRemise()) * $mvtStock->getConditionAchat()->getCoefficientConditionnement();
} else {
$article['prix'] = floatval($mvtStock->getPrixSansRemise());
}
*/
//$article['prix'] = floatval($mvtStock->getPrixSansRemise());
$article['remise'] = floatval($remise);
$article['remiseSuppl'] = floatval($remiseSuppl);
$article['fraisAnnexes'] = floatval($fraisAnnexes);
$article['article'] = $mvtStock->getArticle();
$article['conditionAchat'] = $mvtStock->getConditionAchat();
$article['coefficientConditionnement'] = 1;
$article['ecocontribution'] = $mvtStock->getEcocontribution();
if ($mvtStock->getLibelle() == '') {
$article['libelle'] = $mvtStock->getArticle()->getLibelle();
} else {
$article['libelle'] = $mvtStock->getLibelle();
}
//
$articleCommande = $mvtStock->getArticleCommandeCf();
if ( ! is_object($articleCommande)) {
$articleCommande = $repo_article_commande->findOneBy([
'commandeFournisseur' => $mvtStock->getCommandeFournisseur()->getId(),
'article' => $mvtStock->getArticle()->getId(),
]);
}
if (is_object($articleCommande)) {
$article['tva'] = $articleCommande->getTvaVente();
$coefficientConditionnement = $articleCommande->getCoefficientConditionnement();
if ($coefficientConditionnement != '') {
$article['coefficientConditionnement'] = $coefficientConditionnement;
}
$article['prixAchatUnitaireAvecFrais'] = $articleCommande->getPrixAchatUnitaireAvecFrais();
$article['ajouterFraisPrixAchat'] = $articleCommande->getAjouterFraisPrixAchat();
} else {
$article['tva'] = 0;
}
$articles[$key] = $article;
}
}
$commandes[$fournisseur] = $articles;
}
foreach ($commandes as $key => $articles) {
$count++;
$commande = new CommandeFournisseur();
$fournisseur = $repo_fournisseur->find($key);
if (is_object($fournisseur)) {
$commande->setFournisseur($fournisseur);
$commande->setTauxEscompte($fournisseur->getTauxEscompte());
if (is_object($fournisseur->getCompta()) && $fournisseur->getCompta()->getId() == 1) {//Taxable
$tauxTva = $repo_taxe->find(1)->getTaux();
} else {
$tauxTva = 0;
}
for ($m = 0; $m < count($modeReglementFournisseurTab[$fournisseur->getId()]); $m++) {
// echo "<div>COMPTEUR : ".$m." FOUR ID:".$fournisseur->getId()." VALEUR TAB:".$modeReglementFournisseurTab[$fournisseur->getId()][$m]."</div>";
if ($m == 0) {
$modeReglement = $repo_mode_reglement->find($modeReglementFournisseurTab[$fournisseur->getId()][$m]);
} else {
if ($modeReglement->getId() != $modeReglementFournisseurTab[$fournisseur->getId()][$m] && is_object($fournisseur->getModeReglement())) {
$modeReglement = $fournisseur->getModeReglement();
}
}
}
// echo "<div>FIN</div>";
//exit;
$commande->setModeReglement($modeReglement);
$commande->setTauxTvaFraisPort($tauxTva);
$commande->setFraisFixe($fournisseur->getFraisFixe());
if (is_object($fournisseur->getDevise())) {
$tauxChange = $fournisseur->getDevise()->getTauxChange();
} else {
$tauxChange = 1;
}
$commande->setTauxChange($tauxChange);
}
// if(is_object($statutCommandeFournisseur)) $commande->setStatutCommande($statutCommandeFournisseur);
$commande->setDate($date);
//Numérotation
/*
$numerotationService = $this->container->get('dtc.numerotationdocument');
$commande->setReference($numerotationService->generer($commande));
*
*/
$totalHtCommande = 0;
$poids = 0;
$receptions = [];
foreach ($articles as $article) {
//$mvtStock = $repo_mvt_stock->find($mvtStockId);
//$message .= $ac['id'].', '.$ac;
$articleCommande = new ArticleCommande();
$articleCommande->setQuantite($article['quantite']);
$articleCommande->setPrixBase($article['prix']);
$articleCommande->setRemise($article['remise']);
$articleCommande->setRemiseSupplementaire($article['remiseSuppl']);
$articleCommande->setFraisAnnexes($article['fraisAnnexes']);
$articleCommande->setLibelle($article['libelle']);
$articleCommande->setArticle($article['article']);
//$articleCommande->setTvaAchat($article['tva']);
//$articleCommande->setTvaVente($article['tva']);
$articleCommande->setConditionAchat($article['conditionAchat']);
$articleCommande->setCoefficientConditionnement($article['coefficientConditionnement']);
$articleCommande->setEcocontribution($article['ecocontribution']);
$taxe = '';
if (is_object($fournisseur)) {
$taxe = $fournisseurService->getTaxe($fournisseur, $article['article']);
}
if ( ! is_object($taxe)) {
$taxe = $repo_taxe->find(5);
}
if (is_object($taxe)) {
$articleCommande->setTva($taxe->getTaux());
$articleCommande->setTaxe($taxe);
}
foreach ($article['mvtsStock'] as $mvtStock) {
$receptions[$mvtStock->getReception()->getId()] = $mvtStock->getReception();
$articleCommande->addMouvementsStockFF($mvtStock);
}
//Calcul pu ht
//$montantHt = $article['prix'] - ($article['prix'] - $article['prix']*$article['remise'])*$article['remiseSuppl'];
$montantRemise = $article['prix'] * $article['remise'] / 100;
$montantHt = $article['prix'] - $montantRemise;
$montantHt = $montantHt - ($article['remiseSuppl'] * $montantHt / 100);
//$totalHt = $montantHt * $article['quantite'] / $article['coefficientConditionnement'];
//$totalHt = (($montantHt / $article['coefficientConditionnement']) + floatval($article['ecocontribution']) ) * $article['quantite'];
//$totalHt = ($montantHt + floatval($article['ecocontribution']) + floatval($article['fraisAnnexes'])) * $article['quantite'] / $article['coefficientConditionnement'];
$totalHt = ($montantHt / $article['coefficientConditionnement'] + floatval($article['ecocontribution']) + floatval($article['fraisAnnexes'])) * $article['quantite'];
$articleCommande->setTotalHt($totalHt);
//recalcul tva achat/vente
$tva = $totalHt * floatval($articleCommande->getTva()) / 100;
$tva = round($tva, 2);
$articleCommande->setTvaAchat($tva);
$articleCommande->setTvaVente($tva);
//echo "<div>a totalHtCommande ".$totalHtCommande."</div>";
$totalHtCommande += $totalHt;
$poids = floatval($article['article']->getPoids()) * floatval($article['quantite']);
if ( ! empty($article['prixAchatUnitaireAvecFrais'])) {
$articleCommande->setPrixAchatUnitaireAvecFrais($article['prixAchatUnitaireAvecFrais']);
}
$articleCommande->setAjouterFraisPrixAchat($article['ajouterFraisPrixAchat']);
//echo "<div>b totalHtCommande ".$totalHtCommande."</div>";
$em->persist($articleCommande);
$commande->addArticleCommande($articleCommande);
}
$fraisPortSupplementaire = 0;
$fraisFixe = 0;
$fraisApproche = 0;
foreach ($receptions as $reception) {
$fraisPortSupplementaire += $reception->getFraisPortSupplementaire();
$fraisFixe += $reception->getFraisFixe();
$fraisApproche += $reception->getFraisApproche();
}
$commande->setFraisPortSupplementaire($fraisPortSupplementaire);
$commande->setFraisFixe($fraisFixe);
$commande->setFraisApproche($fraisApproche);
//Calcul du total de la commande
//TestCalcule
$commande->setTotal($totalHtCommande);
$commande->setTotalPoids($poids);
//$commande->setFraisPortSupplementaire($this->get('dtc.fournisseur')->getFraisPort($commande));
$em->persist($commande);
$em->flush();
$commandeService->sauvegarderFacture($commande, [], true);
}
$em->getFilters()->enable('softdeleteable');
//$em->flush();
if ($count == 1) {
$message = '1 facture ajoutée!';
} else {
$message = $count.' factures ajoutées!';
}
$this->addFlash(
'notice',
$message
);
//Une seule facture -> redirection vers cette facture
if (count($commandes) == 1) {
//$form = $this->createForm(new CommandeFournisseurType($em), $commande);
//return $this->render('GestionComerciale/CommandeFournisseur/ajouter.html.twig', array('commande' => $commande, 'form' => $form->createView(),'errors'=>$errors));
$url = $this->generateUrl('dtc_facture_fournisseur_modifier', ['id' => $commande->getId()]);
} else {
$url = $this->generateUrl('dtc_factures_fournisseur_liste');
}
return new JsonResponse(['url' => $url, 'valide' => '1']);
}
/**
* @Route("/achat/factures", name="dtc_factures_fournisseur_liste")
*/
public function factureListerAction(Request $request, $article = '', EntityManagerInterface $em, ColonneTableauService $serviceColonneTableau, Datatable $datatable,
TranslatorInterface $translator
) {
$tableau_class_cellule[] = ["className" => "colonne_id", "targets" => [0], "visible" => true, "orderable" => false];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [1],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "id"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id text-center",
"targets" => [2],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "date"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [3],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "reference"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [4],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "fournisseurNumeroFacture"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [5],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "fournisseur"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [6],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "statut"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id text-right",
"targets" => [7],
"visible" => $serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class, "totalHT"),
];
$tableau_class_cellule[] = ["orderable" => false, "className" => "colonne_id", "targets" => [8], "visible" => true];
//$tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(7),"visible"=>$serviceColonneTableau->getColonneUtilisateur(CommandeFournisseur::class,"totalHT"));
$this->datatableFacture($request, $datatable, $translator);
$transfertCompta = $request->query->get('transfertCompta');
if ($transfertCompta == '') {
$transfertCompta = 0;
}
$param = $request->query->all();
$repo_fournisseur = $em->getRepository(Fournisseur::class);
$fournisseurs = $repo_fournisseur->findBy([], ['libelle' => 'ASC']);
if ($article == '') {
return $this->render(
'GestionComerciale/CommandeFournisseur/lister-facture.html.twig',
['parametres' => $param, "fournisseurs" => $fournisseurs, 'tableauClassColonne' => $tableau_class_cellule, 'transfertCompta' => $transfertCompta]
);
} else {
return $this->render(
'GestionComerciale/CommandeFournisseur/dataTableCommandesF.html.twig',
[
'parametres' => $param,
"fournisseurs" => $fournisseurs,
'tableauClassColonne' => $tableau_class_cellule,
'article' => $article,
'transfertCompta' => $transfertCompta,
]
);
}
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableFacture(Request $request, Datatable $datatable, TranslatorInterface $translator)
{
$param = $request->query->all();
$transfertCompta = $request->query->get('transfertCompta');
$datatable->setEntity(CommandeFournisseur::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Date") => 'x.date',
$translator->trans("Réf") => 'x.reference',
$translator->trans("Réf facture fournisseur") => 'x.fournisseurNumeroFacture',
$translator->trans("Fournisseur") => 'f.libelle',
$translator->trans("Validée") => 'x.transfertCompta',
$translator->trans("Total HT") => 'x.total',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.fournisseur', 'f', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
1 => [
'view' => 'FO/DataTable/heure.html.twig',
],
2 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => ['edit_route' => 'dtc_facture_fournisseur_modifier'],
],
4 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_fournisseur_modifier',
'typeDocument' => 'fournisseur',
],
],
5 => [
'view' => 'FO/DataTable/booleen.html.twig',
],
/*
4 => array(
'view' => 'FO/DataTable/statut-commande-fournisseur.html.twig'
),
*
*/
6 => [
'view' => 'FO/DataTable/total-ht-cf.html.twig',
],
7 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_facture_fournisseur_modifier',
//'supprimer_route' => 'dtc_commande_fournisseur_supprimer',
'objet' => CommandeFournisseur::class,
'deplierFournisseur' => true,
],
],
]
)
->setMultiple(
[
/*
'delete' => array(
'title' => 'Supprimer',
'route' => 'dtc_commande_liste_supprimer'
),
*
*/
'valider' => [
'title' => 'Valider',
'route' => 'dtc_factures_fournisseur_liste_valider',
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([2, 3, 4, 5]);
$where = '';
$parameters = [];
$where .= 's.ordre IN (:statutCommande)';
$parameters['statutCommande'] = [5];
/*
if($transfertCompta == 1 || $transfertCompta == 0 || $transfertCompta == ''){
$where .= ' AND x.transfertCompta = :transfertCompta';
if($transfertCompta == '') $transfertCompta = 0;
$parameters['transfertCompta'] = $transfertCompta;
}
*/
if (array_key_exists('parametres', $param)) {
//print_r($param["parametres"]);
if (array_key_exists('transfertCompta', $param["parametres"])) {
$transfertCompta = $param["parametres"]["transfertCompta"];
if ($transfertCompta == 1 || $transfertCompta == 0 || $transfertCompta == '') {
$where .= ' AND x.transfertCompta = :transfertCompta';
if ($transfertCompta == '') {
$transfertCompta = 0;
}
$parameters['transfertCompta'] = $transfertCompta;
}
}
if (array_key_exists('fournisseur', $param["parametres"]) and $param["parametres"]["fournisseur"] > 0) {
//$datatable->addJoin('x.client', 'client', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$parameters["fournisseur"] = $param["parametres"]["fournisseur"];
if ($where != "") {
$where .= " AND ";
}
$where .= "f.id = :fournisseur";
}
if (array_key_exists('date_debut', $param["parametres"]) and $param["parametres"]["date_debut"] != "") {
$param["parametres"]["date_debut"] = \DateTime::createFromFormat('d/m/Y', $param["parametres"]["date_debut"]);
$param["parametres"]["date_debut"]->setTime(00, 00, 00);
$parameters["date_debut"] = $param["parametres"]["date_debut"];
if ($where != "") {
$where .= " AND ";
}
$where .= "x.date >= :date_debut";
}
if (array_key_exists('date_fin', $param["parametres"]) and $param["parametres"]["date_fin"] != "") {
$param["parametres"]["date_fin"] = \DateTime::createFromFormat('d/m/Y', $param["parametres"]["date_fin"]);
$param["parametres"]["date_fin"]->setTime(23, 59, 59);
$parameters["date_fin"] = $param["parametres"]["date_fin"];
if ($where != "") {
$where .= " AND ";
}
$where .= "x.date <= :date_fin";
}
} else {
$where .= ' AND x.transfertCompta = :transfertCompta';
$parameters['transfertCompta'] = 0;
}
$datatable->setWhere($where, $parameters);
//$datatable->setSearchFields(array(0,2));
return $datatable;
}
/**
* @Route("/achat/factures/grid", name="dtc_factures_fournisseur_liste_grid")
*/
public function factureGridAction(Request $request, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatableFacture($request, $datatable, $translator)->execute();
}
/**
* @Route("/achat/facture/modifier/{id}", name="dtc_facture_fournisseur_modifier")
*/
public function modifierFactureAction(Request $request, CommandeFournisseur $commande, EntityManagerInterface $em,
CommandeFournisseurService $commandeService, TranslatorInterface $translator, ValidatorInterface $validator
) {
set_time_limit(600);
$user = $this->getUser();
if ( ! is_object($commande->getUtilisateur())) {
$commande->setUtilisateur($user);
}
$modal = $request->query->get('modal');
$modalWidth = 800;
$form = $this->createForm(FactureFournisseurType::class, $commande, ['validation_groups' => 'facture']);
$est_editable = $commandeService->estEditable($commande);
$est_receptionnable = $commandeService->estReceptionnable($commande);
$est_annulable = $commandeService->factureEstAnnulable($commande);
$taxes = $em->getRepository(Taxe::class)->findAll();
$errors = "";
$errors = $validator->validate($commande, null, ['facture']);
$form->handleRequest($request);
//echo 'test';
if ($form->isSubmitted()) {
//echo 'test 2';
$droit = $this->isGranted(EntityVoter::UPDATE, CommandeFournisseur::class);
if ( ! $droit) {
return $this->redirectToRoute('dtc_commande_fournisseur_modifier', ["id" => $commande->getId()]);
}
if ($form->isValid()) {
if ($request->request->get('annuler') != '') {
$commandeService->annulerFactureCommande($commande);
$this->addFlash(
'notice',
$translator->trans('Facture annulée avec succès !')
);
return $this->redirectToRoute('dtc_factures_fournisseur_liste', []);
}
$em->persist($commande);
$em->flush();
$articles = [
'valider' => $request->request->get('valider'),
'ids' => $request->request->get('ids'),
'commentaire' => $request->request->get('commentaire'),
'libelles' => $request->request->get('libelles'),
'tva' => $request->request->get('tva'),
'idsTva' => $request->request->get('idsTva'),
'remise' => $request->request->get('remiseValue'),
'txRemise' => $request->request->get('txRemise'),
'remiseSuppl' => $request->request->get('remiseSuppl'),
'prix' => $request->request->get('prix'),
'qte' => $request->request->get('qte'),
'rals' => $request->request->get('rals'),
'conditionsAchat' => $request->request->get('conditionsAchat'),
'articlesCommande' => $request->request->get('articlesCommande'),
'actionMajCondHA' => $request->request->get('actionMaj'),
'mvtsStock' => $request->request->get('mvtsStock'),
'montantHT' => $request->request->get('montantHT'),
'montantTVA' => $request->request->get('montantTVA'),
'PrixAchatUnitaireAvecFrais' => $request->request->get('PrixAchatUnitaireAvecFrais'),
'ajouterFraisPrixAchat' => $request->request->get('ajouterFraisPrixAchat'),
'choixArticles' => $request->request->get('choixArticles'),
'fraisAnnexes' => $request->request->get('fraisAnnexes'),
'ecocontribution' => $request->request->get('ecocontribution'),
];
//print_r($request->request->get('mvtsStock'));
//$articleCommande->addMouvementsStockFF($mvtStock);
$valeurs = ["articles" => $articles, 'typeDocument' => 'commande'];
if ($request->request->get('action') == 'valider') {
$valeurs['valider'] = true;
}
if ($request->request->get('action') == 'devalider') {
$valeurs['devalider'] = true;
}
if ($commande->getDateTransfertCompta() === null) {
$commandeService->sauvegarderFacture($commande, $valeurs);
}
$this->addFlash(
'notice',
$translator->trans('Facture sauvegardée avec succès !')
);
return $this->redirectToRoute('dtc_facture_fournisseur_modifier', ["id" => $commande->getId()]);
} else {
$errors = $validator->validate($commande, null, ['facture']);
}
}
if ($modal == 1) {
$template = 'GestionComerciale/CommandeFournisseur/facture-modal.html.twig';
$titre_modal = $commande->getReference();
$rendu = $this->renderView($template, [
'form' => $form->createView(),
'errors' => $errors,
'commande' => $commande,
'modalWidth' => $modalWidth,
'est_editable' => $est_editable,
'est_receptionnable' => $est_receptionnable,
'est_annulable' => $est_annulable,
'taxes' => $taxes,
]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
} else {
$template = 'GestionComerciale/CommandeFournisseur/facture.html.twig';
return $this->render($template, [
'form' => $form->createView(),
'errors' => $errors,
'commande' => $commande,
'modalWidth' => $modalWidth,
'est_editable' => $est_editable,
'est_receptionnable' => $est_receptionnable,
'est_annulable' => $est_annulable,
'taxes' => $taxes,
]);
}
}
/**
* @Route("/achat/commande/pdf/{id}", name="dtc_commande_fournisseur_pdf")
*/
public function pdfCommandeAction(Request $request, CommandeFournisseur $commande, $retour = true, EntityManagerInterface $em, Pdf $snappy)
{
$societe = $em->getRepository(Societe::class)->find(1);
$date_Y = date("Y");
$date_M = date("m");
$date_D = date("d");
$date = $date_Y.'/'.$date_M.'/'.$date_D;
$chemin_pdf = 'PDF/COMMANDES-ACHAT/'.$date.'/CMDE-'.$commande->getReference().'.pdf';
if (file_exists($chemin_pdf)) {
unlink($chemin_pdf);
}
//$footer = $this->renderView('FO/PDF/footer_pagination_pdf.html.twig', array('societe' => $societe));
$footer = $this->renderView('FO/PDF/footer_commande_fournisseur_pdf_pagination_pdf.html.twig', ['societe' => $societe, 'commande' => $commande]);
$header = $this->renderView('FO/PDF/header_commande_fournisseur_pdf.html.twig', ['societe' => $societe, 'commande' => $commande]);
$snappy->setOption('header-html', $header);
$snappy->setOption('footer-html', $footer);
$snappy->setOption('header-spacing', "4");
$snappy->setOption('footer-spacing', "3");
$snappy->setOption('disable-smart-shrinking', true);
//$snappy->setOption('print-media-type', false );
$snappy->setOption('page-height', "297");
$snappy->setOption('page-width', "210");
$articlesByPrestation = [];
if (count($commande->getFabrications()) > 0) {
foreach ($commande->getFabrications() as $fabrication) {
foreach ($fabrication->getArticleCommande() as $ac) {
if ($ac->getArticle()->getPrestation() == 1) {
$key = $ac->getArticle()->getId();
}
}
if ($key != '') {
foreach ($fabrication->getArticleCommande() as $ac) {
if ($ac->getArticle()->getPrestation() != 1) {
$articlesByPrestation[$key][] = $ac;
}
}
}
}
}
$snappy->generateFromHtml(
$this->renderView(
'GestionComerciale/CommandeFournisseur/template_pdf.html.twig',
[
'commande' => $commande,
'societe' => $societe,
'articlesByPrestation' => $articlesByPrestation,
]
),
$chemin_pdf
);
/*
$service = $this->get('dtc.commande');
$retour = $service->pdf($commande);
$chemin_pdf = $retour['chemin'];
*/
if ($retour == true) {
return $this->render('FO/PDF/conteneur_pdf.html.twig', [
'objet' => $commande,
'chemin_pdf' => '/'.$chemin_pdf,
'visualiser' => $request->query->get('visualiser'),
]);
}
}
/**
* @Route("/achat/facture/pdf/{id}", name="dtc_facture_fournisseur_pdf")
*/
public function pdfFactureAction(Request $request, CommandeFournisseur $commande, $retour = true, EntityManagerInterface $em,
TranslatorInterface $translator, ValidatorInterface $validator, Pdf $snappy
) {
$societe = $em->getRepository(Societe::class)->find(1);
$date_Y = date("Y");
$date_M = date("m");
$date_D = date("d");
$date = $date_Y.'/'.$date_M.'/'.$date_D;
$chemin_pdf = 'PDF/FACTURE-ACHAT/'.$date.'/C'.$commande->getReference().'.pdf';
if (file_exists($chemin_pdf)) {
unlink($chemin_pdf);
}
$footer = $this->renderView('FO/PDF/footer_pagination_pdf.html.twig', ['societe' => $societe]);
$header = $this->renderView('FO/PDF/header_commande_fournisseur_facture_pdf.html.twig', ['societe' => $societe, 'commande' => $commande]);
$snappy->setOption('header-html', $header);
$snappy->setOption('footer-html', $footer);
$snappy->setOption('margin-bottom', "10");
$articlesByPrestation = [];
if (count($commande->getFabrications()) > 0) {
foreach ($commande->getFabrications() as $fabrication) {
foreach ($fabrication->getArticleCommande() as $ac) {
if ($ac->getArticle()->getPrestation() == 1) {
$key = $ac->getArticle()->getId();
}
}
if ($key != '') {
foreach ($fabrication->getArticleCommande() as $ac) {
if ($ac->getArticle()->getPrestation() != 1) {
$articlesByPrestation[$key][] = $ac;
}
}
}
}
}
$snappy->generateFromHtml(
$this->renderView(
'GestionComerciale/CommandeFournisseur/template_facture_pdf.html.twig',
[
'commande' => $commande,
'societe' => $societe,
'articlesByPrestation' => $articlesByPrestation,
]
),
$chemin_pdf
);
/*
$service = $this->get('dtc.commande');
$retour = $service->pdf($commande);
$chemin_pdf = $retour['chemin'];
*/
if ($retour == true) {
return $this->render('FO/PDF/conteneur_pdf.html.twig', [
'objet' => $commande,
'chemin_pdf' => '/'.$chemin_pdf,
'visualiser' => $request->query->get('visualiser'),
]);
}
}
/**
* @Route("/achat/commande/{id}/email/envoyer", name="dtc_commande_fournisseur_email_envoyer")
*/
public function emailEnvoyerAction(Request $request, CommandeFournisseur $commande, EntityManagerInterface $em, TranslatorInterface $translator,
CommandeService $commande_service, CommandeFournisseurService $commandeFournisseurService, EmailService $emailService,
FileUploader $fileUploader
) {
$titre_modal = $translator->trans("Nouvel e-mail");
$errors = '';
if ($request->isMethod('POST')) {
$post = $request->request->all();
$expediteur = $post["expediteur"];
$donnees = [
'titre' => $request->request->get('titre'),
'nomFichier' => $request->request->get('nomFichier'),
'cheminPDF' => $request->request->get('cheminPDF'),
'message' => $request->request->get('message'),
'destinataires' => $request->request->get('destinataires'),
'expediteur' => $expediteur,
'images' => $request->request->get('images'),
'documents' => $request->request->get('documents'),
];
$errors = $emailService->envoyerEmailFournisseur($commande, $donnees);
if ($errors == '') {
$this->addFlash('notice', $translator->trans('Email envoyé avec succès !'));
} else {
$this->addFlash('warning', $errors);
}
$url = $request->request->get('url');
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url, 'errors' => $errors]);
} else {
$fileUploader->removeFiles(['folder' => 'emails/tmp/'.$commande->getId()]);
$retour = $commandeFournisseurService->pdf($commande);
$emails = [];
$emailsOrigine = "";
if ($commande->getFournisseur()->getEmail() != "") {
$emails = [$commande->getFournisseur()->getEmail()];
}
$emailsPD = null;
if (is_object($commande->getFournisseur()->getContacts())) {
foreach ($commande->getFournisseur()->getContacts() as $contact) {
if ($contact->getDefaut() == true) {
$emailsPD[] = $contact->getEmail();
} else {
$emails[] = $contact->getEmail();
}
}
} else {
foreach ($commande->getFournisseur()->getContacts() as $contact) {
$emails[] = $contact->getEmail();
}
}
$repoParametrage = $em->getRepository(Parametrage::class);
$Parametrage = $repoParametrage->find(1);
$texteMailCommande = "";
$texteMailCommande = $Parametrage->getTexteMailCommandeFournisseur();
$societe = $em->getRepository(Societe::class)->find(1);
$categorieEmail = 10;
$modelesEmail = [];
if ( ! empty($categorieEmail)) {
$categorieEmailObjet = $em->getRepository(CategorieEmail::class)->find($categorieEmail);
if (is_object($categorieEmailObjet)) {
$modelesEmail = $em->getRepository(Modele::class)->findBy([
'sousCategorie' => $categorieEmailObjet,
'statut' => true,
'dateSuppression' => null,
]);
}
}
if (count($modelesEmail) == 0) {
$modelesEmail = $em->getRepository(Modele::class)->findBy(['statut' => true]);
}
$modelesEmailRendu = [];
foreach ($modelesEmail as $modeleEmail) {
$sujet = $commande_service->replaceTag($modeleEmail->getSujet(), ['commandeFournisseur' => $commande]);
$message = $commande_service->replaceTag($modeleEmail->getMessage(), ['commandeFournisseur' => $commande]);
$expediteur = $modeleEmail->getExpediteur();
if ( ! filter_var($expediteur, FILTER_VALIDATE_EMAIL)) {
$expediteur = $societe->getEmail();
}
$modelesEmailRendu[$modeleEmail->getSousCategorie()->getCategorieParent()->getId()][$modeleEmail->getSousCategorie()->getId()][] = [
'modeleEmail' => $modeleEmail,
'sujet' => $sujet,
'message' => $message,
'expediteur' => $expediteur,
];
}
if ( ! empty($get["origine"]) && $get["origine"] != "") {
$repoHistoriqueMail = $em->getRepository(HistoriqueCommande::class);
$historiqueMail = $repoHistoriqueMail->find($get["origine"]);
if (is_object($historiqueMail)) {
$texteMailCommande = $historiqueMail->getMessageMail();
$sujetMail = $historiqueMail->getSujetMail();
$emailsOrigine = $historiqueMail->getDestinataireMail();
}
}
$rendu = $this->renderView('GestionComerciale/CommandeFournisseur/email.html.twig', [
'errors' => $errors,
'commande' => $commande,
'nomFichier' => $retour['nom_fichier'],
'type' => $retour['type'],
'cheminPDF' => $retour['chemin'],
'url' => $retour['url'],
'emails' => $emails,
'emailsPD' => $emailsPD,
'texteMailCommande' => $texteMailCommande,
'modelesEmail' => $modelesEmailRendu,
'emailsOrigine' => $emailsOrigine,
]);
return new JsonResponse(
['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal, "width" => 1000]
);
}
}
/**
* @Route("/achat/factures/validation-multiple", name="dtc_factures_fournisseur_liste_valider")
*/
public function factureValiderMultipleAction(Request $request, EntityManagerInterface $em, TranslatorInterface $translator)
{
$data = $request->get('dataTables');
$ids = $data['actions'];
$repo = $em->getRepository(CommandeFournisseur::class);
for ($i = 0; $i < count($ids); $i++) {
$v = $repo->find($ids[$i]);
if (is_object($v)) {
$v->setTransfertCompta(true);
$em->persist($v);
}
}
$em->flush();
$this->addFlash(
'notice',
$translator->trans('Factures validées avec succès !')
);
$url = $this->generateUrl('dtc_factures_fournisseur_liste', []);
return new JsonResponse(['url' => $url, 'valide' => '1']);
}
/**
* @Route("/achat/suggestion/export/", name="dtc_suggestion_commande_fournisseur_export")
*/
public function suggestionExportAction(Request $request, EntityManagerInterface $em, Pdf $snappy)
{
$repo_article = $em->getRepository(Article::class);
$repoFournisseurs = $em->getRepository(Fournisseur::class);
$dataTables = $request->request->get('dataTables');
$fournisseurs = $request->request->get('fournisseur');
$fournisseurId = $fournisseurs[$dataTables['actions'][0]];
$fournisseur = $repoFournisseurs->find($fournisseurId);
/*
$dataTables = $request->request->get('dataTables');
$tempArray = array('ids'=>$dataTables['actions']);
$id = $tempArray['ids'][0];
if($id != "")
{
$fournisseurIds = $request->request->get('fournisseur');
if ($fournisseurIds[$id] != '') {
$repoFournisseurs = $em->getRepository('DTCFournisseursBundle:Fournisseur');
$fournisseur = $repoFournisseurs->find($fournisseurIds[$id]);
if (is_object($fournisseur)) {
if(is_object($fournisseur->getModereglement())) {
$commande->setModeReglement($fournisseur->getModereglement());
}
}
}
}
*
*/
$articles = [];
foreach ($dataTables['actions'] as $articleId) {
$article = $repo_article->find($articleId);
if (is_object($article)) {
$articles[] = $article;
}
}
$chemin_pdf = 'PDF/SUGGESTIONS/'.time().'.pdf';
if (file_exists($chemin_pdf)) {
unlink($chemin_pdf);
}
$footer = $this->renderView('FO/PDF/footer_pagination_pdf.html.twig', []);
//$header = $this->renderView('FO/PDF/header_suggestion_pdf.html.twig', array('societe' => $societe,'commande' => $commande));
$header = '';
$snappy->setOption('header-html', $header);
$snappy->setOption('footer-html', $footer);
$snappy->setOption('margin-bottom', "10");
$snappy->setOption('orientation', 'Landscape');
$snappy->generateFromHtml(
$this->renderView(
'GestionComerciale/CommandeFournisseur/suggestion-export-pdf.html.twig',
[
'articles' => $articles,
'fournisseur' => $fournisseur,
'date' => new \DateTime,
]
),
$chemin_pdf
);
return $this->render('FO/PDF/conteneur_pdf.html.twig', ['chemin_pdf' => '/'.$chemin_pdf]);
}
/**
* @Route("/achat/commande/accuse/{id}", name="dtc_commande_fournisseur_accuse")
*/
public function changeAccuseAction(Request $request, CommandeFournisseur $commandeFournisseur, EntityManagerInterface $em)
{
if ($commandeFournisseur->getAccuseReception() == 1) {
$commandeFournisseur->setAccuseReception(0);
} else {
$commandeFournisseur->setAccuseReception(1);
}
$em->persist($commandeFournisseur);
$em->flush();
$em->refresh($commandeFournisseur);
$headers = [
'Content-Type' => 'application/json',
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'POST',
];
return new JsonResponse(['data' => '1', 'id_datatable' => 'dta-commandes-fournisseur']);
}
private function datatableCarnetCommande3($fournisseur, $selectReappro, Request $request, EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
$conn = $em->getConnection();
$conn->getConfiguration()->setSQLLogger(null);
$param = $request->query->all();
$parametres = [];
if ( ! array_key_exists('parametres', $param)) {
$param["parametres"] = $param;
}
$datatable->setEntity(Article::class, "p")
->setFields(
[
$translator->trans("ID") => 'p.id',
$translator->trans(" Réf") => 'p.reference',
$translator->trans("Réf fourn") => 'cha.referenceFournisseur',
$translator->trans("Libellé") => 'p.libelle',
//$translator->trans("Fournisseur") => 'f.libelle',//'p.id',
//$translator->trans("Clients") => 'p.id',
$translator->trans("Qté mini") => 'p.seuilMiniCommandeFournisseur',
$translator->trans("Qté maxi") => 'p.seuilMaxiCommandeFournisseur',
$translator->trans("Stock") => 'p.stock',
$translator->trans("RAL client") => 'p.stockReserve',
$translator->trans("Reserve fab.") => 'p.stockReserveFabrication',
$translator->trans("RAL fourn.") => 'p.ralFournisseur',
$translator->trans("Qté") => 'p.id',
$translator->trans("PU HT") => 'p.prixBase',
$translator->trans("CUMP") => 'p.cpump',
//$translator->trans("Type Réappro") => 'p.id',
//$translator->trans("Art. int./ext.") => 'p.produitInterne',
/*
$translator->trans("Actions") => 'p.id',
*
*/
"_identifier_" => 'p.id',
]
)
//->addJoin('p.articleCommande', 'ac', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('ac.commande', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('p.conditionsAchat', 'cha', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('p.fournisseurDefaut', 'f', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
1 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => ['edit_route' => 'dtc_article_modifier'],
],
2 => [
'view' => 'FO/DataTable/reference_fournisseur.html.twig',
'params' => [],
],
/*
4 => array(
'view' => 'FOBundle:DataTable:choix_fournisseur_2.1.html.twig'//'DTCFO/DataTable/choix_fournisseur_controller.html.twig'
),
5 => array(
'view' => 'FO/DataTable/clients2.html.twig'
),
*/
4 => [
'view' => 'FO/DataTable/ajout_class_number.html.twig',
'params' => ['class' => 'text-center'],
],
5 => [
'view' => 'FO/DataTable/ajout_class_number.html.twig',
'params' => ['class' => 'text-center'],
],
6 => [
'view' => 'FO/DataTable/ajout_class_number.html.twig',
'params' => ['class' => 'text-center'],
],
7 => [
'view' => 'FO/DataTable/ral.html.twig',
'params' => ['class' => 'text-center'],
],
8 => [
'view' => 'FO/DataTable/ajout_class_number.html.twig',
'params' => ['class' => 'text-center'],
],
9 => [
'view' => 'FO/DataTable/ajout_class_number.html.twig',
'params' => ['class' => 'text-center'],
],
10 => [
'view' => 'FO/DataTable/qte_conseillee2.html.twig',
],
11 => [
//'view' => 'FO/DataTable/prix.html.twig'
'view' => 'FO/DataTable/prix_condition_achat.html.twig',
],
12 => [
'view' => 'FO/DataTable/prix.html.twig',
],
/*
15 => array(
'view' => 'FO/DataTable/type_reappro_2.html.twig'
),
*/
/*
14 => array(
'view' => 'FO/DataTable/type_reappro_int_ext_2.html.twig'
),
*
*/
/*
12 => array(
'view' => 'FO/DataTable/actions.html.twig',
'params' => array(
'edit_route' => 'dtc_commande_fournisseur_modifier',
'supprimer_route' => 'dtc_commande_fournisseur_supprimer',
'objet' => 'DTCGestionComercialeBundle:CommandeFournisseur',
),
),
*
*/
]
)
->setGroupBy('p.id')
->setMultiple(
[
'commande' => [
'title' => 'Commander',
'route' => 'dtc_commande_fournisseur_ajouter',
],
]
)
->setSearch(true)
->setSearchFields([1, 2, 3, 4]);
$where = "(p.aSuggerer = 1 and (p.est_commentaire = 0 or p.est_commentaire is NULL) and (p.divers is null or p.divers = 0 or (p.divers = 1 and p.stock >= 0 and p.stockReserve > 0)))";
$where .= " and (p.arretGamme IS NULL or p.arretGamme = 0)";
$where .= ' AND f.id = '.$fournisseur;
//$where .= "and f.id != 132 ";
//$where = 'p.aCommander = 1 and p.produitInterne != 1 and p.virtuel != 1 and p.consigne != 1 ';
/*
if ($selectReappro == 'ral')
$where .= ' and (COALESCE(p.stockReserve, 0) - COALESCE(p.stockReserveFabrication, 0)) > 0 ';
if ($selectReappro == 'reappro')
$where .= ' and p.stockReserve = 0 ';
if ($selectReappro == 'fabrication')
$where .= ' and p.stockReserveFabrication > 0 ';
*/
switch ($selectReappro) {
case 'ral':
$where .= ' and (COALESCE(p.stockReserve, 0) - COALESCE(p.stockReserveFabrication, 0)) > 0 ';
break;
case 'ralP':
$where .= ' and (COALESCE(p.stockReserve, 0) - COALESCE(p.stockReserveFabrication, 0)) > 0 and (COALESCE(p.stock, 0) + COALESCE(p.ralFournisseur, 0) - COALESCE(p.stockReserve, 0)) < 0 ';
break;
case 'reappro':
$where .= ' and COALESCE(p.seuilMiniCommandeFournisseur, 0) > 0 and COALESCE(p.seuilMaxiCommandeFournisseur, 0) > 0 ';
break;
case 'reapproP':
$where .= ' and COALESCE(p.seuilMiniCommandeFournisseur, 0) > 0 and COALESCE(p.seuilMaxiCommandeFournisseur, 0) > 0 and (COALESCE(p.stock, 0) + COALESCE(p.ralFournisseur, 0)) < COALESCE(p.seuilMaxiCommandeFournisseur, 0)';
break;
case 'fabrication':
$where .= ' and p.stockReserveFabrication > 0 ';
break;
case 'fabricationP':
$where .= ' and p.stockReserveFabrication > 0 and (COALESCE(p.stock, 0) + COALESCE(p.ralFournisseur, 0) - COALESCE(p.stockReserve, 0)) < 0 ';
break;
default:
break;
}
if ( ! empty($param['parametres']['articleAexclure'])) {
$where .= " AND p.id NOT IN (:articleAexclure)";
$parametres['articleAexclure'] = $param['parametres']['articleAexclure'];
}
if (array_key_exists('categorie_article', $param['parametres']) and $param['parametres']['categorie_article'] != "") {
$datatable->addJoin('p.articleCategorie', 'ac', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$datatable->addJoin('ac.categorie', 'cat', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$where .= " AND cat.id = :categorie";
$parametres['categorie'] = $param['parametres']['categorie_article'];
if (array_key_exists('sous_categorie_article', $param['parametres']) and $param['parametres']['sous_categorie_article'] != "") {
$datatable->addJoin('p.articleCategorie', 'ac2', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$datatable->addJoin('ac2.categorie', 'cat2', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$where .= " AND cat2.id = :categorie2";
$parametres['categorie2'] = $param['parametres']['sous_categorie_article'];
}
if (array_key_exists('sous_sous_categorie_article', $param['parametres']) and $param['parametres']['sous_sous_categorie_article'] != "") {
$datatable->addJoin('p.articleCategorie', 'ac3', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$datatable->addJoin('ac3.categorie', 'cat3', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$where .= " AND cat3.id = ".$param['parametres']['sous_sous_categorie_article'];
}
}
if (array_key_exists('marque', $param['parametres']) and $param['parametres']['marque'] != "") {
//$qb->join('x.marque', 'm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$where .= " AND p.marque = :marque";
$parametres['marque'] = $param['parametres']['marque'];
}
if (array_key_exists('type', $param['parametres']) and $param['parametres']['type'] != "") {
//$qb->join('x.marque', 'm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$where .= " AND p.type = :type";
$parametres['type'] = $param['parametres']['type'];
}
$datatable->setWhere($where, $parametres)
->setOrder("p.reference", "asc");
//$datatable->getQueryBuilder()->setDoctrineQueryBuilder($query);
return $datatable;
}
/**
* @Route("/achat/suggestion/{fournisseur}", name="dtc_commande_fournisseur_suggestion")
*/
public function suggestionAction(Request $request, Fournisseur $fournisseur, ColonneTableauService $serviceColonneTableau, EntityManagerInterface $em, Datatable $datatable,
TranslatorInterface $translator
) {
$errors = '';
$selectReappro = $request->request->get('selectReappro');
// TODO Change this
$colonneUtilisateur = "DTCGestionComercialeBundle:SuggestionCommandeFournisseur";
$tableau_class_cellule[] = ["className" => "colonne_id", "targets" => [0], "visible" => true, "orderable" => false, "searchable" => false];
$tableau_class_cellule[] = ["className" => "colonne_id", "targets" => [1], "visible" => $serviceColonneTableau->getColonneUtilisateur($colonneUtilisateur, "id")];
$tableau_class_cellule[] = ["className" => "colonne_id", "targets" => [2], "visible" => $serviceColonneTableau->getColonneUtilisateur($colonneUtilisateur, "reference")];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [3],
"visible" => $serviceColonneTableau->getColonneUtilisateur($colonneUtilisateur, "referenceFournisseur"),
];
$tableau_class_cellule[] = ["className" => "colonne_id", "targets" => [4], "visible" => $serviceColonneTableau->getColonneUtilisateur($colonneUtilisateur, "libelle")];
//$tableau_class_cellule[]=array("className"=>"colonne_id","targets"=>array(5),"visible"=>$serviceColonneTableau->getColonneUtilisateur($colonneUtilisateur,"fournisseur"));
//$tableau_class_cellule[]=array("className"=>"colonne_id ","targets"=>array(6),"visible"=>$serviceColonneTableau->getColonneUtilisateur($colonneUtilisateur,"client"));
$tableau_class_cellule[] = ["className" => "colonne_id w200", "targets" => [5], "visible" => $serviceColonneTableau->getColonneUtilisateur($colonneUtilisateur, "qteMini")];
$tableau_class_cellule[] = ["className" => "colonne_id w200", "targets" => [6], "visible" => $serviceColonneTableau->getColonneUtilisateur($colonneUtilisateur, "qteMaxi")];
$tableau_class_cellule[] = ["className" => "colonne_id w200", "targets" => [7], "visible" => $serviceColonneTableau->getColonneUtilisateur($colonneUtilisateur, "stock")];
$tableau_class_cellule[] = [
"className" => "colonne_id w300",
"targets" => [8],
"visible" => $serviceColonneTableau->getColonneUtilisateur($colonneUtilisateur, "ralClient"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id w300",
"targets" => [9],
"visible" => $serviceColonneTableau->getColonneUtilisateur($colonneUtilisateur, "stockReserveFabrication"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id w300",
"targets" => [10],
"visible" => $serviceColonneTableau->getColonneUtilisateur($colonneUtilisateur, "ralFournisseur"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id w200 qte",
"targets" => [11],
"visible" => $serviceColonneTableau->getColonneUtilisateur($colonneUtilisateur, "qte"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id w200 prixHT",
"targets" => [12],
"visible" => $serviceColonneTableau->getColonneUtilisateur($colonneUtilisateur, "prixHT"),
];
$tableau_class_cellule[] = ["className" => "colonne_id", "targets" => [13], "visible" => $serviceColonneTableau->getColonneUtilisateur($colonneUtilisateur, "pump")];
//$tableau_class_cellule[]=array("className"=>"colonne_id","targets"=>array(16),"visible"=>$serviceColonneTableau->getColonneUtilisateur($colonneUtilisateur,"typeReapro"));
$categorie_enfants = [];
$categorie_enfants_enfants = [];
$repo_categorie_article = $em->getRepository(Categorie::class);
$categorie_article_racine = $repo_categorie_article->findBy(["categorieParent" => 1]);
$repo_marque_article = $em->getRepository(Marque::class);
$marque_article = $repo_marque_article->findBy([], ['libelle' => 'ASC']);
$repo_type_article = $em->getRepository(Type::class);
$type_article = $repo_type_article->findBy([], ['libelle' => 'ASC']);
$param = $request->query->all();
if (array_key_exists('categorie_article', $param) and $param["categorie_article"] > 0) {
$parent = $repo_categorie_article->find($param["categorie_article"]);
if (is_object($parent)) {
$categorie_enfants = $repo_categorie_article->findBy(["categorieParent" => $parent]);
}
if (array_key_exists('sous_categorie_article', $param) and $param["sous_categorie_article"] > 0) {
$parent2 = $repo_categorie_article->find($param["sous_categorie_article"]);
if (is_object($parent2)) {
$categorie_enfants_enfants = $repo_categorie_article->findBy(["categorieParent" => $parent]);
}
}
}
$this->datatableCarnetCommande3($fournisseur, $selectReappro, $request, $em, $datatable, $translator);
$rendu = $this->renderView('GestionComerciale/CommandeFournisseur/suggestion.html.twig', [
'tableauClassColonne' => $tableau_class_cellule,
'errors' => $errors,
'selectReappro' => $selectReappro,
'parametres' => $param,
"categorie_article" => $categorie_article_racine,
"sous_categorie_article" => $categorie_enfants,
"sous_categorie_article" => $categorie_enfants_enfants,
"marque" => $marque_article,
"type" => $type_article,
"fournisseur" => $fournisseur,
]);
return new JsonResponse(['rendu' => $rendu]);
}
/**
* @Route("/commande-fournisseur/suggestion/grid", name="dtc_commande_fournisseur_suggestion_liste_grid")
*/
public function suggestionGridAction(Request $request, EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
$selectReappro = $request->query->get('selectReappro');
$fournisseur = $request->query->get('fournisseur');
return $this->datatableCarnetCommande3($fournisseur, $selectReappro, $request, $em, $datatable, $translator)->execute();
}
/**
* @Route("/commande-fournisseur/ajouter-depuis-article/{id}", name="dtc_commande_fournisseur_ajouter_depuis_article")
*/
public function ajouterDepuisArticleAction(Request $request, Article $article, ArticleService $articleService, EntityManagerInterface $em, TranslatorInterface $translator)
{
$repoConditionsAchat = $em->getRepository(ConditionAchat::class);
$repoArticleCommande = $em->getRepository(ArticleCommande::class);
$conditions = $repoConditionsAchat->findBy(['article' => $article->getId()]);
$ralFourn = $repoArticleCommande->getRalFournisseur($article);
$qteConseillee = $articleService->getQteConseillee($article);
$titreModal = $translator->trans('Commander cet article');
$rendu = $this->renderView('GestionComerciale/CommandeFournisseur/ajouter-depuis-article.html.twig', [
'conditions' => $conditions,
'article' => $article,
'ralFournisseur' => $ralFourn,
'qteConseillee' => $qteConseillee,
]);
return new JsonResponse(['rendu' => $rendu, 'titre' => $titreModal]);
}
/**
* @Route("/commande-fournisseur/historique/{commandeFournisseur}", name="dtc_commande_fournisseur_historique")
*/
public function historiqueAction(Request $request, CommandeFournisseur $commandeFournisseur, EntityManagerInterface $em, TranslatorInterface $translator)
{
$titre_modal = $translator->trans("Historique du document");
$commandes[] = $commandeFournisseur;
$historiques = $em->getRepository(HistoriqueCommande::class)->findBy([
'commandeFournisseur' => $commandes,
], ['id' => 'DESC']);
$rendu = $this->renderView('GestionComerciale/CommandeFournisseur/historique.html.twig', [
'historiques' => $historiques,
]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal, 'width' => 900]);
}
/**
* @Route("/achat/facture/reprise/nouveau/modal/{id}/{type}", name="dtc_facture_fournisseur_reprise_modal")
*/
public function ajouterRepriseModalAction(Request $request, $id, $type = "", EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$titre_modal = $translator->trans("Nouvelle reprise sur facture");
$repo_objet = $em->getRepository(CommandeFournisseur::class);
$objet = $repo_objet->find($id);
$avoir = clone $objet;
$user = $this->getUser();
//$avoir->setUtilisateur($user);
if (is_object($avoir->getUtilisateur()) && ! empty($this->getParameter('utilisateur_site_internet')) && $avoir->getUtilisateur()->getId(
) == $this->getParameter('utilisateur_site_internet')) {
} else {
// $avoir->setUtilisateur($user);
}
$form = $this->createForm(AvoirFactureCommandeFournisseurType::class, $avoir);
$errors = "";
$form->handleRequest($request);
$idsArticleCommande = $request->query->get('choixArticles');
$repo_objet = $em->getRepository(Commande::class);
$objet = $repo_objet->find($id);
//$avoir->setFacture($objet);
$link = $this->generateUrl('dtc_facture_fournisseur_reprise_modal', ['id' => $objet->getId(), 'type' => 'avoir']);
$articleCommande = $em->getRepository(ArticleCommande::class)->listeArticleCommandeSelectionne($idsArticleCommande);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$link = $this->generateUrl('dtc_facture_afficher', ['id' => $objet->getId()]);
$articles = [
'choixArticlesAvoir' => $request->request->get('choixArticlesAvoir'),
'idArticle' => $request->request->get('idArticle'),
'idArticleCommande' => $request->request->get('idArticleCommande'),
'quantiteInit' => $request->request->get('quantiteInit'),
'quantite' => $request->request->get('quantite'),
'quantiteRepris' => $request->request->get('quantiteRepris'),
];
$valeurs = ["commande" => $objet->getId(), "articles" => $articles];
$url = $this->generateUrl('dtc_commande_fournisseur_ajouter', ['valeurs' => $valeurs]);
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
} else {
$errors = $validator->validate($avoir);
$rendu = $this->renderView(
'GestionComerciale/Avoir/ajouter_modal_commande_fournisseur.html.twig',
[
'form' => $form->createView(),
'errors' => $errors,
'id' => $id,
'type' => $type,
'articleCommande' => $articleCommande,
'commande' => $objet,
]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
$rendu = $this->renderView(
'GestionComerciale/Avoir/ajouter_modal_commande_fournisseur.html.twig',
['form' => $form->createView(), 'errors' => $errors, 'id' => $id, 'type' => $type, 'articleCommande' => $articleCommande, 'commande' => $objet]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'link' => $link, 'titre' => $titre_modal]);
}
}