<?php
namespace App\Controller\GestionComerciale;
use App\Entity\GestionComerciale\Colisage;
use App\Entity\GestionComerciale\Commande;
use App\Entity\Rangements\Caisse;
use App\Entity\GestionComerciale\StatutCommande;
use App\Form\GestionComerciale\CommandeAnomalieType;
use App\Form\GestionComerciale\ColisageAnomalieType;
use App\Library\Datatable\Util\Datatable;
use App\Service\GestionComerciale\CommandeService;
use Doctrine\ORM\EntityManagerInterface;
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 AnomaliesColisageController extends AbstractController
{
/**
* @Route("/vente/colisage-anomalies", name="dtc_colisage_anomalies_liste")
*/
public function listerAction(Request $request, $fabricationParente = '', $fabricationMultiple = '', $prestation = '', $commandeFournisseur = '', Datatable $datatable,
TranslatorInterface $translator
) {
$this->datatable($datatable, $translator);
$tableauClassColonne = [];
$tableauClassColonne = [];
$tableauClassColonne[] = ["className" => "colonne_id", "targets" => [0], "visible" => false, "orderable" => false];
$tableauClassColonne[] = ["className" => "colonne_id text-center", "targets" => [1], "visible" => true, "orderable" => false];
$tableauClassColonne[] = ["className" => "colonne_id text-center", "targets" => [2], "visible" => true, "orderable" => true];
$tableauClassColonne[] = ["className" => "colonne_id", "targets" => [3], "visible" => true, "orderable" => true];
$tableauClassColonne[] = ["className" => "colonne_id", "targets" => [4], "visible" => true, "orderable" => true];
$tableauClassColonne[] = ["className" => "colonne_id", "targets" => [5], "visible" => true, "orderable" => true];
$tableauClassColonne[] = ["className" => "colonne_id text-center", "targets" => [6], "visible" => true, "orderable" => true];
$tableauClassColonne[] = ["className" => "colonne_id text-center", "targets" => [7], "visible" => true, "orderable" => true];
$tableauClassColonne[] = ["className" => "colonne_id text-center", "targets" => [8], "visible" => true, "orderable" => true];
$tableauClassColonne[] = ["className" => "colonne_id text-left", "targets" => [9], "visible" => true, "orderable" => true];
$tableauClassColonne[] = ["className" => "colonne_id", "targets" => [10], "visible" => true, "orderable" => false];
$tableauClassColonne = [];
$template = 'GestionComerciale/AnomaliesColisage/lister.html.twig';
return $this->render($template, [
'tableauClassColonne' => $tableauClassColonne,
]);
}
/**
* @Route("/vente/colisage-anomalies/grid", name="dtc_colisage_anomalies_liste_grid")
*/
public function gridAction(Request $request, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatable($datatable, $translator)->execute();
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatable(Datatable $datatable, TranslatorInterface $translator)
{
$parameters = [];
$datatable->setEntity(Colisage::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Référence") => 'x.reference',
$translator->trans("Anomalie") => 'ra.libelle',
$translator->trans("Commentaire") => 'x.commentaireAnomalie',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.raisonAnomalie', 'ra', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.client', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
4 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
//'supprimer_route' => 'dtc_commande_supprimer',
'objet' => Colisage::class,
'page_affiche' => "anomalies_etiquettes",
],
],
]
)
->setSearch(true)
//->setSearchFields(array(3,4,5,7,8,9,10,11))
->setSearchFields([])
//->setOrder('x.date', 'ASC');
;
$where = 'x.raisonAnomalie is not null';
if ($where != '') {
$datatable->setWhere($where, $parameters);
}
return $datatable;
}
/**
* @Route("/vente/colisage-anomalies/{id}", name="dtc_colisage_anomalies_ajouter")
*/
public function ajouterAction(Request $request, Colisage $colisage, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator, CommandeService $commandeService)
{
$titre_modal = $translator->trans("Indiquer une anomalie d'étiquette");
$get = $request->query->all();
$form = $this->createForm(ColisageAnomalieType::class, $colisage);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$rendu = '';
$url = '';
$this->addFlash('notice', $translator->trans('Anomalie ajoutée avec succès !'));
$em->persist($colisage);
$em->flush();
$url = "";
if ( ! empty($get["type"]) && $get["type"] == "emballage" && ! empty($get["lp"]) && $get["lp"] != "") {
$url = $this->generateUrl('dtc_liste_preparation_simplifie_scan_produit_action', ["id" => $get["lp"]]);
} elseif ( ! empty($get["type"]) && $get["type"] == "etiquette" && ! empty($get["lp"]) && $get["lp"] != "") {
$url = $this->generateUrl('dtc_liste_preparation_simplifie_scan_produit_action', ["id" => $get["lp"]]);
} else {
$url = $this->generateUrl('dtcfo_homepage', ["ms" => "1"]);
}
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url], 200, ['Content-Type' => 'application/json']);
} else {
$errors = $validator->validate($caisse);
$rendu = $this->renderView('GestionComerciale/Anomalies/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
$rendu = $this->renderView('GestionComerciale/Anomalies/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'colisage' => $colisage]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}