<?php
namespace App\Controller\GestionComerciale;
use App\Entity\FO\Societe;
use App\Entity\GestionComerciale\Activite;
use App\Entity\GestionComerciale\Alerte;
use App\Entity\GestionComerciale\Commande;
use App\Entity\GestionComerciale\DevisOR;
use App\Model\GestionCommerciale\TypeDocumentCommercial;
use App\Form\GestionComerciale\OrdreReparationType;
use App\Form\GestionComerciale\SupprimerDevisType;
use App\Library\Datatable\Util\Datatable;
use App\Security\Voter\EntityVoter;
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 DevisOrController extends AbstractController
{
/**
* @Route("/ordre-reparation/devis-or/modifier/{id}", name="dtc_devis_or_modifier")
*/
public function modifierAction(Request $request, Commande $commande, CommandeService $commandeService, TranslatorInterface $translator,
ValidatorInterface $validator
) {
return $this->redirectToRoute('dtc_ordre_reparation_modifier', ["id" => $commande->getId(), "operation" => "devis"]);
$user = $this->getUser();
$commande->setUtilisateur($user);
$form = $this->createForm(OrdreReparationType::class, $commande);
$articles = [
'ids' => $request->request->get('ids'),
'tva' => $request->request->get('tva'),
'qte' => $request->request->get('qte'),
'remise' => $request->request->get('remise'),
'force' => $request->request->get('force'),
];
$valeurs = ["articles" => $articles, 'typeDocument' => 'devis', 'operation' => 'devis'];
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
$droit = $this->isGranted(EntityVoter::UPDATE, Commande::class);
if ( ! $droit) {
return $this->redirectToRoute('dtc_devis_modifier', ["id" => $commande->getId()]);
}
if ($form->isValid()) {
$em->persist($commande);
$em->flush();
//$articles = array('ids'=>$request->request->get('ids'),'commentaire'=>$request->request->get('commentaire'),'prix'=>$request->request->get('prix'),'libelles'=>$request->request->get('libelles'),'tva'=>$request->request->get('tva'),'prix'=>$request->request->get('prix'),'qte'=>$request->request->get('qte'),'remiseSuppl'=>$request->request->get('remiseSuppl'));
//$articles = array('ids'=>$request->request->get('ids'),'remise'=>$request->request->get('remise'),'montantRemise'=>$request->request->get('montantRemise'),'commentaire'=>$request->request->get('commentaire'),'libelles'=>$request->request->get('libelles'),'tva'=>$request->request->get('tva'),'remiseSuppl'=>$request->request->get('remiseSuppl'),'prix'=>$request->request->get('prix'),'qte'=>$request->request->get('qte'));
$articles = [
'ids' => $request->request->get('ids'),
'remise' => $request->request->get('remise'),
'remiseCalcule' => $request->request->get('remiseCalcule'),
'montantRemise' => $request->request->get('montantRemise'),
'commentaire' => $request->request->get('commentaire'),
'libellesSecondaires' => $request->request->get('libellesSecondaires'),
'libelles' => $request->request->get('libelles'),
'tva' => $request->request->get('tva'),
'remiseSuppl' => $request->request->get('remiseSuppl'),
'prix' => $request->request->get('prix'),
'qte' => $request->request->get('qte'),
'force' => $request->request->get('force'),
'commentaireSuppl' => $request->request->get('commentaireSuppl'),
'emplacement' => $request->request->get('emplacement'),
'nbEmplacement' => $request->request->get('nbEmplacement'),
'articlesCommandeRepris' => $request->request->get('articlesCommandeRepris'),
];
$valeurs = ["articles" => $articles, 'typeDocument' => 'devis', 'operation' => 'devis'];
if ($request->request->get('annuler') == 'annuler') {
$commande->setVisible(false);
$this->addFlash(
'notice',
$translator->trans('Devis OR supprimé avec succès!')
);
$em->persist($commande);
$em->flush();
return $this->redirectToRoute('dtc_devis_or_liste');
}
if ($request->request->get('commander') != '') {
$idCommande = $commandeService->transformerCommandeEnDevis($commande, $valeurs);
$this->addFlash(
'notice',
$translator->trans('Commande créée avec succès!')
);
return $this->redirectToRoute('dtc_commande_modifier', ["id" => $idCommande]);
} else {
$commandeService->sauvegarder($commande, $valeurs);
$this->addFlash(
'notice',
$translator->trans('Devis sauvegardé avec succès!')
);
return $this->redirectToRoute('dtc_devis_modifier', ["id" => $commande->getId()]);
}
} else {
$errors = $validator->validate($commande);
//\Doctrine\Common\Util\Debug::dump($errors);
}
}
return $this->render('GestionComerciale/OrdreRep/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'commande' => $commande]);
}
/**
* @Route("", name="")
*/
public function alerteAction(Request $request, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$user = $this->getUser();
$currentRoute = dirname($_SERVER['SERVER_PROTOCOL'])."://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$repo_activite = $em->getRepository(Activite::class);
$acti = $repo_activite->findOneBy([
'url' => $currentRoute,
]);
$repo_alerte = $em->getRepository(Alerte::class);
$aler = $repo_alerte->findOneBy([
'url' => $currentRoute,
]);
if (is_object($aler)) {
$lu = $aler->getLu();
} else {
$lu = true;
}
if (is_object($acti)) {
$timestampactivite = $acti->getTimestamp();
$timestampactuelle = new \DateTime();
$time = $timestampactuelle->diff($timestampactivite);
if ($time->format('%s') >= 4 && $acti->getUtilisateur() == $user) {
$acti->setTimestamp(new \DateTime());
$em->persist($acti);
$em->flush();
if ($lu == false) {
$aler->setLu(true);
$em->persist($aler);
$em->flush();
$lock = 3;
return new JsonResponse(['valide' => '0', 'url' => $currentRoute, 'lu' => $lu, 'lock' => $lock]);
} else {
$lock = 3;
return new JsonResponse(['valide' => '0', 'url' => $currentRoute, 'lu' => $lu, 'lock' => $lock]);
}
}
if ($time->format('%s') >= 8 && $acti->getUtilisateur() != $user) {
$acti->setTimestamp(new \DateTime());
$acti->setUtilisateur($user);
$em->persist($acti);
$em->flush();
if (is_object($aler)) {
if ($aler->getEmetteur() == $user) {
$em->remove($aler);
$em->flush();
$lock = 2;
return new JsonResponse(['valide' => '0', 'url' => $currentRoute, 'lock' => $lock, 'titre' => 'Un utilisateur est dejà sur cette page ']);
} else {
$lock = 3;
return new JsonResponse(['valide' => '0', 'url' => $currentRoute, 'lu' => $lu, 'lock' => $lock]);
}
} else {
$lock = 3;
return new JsonResponse(['valide' => '0', 'url' => $currentRoute, 'lu' => $lu, 'lock' => $lock]);
}
} else {
if ($acti->getUtilisateur() != $user) {
if (is_object($aler)) {
$aler->setTimestamp(new \DateTime());
$aler->setEmetteur($user);
$aler->setRecepteur($acti->getUtilisateur());
$aler->setURL($currentRoute);
$em->persist($aler);
$em->flush();
$lock = 1;
return new JsonResponse(['valide' => '0', 'url' => $currentRoute, 'lock' => $lock]);
} else {
$aler = new Alerte;
$aler->setEmetteur($user);
$aler->setRecepteur($acti->getUtilisateur());
$aler->setLu(false);
$aler->setURL($currentRoute);
$em->persist($aler);
$em->flush();
$lock = 1;
return new JsonResponse(['valide' => '0', 'url' => $currentRoute, 'lock' => $lock]);
}
} else {
$lock = 3;
return new JsonResponse(['valide' => '0', 'url' => $currentRoute, 'lock' => $lock]);
}
}
} else {
$acti = new Activite;
$acti->setUtilisateur($user);
$acti->setURL($currentRoute);
$em->persist($acti);
$em->flush();
$lock = 3;
return new JsonResponse(['valide' => '0', 'url' => $currentRoute, 'lu' => $lu, 'lock' => $lock]);
}
}
/**
* @Route("/ordre-reparation/devis-or/supprimer/multiple", name="dtc_devis_or_liste_supprimer")
*/
public function supprimerMultipleAction(Request $request, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$url = $this->generateUrl('dtc_devis_liste', []);
return new JsonResponse(['url' => $url, 'valide' => '1']);
$data = $request->get('dataTables');
$ids = $data['actions'];
$repo = $em->getRepository(Commande::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('Devis supprimé avec succès !')
);
$url = $this->generateUrl('dtc_devis_liste', []);
return new JsonResponse(['url' => $url, 'valide' => '1']);
}
/**
* @Route("/ordre-reparation/devis-or/supprimer/{id}", name="dtc_devis_or_supprimer")
*/
public function supprimerAction(Request $request, Commande $commande, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$titre_modal = $translator->trans("Demande de confirmation");
$user = $this->getUser();
$form = $this->createForm(SupprimerDevisType::class, $commande);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$em->remove($commande);
$em->flush();
$this->addFlash(
'notice',
$translator->trans('Devis supprimé avec succès !')
);
$url = $this->generateUrl('dtc_devis_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("/ordre-reparation/devis-or", name="dtc_devis_or_liste")
*/
public function listerAction(Request $request, ColonneTableauService $serviceColonneTableau, Datatable $datatable, TranslatorInterface $translator)
{
$param = $request->query->all();
$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(DevisOR::class, "id"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [2],
"visible" => $serviceColonneTableau->getColonneUtilisateur(DevisOR::class, "reference"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [3],
"visible" => $serviceColonneTableau->getColonneUtilisateur(DevisOR::class, "date"),
];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [4], "visible" => false];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [5],
"visible" => $serviceColonneTableau->getColonneUtilisateur(DevisOR::class, "refclient"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [6],
"visible" => $serviceColonneTableau->getColonneUtilisateur(DevisOR::class, "client"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [7],
"visible" => $serviceColonneTableau->getColonneUtilisateur(DevisOR::class, "rdv"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [8],
"visible" => $serviceColonneTableau->getColonneUtilisateur(DevisOR::class, "equipier"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [9],
"visible" => $serviceColonneTableau->getColonneUtilisateur(DevisOR::class, "immat"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [10],
"visible" => $serviceColonneTableau->getColonneUtilisateur(DevisOR::class, "marque"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [11],
"visible" => $serviceColonneTableau->getColonneUtilisateur(DevisOR::class, "modele"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [12],
"visible" => $serviceColonneTableau->getColonneUtilisateur(DevisOR::class, "km"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [13],
"visible" => $serviceColonneTableau->getColonneUtilisateur(DevisOR::class, "serie"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [14],
"visible" => $serviceColonneTableau->getColonneUtilisateur(DevisOR::class, "commentaire"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [15],
"visible" => $serviceColonneTableau->getColonneUtilisateur(DevisOR::class, "refCli"),
];
$tableau_class_cellule[] = ["orderable" => false, "className" => "colonne_id", "targets" => [16], "visible" => true];
$this->datatable($request, $datatable, $translator);
return $this->render('GestionComerciale/DevisOr/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule, 'parametres' => $param]);
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatable(Request $request, Datatable $datatable, TranslatorInterface $translator)
{
$param = $request->query->all();
$datatable->setEntity(Commande::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Réf") => 'x.reference',
$translator->trans("Date") => 'x.date',
$translator->trans("Statut") => 'sc.id',
$translator->trans("Réf client") => 'c.reference',
$translator->trans("Client") => 'c.nom',
$translator->trans("RDV ") => 'x.dateBon',
$translator->trans("Équipier") => 'u.reference',
$translator->trans("Immat") => 'v.immatriculation',
$translator->trans("Marque") => 'm.libelle',
$translator->trans("Modèle") => 'mo.libelle',
$translator->trans("Km") => 'v.kilometrage',
$translator->trans("Num serie") => 'v.numSerie',
$translator->trans("Comm") => 'x.commentaire',
$translator->trans("Réf cmde cli") => 'x.referenceClient',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.vehiculesClient', 'v', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('v.marque', 'm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.statutCommande', 'sc', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('v.modele', 'mo', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.etatCommande', 'ec', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.client', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.utilisateur', 'u', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_devis_or_modifier',
],
],
1 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_devis_or_modifier',
],
],
2 => [
'view' => 'FO/DataTable/heure.html.twig',
],
3 => [
'view' => 'FO/DataTable/statut-commande-fournisseur.html.twig',
],
4 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_client_modifier',
'typeDocument' => 'client',
],
],
5 => [
'view' => 'FO/DataTable/client.html.twig',
'params' => [],
],
6 => [
'view' => 'FO/DataTable/heure.html.twig',
],
7 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_utilisateur_modifier',
'typeDocument' => 'equipier',
],
],
9 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_vehicule_marque_modifier',
'typeDocument' => 'marqueVehiculeOr',
],
],
10 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_vehicule_modele_modifier',
'typeDocument' => 'modeleVehiculeOr',
],
],
13 => [
'view' => 'FO/DataTable/commentaire.html.twig',
],
15 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_devis_or_modifier',
//'supprimer_route' => 'dtc_commande_supprimer',
'objet' => Commande::class,
'deplier' => true,
],
],
]
)->setMultiple(
[
'delete' => [
'title' => 'Non disponible',
'route' => 'dtc_devis_liste_supprimer',
],
]
)
//->setOrder("ec.ordre", "desc")
->setOrder("x.date", "desc")
->setSearch(true)
->setSearchFields([1, 3, 4, 5, 9, 10]);
$where = 'x.typeDocumentCommercial = :typeDocumentCommercial and x.visible= :visible';
$parameters = ['typeDocumentCommercial' => TypeDocumentCommercial::DEVISOR, 'visible' => 1];
if (array_key_exists('parametres', $param)) {
if (array_key_exists('client', $param["parametres"]) and $param["parametres"]["client"] > 0) {
//$datatable->addJoin('x.client', 'client', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$parameters["client"] = $param["parametres"]["client"];
if ($where != "") {
$where .= " AND ";
}
$where .= "c.id = :client";
}
if (array_key_exists('client', $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('client', $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";
}
}
//echo $where;
if ($where != '') {
//echo $where;
$datatable->setWhere($where, $parameters);
}
return $datatable;
}
/**
* @Route("/ordre-reparation/devis-or/recuperer/{id}", name="dtc_devis_or_recuperer")
*/
public function recupererDevisAction(Request $request, Commande $or, EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
$client = $or->getClient();
if ($request->getMethod() == 'POST') {
$devis = $request->request->get('devis');
$em = $em;
$repo_devis = $em->getRepository(Commande::class);
if ($devis != '') {
$devis = $repo_devis->find($devis);
}
if (is_object($devis) and 1 != 1) {
$repo_articleCommande = $em->getRepository(ArticleCommande::class);
foreach ($devis->getArticleCommande() as $ac) {
//echo $ac->getId().' / ';
$articleCommandeOr = $repo_articleCommande->findOneBy(['commande' => $or->getId(), 'article' => $ac->getArticle()->getId()]);
if (is_object($articleCommandeOr)) {
$quantite = $ac->getQuantite() + $articleCommandeOr->getQuantite();
$articleCommandeOr->setQuantite($quantite);
$ralClient = $ac->getRalClient() + $articleCommandeOr->getQuantite();
$articleCommandeOr->setRalClient($ralClient);
if (floatval($ac->getQuantite()) > 0) {
$ac->getArticle()->setStockReserve(floatval($ac->getArticle()->getStockReserve()) + floatval($ac->getQuantite()));
}
$em->persist($ac->getArticle());
//echo 'q:'.$quantite.' / ';
} else {
$articleCommandeOr = clone $ac;
$articleCommandeOr->setCommande($or);
$articleCommandeOr->setRalClient(floatval($ac->getQuantite()));
if (floatval($ac->getQuantite()) > 0) {
$ac->getArticle()->setStockReserve(floatval($ac->getArticle()->getStockReserve()) + floatval($ac->getQuantite()));
}
}
$em->persist($articleCommandeOr);
}
$em->flush();
$this->addFlash(
'notice',
$translator->trans('Devis ajouté avec succès !')
);
}
$url = $this->generateUrl('dtc_ordre_reparation_modifier', ['id' => $or->getId(), 'operation' => '']);
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
} else {
$titre_modal = "Liste des devis de ".$client->getPrenom()." ".$client->getNom();
$this->datatableDevis($or, $datatable, $translator);
$rendu = $this->renderView('GestionComerciale/DevisOr/recuperer.html.twig', ['commande' => $or]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '1', 'url' => '', 'titre' => $titre_modal]);
}
}
/**
* @Route("/ordre-reparation/devis-or/recuperer/grid/{id}", name="dtc_client_devis_or_liste_grid")
*/
public function gridDevisAction(Request $request, Commande $commande, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatableDevis($commande, $datatable, $translator)->execute();
}
/**
* @Route("/ordre-reparation/devis-or/grid", name="dtc_devis_or_liste_grid")
*/
public function gridAction(Request $request, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatable($request, $datatable, $translator)->execute();
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableDevis($commande = "", Datatable $datatable, TranslatorInterface $translator)
{
$datatable //->setDatatableId('dta-devis')
->setEntity(Commande::class, "x")
->setFields(
[
//$translator->trans("ID") => 'x.id',
$translator->trans("Réf") => 'x.reference',
//$translator->trans("Statut") => 's.libelle',
//$translator->trans("Type") => 't.libelle',
$translator->trans("Total HT") => 'x.total',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->setWhere(
'x.client = :client and t.id IN (:typeDocumentCommercial)',
['client' => $commande->getClient(), 'typeDocumentCommercial' => [TypeDocumentCommercial::DEVIS, TypeDocumentCommercial::DEVISOR]]
)
->addJoin('x.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.typeDocumentCommercial', 't', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/lien.html.twig',
'params' => [
'edit_route' => 'dtc_commande_modifier',
'objet' => Commande::class,
],
],
1 => [
'view' => 'FO/DataTable/prix.html.twig',
],
2 => [
'view' => 'FO/DataTable/action_ajouter.html.twig',
'params' => [
'edit_route' => 'dtc_devis_or_recuperer',
'id' => $commande->getId(),
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([0]);
return $datatable;
}
/**
* @Route("/ordre-reparation/devis-or/pdf/{id}", name="dtc_devis_or_pdf")
*/
public function pdfDevisAction(Request $request, Commande $commande, 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/DEVIS/'.$date.'/DEVIS-'.$commande->getReference().'.pdf';
if (file_exists($chemin_pdf)) {
unlink($chemin_pdf);
}
//return $this->render('GestionComerciale/Facture/template_pdf.html.twig',array('commande' => $commande,'societe' => $societe));
$footer = $this->renderView('FO/PDF/footer_pagination_pdf.html.twig', ['societe' => $societe]);
$header = $this->renderView('FO/PDF/header_devis_pdf.html.twig', ['societe' => $societe, 'commande' => $commande]);
//$snappy->setOption('page-size', 'A4');
$snappy->setOption('footer-html', $footer);
$snappy->setOption('header-html', $header);
$snappy->setOption('margin-bottom', "10");
//$snappy->setOption('margin-top',"10");
//$snappy->setOption('zoom', 1 );
//$snappy->setOption('dpi', 300 );
$reference = $request->query->get('reference');
$prix = $request->query->get('prix');
$snappy->generateFromHtml(
$this->renderView(
'GestionComerciale/DevisOr/template_pdf.html.twig',
[
'commande' => $commande,
'societe' => $societe,
'reference' => $reference,
'prix' => $prix,
]
),
$chemin_pdf
);
return $this->render('FO/PDF/conteneur_pdf.html.twig', ['chemin_pdf' => '/'.$chemin_pdf]);
//return new RedirectResponse("/".$chemin_pdf);
}
/**
* @Route("/vente/devis/toggle-devis-or/{id}", name="dtc_devis_toggle_devis_or")
*/
public function toggleDevisDevisOrAction(Request $request, Commande $commande, EntityManagerInterface $em)
{
if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::DEVIS) {
$idTypeDocumentCommercial = 10;
} //Devis -> Devis Or
else {
$idTypeDocumentCommercial = 1;
} //Devis Or -> Devis
$typeDocumentCommercial = $em->getRepository(TypeDocumentCommercial::class)->find($idTypeDocumentCommercial);//devis
$commande->setTypeDocumentCommercial($typeDocumentCommercial);
$em->persist($commande);
$em->flush();
return $this->redirectToRoute('dtc_devis_modifier', ["id" => $commande->getId()]);
}
}