<?php
namespace App\Controller\GestionComerciale;
use App\Entity\Articles\Article;
use App\Entity\Clients\Client;
use App\Entity\FO\Societe;
use App\Entity\GestionComerciale\BonPreparation;
use App\Entity\GestionComerciale\Commande;
use App\Entity\GestionComerciale\CommandeFournisseur;
use App\Entity\GestionComerciale\StatutCommande;
use App\Model\GestionCommerciale\TypeDocumentCommercial;
use App\Form\GestionComerciale\AnnulerBPAType;
use App\Form\GestionComerciale\CommandeType;
use App\Library\Datatable\Util\Datatable;
use App\Security\Voter\EntityVoter;
use App\Service\GestionComerciale\AcompteService;
use App\Service\GestionComerciale\BonPreparationService;
use App\Service\GestionComerciale\CommandeService;
use App\Service\Utilisateur\ColonneTableauService;
use Doctrine\ORM\EntityManagerInterface;
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\Routing\Annotation\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class BonPreparationAtelierController extends AbstractController
{
/**
* @Route("/vente/bons-preparations-atelier/modifier/{id}", name="dtc_bon_preparation_atelier_modifier")
*/
public function modifierAction(Request $request, Commande $bon, EntityManagerInterface $em, BonPreparationService $bonService,
CommandeService $commandeService, TranslatorInterface $translator, ValidatorInterface $validator
) {
$user = $this->getUser();
$bon->setUtilisateur($user);
$annuler = $request->request->get('annuler');
//echo "AA ".$annuler;
if ($annuler == "annuler" || $annuler == "annuler_devis" || $annuler == "annuler_cmde") {
$bonService->annuler($bon, $annuler);
$this->addFlash(
'notice',
$translator->trans('Bon de préparation annulé avec succès !')
);
return $this->redirectToRoute('dtc_bon_preparation_atelier_liste');
//exit;
}
$form = $this->createForm(CommandeType::class, $bon);
$articles = ['ids' => $request->request->get('ids'), 'prix' => $request->request->get('prix'), 'qte' => $request->request->get('qte')];
$valeurs = ["articles" => $articles];
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted() and $annuler != "annuler" and $annuler != "annuler_devis" and $annuler != "annuler_cmde") {
if ($commandeService->estEditable($bon)) {
//TODO Change this
$droit = $this->isGranted(EntityVoter::UPDATE, BonPreparation::class);
if ( ! $droit) {
return $this->redirectToRoute('dtc_bon_preparation_atelier_modifier', ["id" => $bon->getId()]);
}
if ($form->isValid()) {
/*
if($request->request->get('annuler') != '') {
$bonService->annulerCommande($bon);
$this->addFlash(
'notice',
$translator->trans('Bon de préparation annulée avec succès !')
);
return $this->redirectToRoute('dtc_bon_preparation_atelier_liste',array());
}
*/
//echo "<div>CC ".$bon->getClient()->getNom()."</div>";
$em->persist($bon);
$em->flush();
$operation = $request->request->get('operation');
$articles = [
'valider' => $request->request->get('valider'),
'ids' => $request->request->get('ids'),
'montantRemise' => $request->request->get('montantRemise'),
'remiseCalcule' => $request->request->get('remiseCalcule'),
'remise' => $request->request->get('remise'),
'commentaire' => $request->request->get('commentaire'),
'remiseSuppl' => $request->request->get('remiseSuppl'),
'prix' => $request->request->get('prix'),
'libellesSecondaires' => $request->request->get('libellesSecondaires'),
'libelles' => $request->request->get('libelles'),
'tva' => $request->request->get('tva'),
'qte' => $request->request->get('qte'),
'force' => $request->request->get('force'),
];
$valeurs = ["articles" => $articles, 'typeDocument' => 'commande', 'operation' => $operation];
$bonService->sauvegarderBon($bon, $valeurs);
if ($operation == "facture") {
$this->addFlash(
'notice',
$translator->trans('Facture sauvegardée avec succès !')
);
$repo_statut_document = $em->getRepository(StatutCommande::class);
$liste_statut = $repo_statut_document->findOneBy(["documentCommercial" => 6, "ordre" => [1]]);
$typeFac = TypeDocumentCommercial::FACTURE;
$repo_fac = $em->getRepository(Commande::class);
$facture = $repo_fac->findOneBy(["bp" => $bon, "typeDocumentCommercial" => $typeFac, "visible" => 1, "statutCommande" => $liste_statut]);
return $this->redirectToRoute('dtc_facture_afficher', ["id" => $facture->getId()]);
} else {
$this->addFlash(
'notice',
$translator->trans('Bon de préparation sauvegardée avec succès !')
);
return $this->redirectToRoute('dtc_bon_preparation_atelier_modifier', ["id" => $bon->getId()]);
}
} else {
$errors = $validator->validate($bon);
//\Doctrine\Common\Util\Debug::dump($errors);
}
} else {
$paiement = $bon->getStatutPaiement();
$em->refresh($bon);
$bon->setStatutPaiement($paiement);
$em->persist($bon);
$em->flush();
$this->addFlash(
'notice',
$translator->trans('Statut du paiement de la commande modifié avec succès !')
);
/*
$this->addFlash(
'warning',
"La commande n'est plus éditable ! "
);
*/
return $this->redirectToRoute('dtc_commande_modifier', ["id" => $bon->getId()]);
}
}
return $this->render('GestionComerciale/BonPreparationAtelier/modifier2.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'commande' => $bon]);
}
/**
* @Route("/vente/bons-preparations-atelier", name="dtc_bon_preparation_atelier_liste")
*/
public function listerAction(Request $request, $id = "0", $type = "a", EntityManagerInterface $em, Datatable $datatable, ColonneTableauService $serviceColonneTableau,
TranslatorInterface $translator
) {
$repo_objet = $em->getRepository(Commande::class);
$objet = $repo_objet->find($id);
if ($type == "commandeFournisseur") {
$repo_objet = $em->getRepository(CommandeFournisseur::class);
$objet = $repo_objet->find($id);
$this->datatableCommandeFournisseur($objet, "", $em, $datatable, $translator);
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [0], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [1], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [2], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [3], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [4], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [5], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [6], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [7], "visible" => true, "orderable" => true];
return $this->render('GestionComerciale/BonPreparationAtelier/lister_commande_fournisseur.html.twig', ["id" => $id, 'tableauClassColonne' => $tableau_class_cellule]);
} elseif (is_object($objet)) {
$repo_objet = $em->getRepository(Commande::class);
$objet = $repo_objet->find($id);
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [0], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [1], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [2], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [3], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [4], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [5], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [6], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [7], "visible" => true, "orderable" => true];
$this->datatableCommande($objet, $type, $datatable, $em, $translator);
return $this->render('GestionComerciale/BonPreparationAtelier/lister_commande.html.twig', ["id" => $id, "type" => $type, 'tableauClassColonne' => $tableau_class_cellule]);
} else {
$tableau_class_cellule[] = ["className" => "colonne_id", "targets" => [0], "visible" => true, "orderable" => false];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [1],
"visible" => $serviceColonneTableau->getColonneUtilisateur(BonPreparation::class, "id"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [2],
"visible" => $serviceColonneTableau->getColonneUtilisateur(BonPreparation::class, "client"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [3],
"visible" => $serviceColonneTableau->getColonneUtilisateur(BonPreparation::class, "reference"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [4],
"visible" => $serviceColonneTableau->getColonneUtilisateur(BonPreparation::class, "statut"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [5],
"visible" => $serviceColonneTableau->getColonneUtilisateur(BonPreparation::class, "dateBon"),
];
$this->datatable($em, $datatable, $translator);
return $this->render('GestionComerciale/BonPreparationAtelier/lister.html.twig', ["id" => $id, "type" => $type, 'tableauClassColonne' => $tableau_class_cellule]);
}
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatable(EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
$repo_statut_document = $em->getRepository(StatutCommande::class);
$liste_statut = $repo_statut_document->findBy(["documentCommercial" => 11, "ordre" => [0]]);
$date = new \Datetime();
$datatable->setDatatableId('dta-bonpreparations')
->setEntity(Commande::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Date") => 'x.date',
$translator->trans("Réf") => 'x.reference',
$translator->trans("Ref client") => 'cl.reference',
$translator->trans("Client") => 'cl.nom',
$translator->trans("Équipier") => 'u.reference',
$translator->trans("Comm") => 'x.commentaire',
$translator->trans("Ref cmde cli") => 'x.referenceClient',
$translator->trans("A réaliser pour") => 'x.dateBon',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.commande', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.client', 'cl', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.utilisateur', 'u', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
/*->setWhere(
$type_jointure.' = :objet',
array('objet' => $objet)
)
*/
->setWhere(
'c.typeDocumentCommercial = :typeDocumentCommercialCommande AND x.typeDocumentCommercial = :typeDocumentCommercial AND (x.dateBon IS NULL or x.dateBon <= :dateBon) AND x.visible = :visible AND x.statutCommande NOT IN (:statutCommande)',
[
'typeDocumentCommercialCommande' => '2',
'typeDocumentCommercial' => '11',
'dateBon' => $date->format("Y-m-d H:i:s"),
'visible' => true,
'statutCommande' => $liste_statut,
]
)
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_bon_preparation_atelier_modifier',
],
],
1 => [
'view' => 'FO/DataTable/heure.html.twig',
'params' => [],
],
2 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_bon_preparation_atelier_modifier',
],
],
8 => [
'view' => 'FO/DataTable/heure.html.twig',
'params' => [],
],
9 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_bon_preparation_atelier_modifier',
//'supprimer_route' => 'dtc_bon_preparation_atelier_supprimer',
'pdf_route' => 'dtc_bon_preparation_atelier_pdf',
'entite' => 'bonPreparation',
'objet' => Commande::class,
],
],
]
)
->setMultiple(
[
'print' => [
'title' => 'Imprimer',
'route' => 'dtc_bon_preparation_atelier_pdf_multiple',
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([1, 4]);
return $datatable;
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableCommande($objet, $type = "", Datatable $datatable, EntityManagerInterface $em, TranslatorInterface $translator)
{
$repo_statut_document = $em->getRepository(StatutCommande::class);
$liste_statut = $repo_statut_document->findBy(["documentCommercial" => 11, "ordre" => [0]]);
$type_jointure = 'x.'.$type;
$datatable->setDatatableId('dta-bonpreparations')
->setEntity(Commande::class, "x")
->setFields(
[
//$translator->trans("ID") => 'x.id',
$translator->trans("Date") => 'x.date',
$translator->trans("Réf") => 'x.reference',
$translator->trans("Réf client") => 'cl.reference',
$translator->trans("Client") => 'cl.nom',
$translator->trans("Équipier") => 'u.reference',
$translator->trans("Comm") => 'x.commentaire',
$translator->trans("Ref cmde cli") => 'x.referenceClient',
$translator->trans("A réaliser pour") => 'x.dateBon',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
//->addJoin('x.pays', 'p', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
/*->setWhere(
$type_jointure.' = :objet',
array('objet' => $objet)
)
*/
->addJoin('x.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.commande', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.client', 'cl', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.utilisateur', 'u', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setWhere(
'x.commande = :objet AND x.typeDocumentCommercial = :typeDocumentCommercial AND x.statutCommande NOT IN (:statutCommande)',
['objet' => $objet, 'typeDocumentCommercial' => TypeDocumentCommercial::BPATELIER, 'statutCommande' => $liste_statut]
)
->setRenderers(
[
/*
0 => array(
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => array(
'edit_route' => 'dtc_bon_preparation_atelier_modifier'
),
),
*/
0 => [
'view' => 'FO/DataTable/heure.html.twig',
'params' => [],
],
1 => [
'view' => 'FO/DataTable/avec_lien_pdf_route.html.twig',
'params' => [
'edit_route' => 'dtc_bon_preparation_atelier_pdf',
],
],
7 => [
'view' => 'FO/DataTable/heure.html.twig',
'params' => [],
],
8 => [
'view' => 'FO/DataTable/actions_modal.html.twig',
'params' => [
//'edit_route' => 'dtc_bon_preparation_atelier_modifier',
//'supprimer_route' => 'dtc_bon_preparation_atelier_annuler',
'pdf_route' => 'dtc_bon_preparation_atelier_pdf',
'entite' => 'bonPreparation',
'objet' => Commande::class,
'id' => $objet->getId(),
'type' => 'or',
'deplier' => true,
],
],
]
)
->setOrder("x.date", "desc")
->setSearch(true)//->setSearchFields(array(1,2))
;
return $datatable;
}
/**
* @Route("/vente/bons-preparations-atelier/grid/{id}/{type}", name="dtc_bon_preparation_atelier_liste_grid")
*/
public function gridAction(Request $request, $id = "", $type = "", EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
$repo_objet = $em->getRepository(Commande::class);
$objet = $repo_objet->find($id);
if (is_object($objet)) {
return $this->datatableCommande($objet, $type, $datatable, $em, $translator)->execute();
} else {
return $this->datatable($em, $datatable, $translator)->execute();
}
}
/**
* @Route("", name="")
*/
public function listerCommandeClientAction(Request $request, Client $client)
{
$options = '';
$cpt = 0;
foreach ($client->getCommandes() as $bonPrepa) {
$selected = "";
//if($cpt == 0) $selected = 'selected="selected"';
$options .= '<option '.$selected.' value="'.$bonPrepa->getId().'">'.$bonPrepa->getLibelle().'</option>';
$cpt++;
}
$referenceCommandeClientObligatoire = $client->getReferenceClientObligatoire();
return new JsonResponse(
['options' => $options, 'valide' => '0', 'referenceClientObligatoire' => $referenceCommandeClientObligatoire]
);
}
/**
* @Route("", name="")
*/
public function pdfBonPreparationOrAction(Request $request, Commande $bonPreparation, $retour = true, EntityManagerInterface $em, Pdf $snappy)
{
$societe = $em->getRepository(Societe::class)->find(1);
$chemin_pdf = 'PDF/BONSPREPA/BONPREPA-'.$bonPreparation->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_bp_pdf.html.twig', ['societe' => $societe, 'commande' => $bonPreparation]);
$snappy->setOption('header-html', $header);
$snappy->setOption('footer-html', $footer);
$snappy->setOption('margin-bottom', "10");
$snappy->generateFromHtml(
$this->renderView(
'GestionComerciale/BonPreparationAtelier/template_pdf.html.twig',
[
'commande' => $bonPreparation,
'societe' => $societe,
]
),
$chemin_pdf
);
if ($retour == true) {
return $this->render('FO/PDF/conteneur_pdf.html.twig', ['objet' => $bonPreparation, 'chemin_pdf' => '/'.$chemin_pdf]);
}
}
/**
* @Route("/bons-preparations-atelier/pdf/{id}", name="dtc_bon_preparation_atelier_pdf")
*/
public function pdfBonPreparationAction(Request $request, Commande $bonPreparation, $retour = true, EntityManagerInterface $em, Pdf $snappy)
{
$societe = $em->getRepository(Societe::class)->find(1);
$chemin_pdf = 'PDF/BONSPREPA/BONPREPA-'.$bonPreparation->getReference().'.pdf';
if (file_exists($chemin_pdf)) {
unlink($chemin_pdf);
}
//return $this->render('GestionComerciale/BonPreparationAtelier/template_pdf.html.twig',array('commande' => $bonPreparation,'societe' => $societe));
$footer = $this->renderView('FO/PDF/footer_pagination_pdf.html.twig', ['societe' => $societe]);
$header = $this->renderView('FO/PDF/header_bpa_pdf.html.twig', ['societe' => $societe, 'commande' => $bonPreparation]);
//$snappy->setOption('page-size', 'A4');
$snappy->setOption('header-html', $header);
$snappy->setOption('footer-html', $footer);
//$snappy->setOption('header-html',$footer);
$snappy->setOption('margin-bottom', "10");
//$snappy->setOption('margin-top',"5");
//$snappy->setOption('zoom', 1 );
//$snappy->setOption('dpi', 300 );
$snappy->generateFromHtml(
$this->renderView(
'GestionComerciale/BonPreparationAtelier/template_pdf.html.twig',
[
'commande' => $bonPreparation,
'societe' => $societe,
]
),
$chemin_pdf
);
if ($retour == true) {
return $this->render('FO/PDF/conteneur_pdf.html.twig', ['chemin_pdf' => '/'.$chemin_pdf]);
//return new RedirectResponse("/".$chemin_pdf);
}
}
/**
* @Route("/vente/bons-preparations-atelier/imprimer/multiple", name="dtc_bon_preparation_atelier_pdf_multiple")
*/
public function imprimerMultipleAction(Request $request, EntityManagerInterface $em)
{
$data = $request->get('dataTables');
$ids = $data['actions'];
$tableauPdf = [];
$pdfRelier = 'PDF/BONSPREPA/BONPREPA-'.date('d-m-Y').'.pdf';
//$ids = array("118","101","93");
for ($i = 0; $i < count($ids); $i++) {
$repo = $em->getRepository(Commande::class);
$bon = $repo->find($ids[$i]);
if (is_object($bon)) {
$this->pdfBonPreparationAction($bon, false);
$tableauPdf[] = $chemin_pdf = 'PDF/BONSPREPA/BONPREPA-'.$bon->getReference().'.pdf';
}
}
$cmd = "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$pdfRelier ";
foreach ($tableauPdf as $file) {
$cmd .= $file." ";
}
$result = shell_exec($cmd);
return new JsonResponse(['target' => '_blank', 'url' => '/'.$pdfRelier, 'valide' => '1'], 200, ['Content-Type' => 'application/json']);
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableCommandeFournisseur($objet, $type = "", EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
$articlesCommande = $objet->getArticleCommande();
$articles = [];
if (count($articlesCommande) > 0) {
foreach ($articlesCommande as $articleCommande) {
$articles[] = $articleCommande->getArticle();
}
}
$repo_article = $em->getRepository(Article::class);
$commandesId = $repo_article->getCommandes($articles);
$commandes = [];
foreach ($commandesId as $commandeId) {
$commandes[] = $commandeId['id'];
}
//$commandes = array(1668, 1670);
$repo_statut_document = $em->getRepository(StatutCommande::class);
$liste_statut = $repo_statut_document->findBy(["documentCommercial" => 11, "ordre" => [0]]);
$type_jointure = 'x.'.$type;
$datatable->setDatatableId('dta-bonpreparations')
->setEntity(Commande::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Date") => 'x.date',
$translator->trans("Réf") => 'x.reference',
$translator->trans("Ref client") => 'cl.reference',
$translator->trans("Client") => 'cl.nom',
$translator->trans("Équipier") => 'u.reference',
$translator->trans("Comm") => 'x.commentaire',
$translator->trans("Ref cmde cli") => 'x.referenceClient',
$translator->trans("A réaliser pour") => 'x.dateBon',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
//->addJoin('x.pays', 'p', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
/*->setWhere(
$type_jointure.' = :objet',
array('objet' => $objet)
)
*/
->addJoin('x.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.commande', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.client', 'cl', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.utilisateur', 'u', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setWhere(
'x.commande IN (:commandes) AND x.typeDocumentCommercial = :typeDocumentCommercial AND x.statutCommande NOT IN (:statutCommande)',
['commandes' => $commandes, 'typeDocumentCommercial' => TypeDocumentCommercial::BPATELIER, 'statutCommande' => $liste_statut]
)
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_bon_preparation_atelier_modifier',
],
],
1 => [
'view' => 'FO/DataTable/heure.html.twig',
'params' => [],
],
2 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_bon_preparation_atelier_modifier',
],
],
8 => [
'view' => 'FO/DataTable/heure.html.twig',
'params' => [],
],
9 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_bon_preparation_atelier_modifier',
//'supprimer_route' => 'dtc_bon_preparation_atelier_supprimer',
'pdf_route' => 'dtc_bon_preparation_atelier_pdf',
'entite' => 'bonPreparation',
'objet' => Commande::class,
],
],
]
)
->setOrder("x.date", "desc")
->setSearch(true)//->setSearchFields(array(1,2))
;
return $datatable;
}
/**
* @Route("/vente/bons-preparations-atelier/commande-fournisseur/grid/{id}", name="dtc_bon_preparation_atelier_commande_fournisseur_liste_grid")
*/
public function gridCommandeFournisseurAction(Request $request, $id = "", EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
$repo_objet = $em->getRepository(CommandeFournisseur::class);
$objet = $repo_objet->find($id);
if (is_object($objet)) {
return $this->datatableCommandeFournisseur($objet, "", $em, $datatable, $translator)->execute();
}
}
/**
* @Route("/vente/bons-preparations-atelier/annuler/{objet}/{type}/{id}", name="dtc_bon_preparation_atelier_annuler")
*/
public function annulerAction(Request $request, Commande $objet, $id, $type, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$bpa = $objet;
$titre_modal = $translator->trans("Demande de confirmation");
$user = $this->getUser();
$form = $this->createForm(AnnulerBPAType::class, $bpa);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
//$em->remove($conditionAchat);
//$em->flush();
$repo_objet = $em->getRepository(StatutCommande::class);
$statutCommande = $repo_objet->findOneBy([
'documentCommercial' => 11,
'ordre' => 0,
]);
$bpa->setStatutCommande($statutCommande);
$em->persist($bpa);
$em->flush();
$this->addFlash(
'notice',
$translator->trans('Bon de préparation supprimé avec succès !')
);
if ($type == 'or') {
$url = $this->generateUrl('dtc_ordre_reparation_modifier', ['id' => $id, 'tab' => 'bonpreparations']);
}
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
} else {
$errors = $validator->validate($bpa);
$rendu = $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'id' => $id, 'type' => $type, 'objet' => $objet]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
$rendu = $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'id' => $id, 'type' => $type, 'objet' => $objet]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}