<?php
namespace App\Controller\Articles;
use App\Entity\Articles\Article;
use App\Entity\Articles\ArticleCategorie;
use App\Entity\Articles\ArticleComposant;
use App\Entity\Articles\Categorie;
use App\Entity\Articles\ConditionVente;
use App\Entity\Fournisseurs\Fournisseur;
use App\Form\Articles\ConditionVenteType;
use App\Form\Articles\SupprimerConditionVenteType;
use App\Library\Datatable\Util\Datatable;
use App\Security\Voter\EntityVoter;
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 ConditionVenteController extends AbstractController
{
/**
* @Route("", name="")
*/
public function getPrixArticleConditionVenteAction(Fournisseur $fournisseur, Article $article)
{
$prix = "";
foreach ($article->getConditionsAchat() as $c) {
//echo "<div>TEST ==> ".$fournisseur->getId()." ::: </div>";
if ($fournisseur->getId() == $c->getFournisseur()->getId()) {
$prix = $c->getPrixAchatNet();
$prix = number_format($prix, 2, '.', ' ');
$prix .= " €";
}
}
return new JsonResponse(['prix' => $prix]);
}
/**
* @Route("/condition-vente/nouveau/{id}/{type}", name="dtc_condition_vente_ajouter")
*/
public function ajouterAction(Request $request, $id, $type = "", EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$titre_modal = $translator->trans("Nouvelle condition de vente");
$repo_objet = $em->getRepository(Article::class);
$get = $request->query->all();
$conditionVente = new ConditionVente();
$objet = $repo_objet->find($id);
if (is_object($objet)) {
$conditionVente->setArticle($objet);
//$conditionVente->setLibelle($objet->getLibelle());
}
$user = $this->getUser();
//$conditionVente->setUtilisateur($user);
$form = $this->createForm(ConditionVenteType::class, $conditionVente);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
if ($type == 'article') {
$repo_objet = $em->getRepository(Article::class);
$objet = $repo_objet->find($id);
$url = $this->generateUrl('dtc_article_modifier', ['id' => $objet->getId(), 'tab' => 'condVente']);
}
$em->persist($conditionVente);
$em->persist($objet);
$em->flush();
if (array_key_exists('table', $get) && $get["table"] != "") {
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url, 'type' => 'recharger_datatable', 'id_datatable' => $get["table"]],
200,
['Content-Type' => 'application/json']);
} else {
$this->addFlash('notice', $translator->trans('Condition de vente ajoutée avec succès !'));
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
}
} else {
$errors = $validator->validate($conditionVente);
$rendu = $this->renderView(
'Articles/ConditionVente/ajouter.html.twig',
['form' => $form->createView(), 'errors' => $errors, 'id' => $id, 'type' => $type, 'conditionVente' => $conditionVente]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
$rendu = $this->renderView(
'Articles/ConditionVente/ajouter.html.twig',
['form' => $form->createView(), 'errors' => $errors, 'id' => $id, 'type' => $type, 'conditionVente' => $conditionVente]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
//return $this->render('Articles/ConditionVente/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type));
}
/**
* @Route("/condition-vente/modifier/{objet}/{id}/{type}", name="dtc_condition_vente_modifier")
*/
public function modifierAction(Request $request, ConditionVente $objet, $id, $type, EntityManagerInterface $em, TranslatorInterface $translator,
ValidatorInterface $validator
) {
$conditionVente = $objet;
$titre_modal = $translator->trans("Modifier la condition de vente");
$get = $request->query->all();
$user = $this->getUser();
// $conditionVente->setUtilisateur($user);
$form = $this->createForm(ConditionVenteType::class, $conditionVente);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
$droit = $this->isGranted(EntityVoter::UPDATE,ConditionVente::class);
/*
if(!$droit) {
$rendu = $this->renderView('Articles/ConditionVente/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type,'objet'=>$objet));
return new Response(json_encode(array('rendu'=>$rendu,'valide'=>'0','url'=>'','titre'=>$titre_modal)), 200, array('Content-Type'=>'application/json'));
}
*/
if ($form->isValid()) {
if ($type == 'article') {
$repo_objet = $em->getRepository(Article::class);
$article = $repo_objet->find($id);
$url = $this->generateUrl('dtc_article_modifier', ['id' => $article->getId(), 'tab' => 'condVente']);
}
if ($type == 'fournisseur') {
$url = $this->generateUrl('dtc_fournisseur_modifier', ['id' => $id, 'tab' => 'conditions']);
}
if ($type == 'commandeFournisseur') {
$url = $this->generateUrl('dtc_commande_fournisseur_modifier', ['id' => $id]);
}
$em->persist($conditionVente);
$em->flush();
if (array_key_exists('table', $get) && $get["table"] != "") {
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url, 'type' => 'recharger_datatable', 'id_datatable' => $get["table"]],
200,
['Content-Type' => 'application/json']);
} else {
$this->addFlash('notice', $translator->trans('Condition de vente modifiée avec succès !'));
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
}
} else {
$errors = $validator->validate($conditionVente);
$rendu = $this->renderView(
'Articles/ConditionVente/ajouter.html.twig',
['form' => $form->createView(), 'errors' => $errors, 'id' => $id, 'type' => $type, 'objet' => $objet, 'conditionVente' => $conditionVente]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
$rendu = $this->renderView(
'Articles/ConditionVente/ajouter.html.twig',
['form' => $form->createView(), 'errors' => $errors, 'id' => $id, 'type' => $type, 'objet' => $objet, 'conditionVente' => $conditionVente]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("/condition-vente/supprimer/{objet}/{id}/{type}", name="dtc_condition_vente_supprimer")
*/
public function supprimerAction(Request $request, ConditionVente $objet, $id, $type, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$conditionVente = $objet;
$titre_modal = $translator->trans("Demande de confirmation");
$user = $this->getUser();
$get = $request->query->all();
$form = $this->createForm(SupprimerConditionVenteType::class, $conditionVente);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$em->remove($conditionVente);
$em->flush();
if ($type == 'article') {
$url = $this->generateUrl('dtc_article_modifier', ['id' => $id, 'tab' => 'condVente']);
}
if (array_key_exists('table', $get) && $get["table"] != "") {
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url, 'type' => 'recharger_datatable', 'id_datatable' => $get["table"]],
200,
['Content-Type' => 'application/json']);
} else {
$this->addFlash('notice', $translator->trans('Condition de vente supprimée avec succès !'));
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
}
} else {
$errors = $validator->validate($conditionVente);
$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]);
}
/**
* @Route("/condition-vente/charger-tableau/{id}/{type}", name="dtc_condition_vente_charger_tableau")
*/
public function chargerTableauAction(Request $request, $id = "0", $type = "a")
{
$rendu = $this->renderView('Articles/ConditionVente/charger_tableau.html.twig', ["id" => $id, "type" => $type]);
return new JsonResponse(['rendu' => $rendu]);
}
/**
* @Route("/condition-vente", name="dtc_condition_vente_liste")
*/
public function listerAction(Request $request, $id = "0", $type = "a", EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
$tableau_class_cellule = [];
/*
$tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(0),"visible"=>true);
$tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(1),"visible"=>true);
$tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(2),"visible"=>true);
$tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(3),"visible"=>true);
$tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(4),"visible"=>true);
$tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(5),"visible"=>true);
$tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(6),"visible"=>true);
$tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(7),"visible"=>true);
$tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(8),"visible"=>true);
$tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(9),"visible"=>true);
$tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(10),"visible"=>true);
$tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_id","targets"=>array(11),"visible"=>true);
$tableau_class_cellule[]=array("orderable"=> false,"searchable"=> false,"className"=>" colonne_id","targets"=>array(12),"visible"=>true);
*/
$modal = $request->query->get('modal');
$articleId = $request->query->get('id');
$qte = $request->query->get('qte');
if ($type == "article") {
$repo_objet = $em->getRepository(Article::class);
}
if ($type == "fournisseur") {
$repo_objet = $em->getRepository(Fournisseur::class);
}
$objet = $repo_objet->find($id);
if ($articleId != '') {
$article = $repo_objet->find($articleId);
if ($modal == 1 && is_object($article)) {
$titre_modal = $translator->trans('Conditions de vente');
$this->datatableArticle($article, $type, $datatable, $translator);
$rendu = $this->renderView(
'Articles/ConditionVente/lister.html.twig',
['tableauClassColonne' => $tableau_class_cellule, "id" => $articleId, "type" => $type, 'qte' => $qte]
);
//$rendu = $this->renderView('FO/Supprimer/supprimer.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type,'objet'=>$objet));
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
if (is_object($objet)) {
if ($type == "article") {
$tableau_class_cellule = [];
$tableau_class_cellule[] = ["searchable" => true, "className" => "visible_export colonne_id", "targets" => [0], "visible" => false];
$tableau_class_cellule[] = ["searchable" => true, "className" => "visible_export colonne_id text-left", "targets" => [1], "visible" => true];
$tableau_class_cellule[] = ["searchable" => true, "className" => "visible_export colonne_id text-center", "targets" => [2], "visible" => true];
$tableau_class_cellule[] = ["searchable" => true, "className" => "visible_export colonne_id text-center", "targets" => [3], "visible" => true];
$tableau_class_cellule[] = ["searchable" => true, "className" => "visible_export colonne_id text-right", "targets" => [4], "visible" => true];
$tableau_class_cellule[] = ["searchable" => true, "className" => "visible_export colonne_id text-center", "targets" => [5], "visible" => true];
$tableau_class_cellule[] = ["searchable" => true, "className" => "visible_export colonne_id text-center", "targets" => [6], "visible" => true];
$tableau_class_cellule[] = ["searchable" => true, "className" => "visible_export colonne_id ", "targets" => [7], "visible" => true];
$tableau_class_cellule[] = ["searchable" => true, "className" => "visible_export colonne_id ", "targets" => [8], "visible" => true];
$tableau_class_cellule[] = ["searchable" => true, "className" => "visible_export colonne_id text-center", "targets" => [9], "visible" => true];
$tableau_class_cellule[] = ["orderable" => false, "searchable" => false, "className" => "colonne_id", "targets" => [10], "visible" => true];
$this->datatableArticle($objet, $type, $datatable, $translator);
} elseif ($type == "fournisseur") {
$tableau_class_cellule = [];
$tableau_class_cellule[] = ["searchable" => false, "className" => "visible_export colonne_id", "targets" => [0], "visible" => true];
$tableau_class_cellule[] = ["searchable" => false, "className" => "visible_export colonne_id", "targets" => [1], "visible" => true];
$tableau_class_cellule[] = ["searchable" => false, "className" => "visible_export colonne_id", "targets" => [2], "visible" => true];
$tableau_class_cellule[] = ["searchable" => false, "className" => "visible_export colonne_id", "targets" => [3], "visible" => true];
$tableau_class_cellule[] = ["searchable" => false, "className" => "visible_export colonne_id", "targets" => [4], "visible" => true];
$tableau_class_cellule[] = ["searchable" => false, "className" => "visible_export colonne_id", "targets" => [5], "visible" => true];
$tableau_class_cellule[] = ["searchable" => false, "className" => "visible_export colonne_id", "targets" => [6], "visible" => true];
$tableau_class_cellule[] = ["searchable" => false, "className" => "visible_export colonne_id", "targets" => [7], "visible" => true];
$tableau_class_cellule[] = ["searchable" => false, "className" => "visible_export colonne_id", "targets" => [8], "visible" => true];
$tableau_class_cellule[] = ["searchable" => false, "className" => "visible_export colonne_id", "targets" => [9], "visible" => true];
$tableau_class_cellule[] = ["orderable" => false, "className" => "colonne_id", "targets" => [10], "visible" => true];
$this->datatableFournisseur($objet, $type, $datatable, $translator);
}
return $this->render('Articles/ConditionVente/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule, "id" => $id, "type" => $type]);
} else {
$this->datatable($datatable, $translator);
return $this->render('Articles/ConditionVente/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule, "id" => $id, "type" => $type]);
}
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatable(Datatable $datatable, TranslatorInterface $translator)
{
$datatable->setDatatableId('dta-condition-vente')
->setEntity(ConditionVente::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Libellé") => 'x.libelle',
$translator->trans("Mini") => 'x.debut',
$translator->trans("Maxi") => 'x.fin',
$translator->trans("Prix") => 'x.prix',
//$translator->trans("Libelle") => 'x.libelle',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
//->addJoin('x.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
/*->setWhere(
$type_jointure.' = :objet',
array('objet' => $objet)
)
*/
->setRenderers(
[
5 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
//'edit_route' => 'dtc_garantie_modifier',
//'supprimer_route' => 'dtc_garantie_supprimer',
'entite' => 'garantie',
'objet' => ConditionVente::class,
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([1, 4]);
return $datatable;
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableFournisseur($objet, $type = "", Datatable $datatable, TranslatorInterface $translator)
{
$type_jointure = 'x.'.$type;
$datatable->setDatatableId('dta-condition-vente')
->setEntity(ConditionVente::class, "x")
->setFields(
[
//$translator->trans("ID") => 'x.id',
$translator->trans("Réf") => 'a.reference',
$translator->trans("Réf fourn") => 'x.referenceFournisseur',
$translator->trans("Libellé") => 'a.libelle',
$translator->trans("Qté mini") => 'x.quantite',
$translator->trans("Conditionnement") => 'x.conditionnement',
$translator->trans("Prix achat brut") => 'x.prixAchatBrut',
$translator->trans("Tx remise") => 'x.tauxRemise',
$translator->trans("Tx remise suppl.") => 'x.tauxRemiseSupplementaire',
$translator->trans("Prix achat net") => 'x.prixAchatNet',
//$translator->trans("Fournisseur") => 'f.libelle',
//$translator->trans("Devise") => "d.name",
$translator->trans("Défaut") => 'x.defaut',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.article', 'a', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.fournisseur', 'f', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('f.devise', 'd', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setWhere(
'x.fournisseur = :objet',
['objet' => $objet]
)
->setRenderers(
[
/*
1 => array(
'view' => 'FO/DataTable/actions_modal.html.twig',
'params' => array(
'edit_route' => 'dtc_article_modifier',
'id' => '',
'type' => $type,
//'entite' => 'article',
//'objet' => "DTCArticlesBundle:Article",
'typeDocument' => 'article'
),
),
*
*/
2 => [
'view' => 'FO/DataTable/actions_modal.html.twig',
'params' => [
'edit_route' => 'dtc_condition_achat_modifier',
'id' => $objet->getId(),
'type' => $type,
'entite' => 'garantie',
'objet' => ConditionVente::class,
'affichage' => 'item',
],
],
5 => [
'view' => 'FO/DataTable/prix.html.twig',
],
8 => [
'view' => 'FO/DataTable/prix.html.twig',
],
9 => [
'view' => 'FO/DataTable/booleen.html.twig',
],
10 => [
'view' => 'FO/DataTable/actions_modal.html.twig',
'params' => [
'edit_route' => 'dtc_condition_achat_modifier',
'supprimer_route' => 'dtc_condition_achat_supprimer',
'id' => $objet->getId(),
'table' => 'dta-condition-vente',
'type' => $type,
'entite' => 'garantie',
'objet' => ConditionVente::class
,
'width_modal' => 800,
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([1, 2, 3, 4, 5, 6, 7, 8]);
return $datatable;
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableArticle($objet, $type = "", Datatable $datatable, TranslatorInterface $translator)
{
$type_jointure = 'x.'.$type;
$datatable->setDatatableId('dta-condition-vente')
->setEntity(ConditionVente::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Libellé") => 'x.libelle',
$translator->trans("Mini") => 'x.debut',
$translator->trans("Maxi") => 'x.fin',
$translator->trans("Prix") => 'x.prix',
$translator->trans("Date début") => 'x.dateDebut',
$translator->trans("Date fin") => 'x.dateFin',
$translator->trans("Pays") => 'p.titre',
$translator->trans("Catégorie") => 'c.libelle',
$translator->trans("Statut") => 'x.statut',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.pays', 'p', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.categorieClient', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('f.devise', 'd', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.uniteMesure', 'u', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
/*->setWhere(
$type_jointure.' = :objet',
array('objet' => $objet)
)
*/
->setWhere(
'x.article = :objet',
['objet' => $objet]
)
->setRenderers(
[
4 => [
'view' => 'FO/DataTable/prix.html.twig',
'params' => [
'afficher_total' => false,
],
],
5 => [
'view' => 'FO/DataTable/date.html.twig',
],
6 => [
'view' => 'FO/DataTable/date.html.twig',
],
9 => [
'view' => 'FO/DataTable/statut.html.twig',
'params' => [
'edit_route' => 'dtc_condition_vente_statut',
],
],
/*
0 => array(
'view' => 'FO/DataTable/date.html.twig',
),
1 => array(
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => array(
'edit_route' => 'dtc_fournisseur_modifier',
'typeDocument' => 'fournisseur',
'target' => '_blank'
),
),
3 => array(
'view' => 'FO/DataTable/prix.html.twig',
),
7 => array(
'view' => 'FO/DataTable/num2chiffres.html.twig',
),
8 => array(
'view' => 'FO/DataTable/prix.html.twig',
),
10 => array(
'view' => 'FO/DataTable/prix.html.twig',
'params' => array('conversion'=>'*',
'forceEuro' => 1
)
),
15 => array(
'view' => 'FO/DataTable/statut.html.twig',
'params' => array(
'edit_route' => 'dtc_condition_achat_statut'
)
),
*/
10 => [
'view' => 'FO/DataTable/actions_modal.html.twig',
'params' => [
'edit_route' => 'dtc_condition_vente_modifier',
'supprimer_route' => 'dtc_condition_vente_supprimer',
'id' => $objet->getId(),
'type' => $type,
'entite' => 'garantie',
'table' => 'dta-condition-vente',
'objet' => ConditionVente::class
,
'width_modal' => 800,
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)//->setSearchFields(array(1,2))
;
return $datatable;
}
/**
* @Route("/condition-vente/grid/{id}/{type}", name="dtc_condition_vente_liste_grid")
*/
public function gridAction($id = "", $type = "", EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
if ($type == "article") {
$repo_objet = $em->getRepository(Article::class);
} elseif ($type == "fournisseur") {
$repo_objet = $em->getRepository(Fournisseur::class);
}
$objet = $repo_objet->find($id);
if (is_object($objet) and $type == "article") {
return $this->datatableArticle($objet, $type, $datatable, $translator)->execute();
} elseif (is_object($objet) and $type == "fournisseur") {
return $this->datatableFournisseur($objet, $type, $datatable, $translator)->execute();
} else {
return $this->datatable($datatable, $translator)->execute();
}
}
/**
* @Route("/condition-vente/statut/{id}", name="dtc_condition_vente_statut")
*/
public function changeStatutAction(ConditionVente $conditionVente, EntityManagerInterface $em)
{
if ($conditionVente->getStatut() == 1) {
$conditionVente->setStatut(0);
} else {
$conditionVente->setStatut(1);
}
$em->persist($conditionVente);
$em->flush();
$em->refresh($conditionVente);
$headers = [
'Content-Type' => 'application/json',
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'POST',
];
return new JsonResponse(['data' => '1'], 200, $headers);
}
/**
* @Route("/condition-vente/nouveau-ajax", name="dtc_condition_vente_add_ajax")
*/
public function ajouterAjaxAction(Request $request, EntityManagerInterface $em)
{
$refArticle = $request->query->get('refArticle');
$quantiteMin = $request->query->get('quantiteMin');
$quantiteMax = $request->query->get('quantiteMax');
$prix = $request->query->get('prix');
$finitions = [];
if ($this->getParameter('categorie_finitions')) {
$categorie_finitions = $em->getRepository(Categorie::class)->find($this->getParameter('categorie_finitions'));
$articlesCategories = $em->getRepository(ArticleCategorie::class)->findBy(['categorie' => $categorie_finitions]);
foreach ($articlesCategories as $articleCategorie) {
$finitions[] = $articleCategorie->getArticle();
}
}
$refArray = explode('-', $refArticle);
//$article = $repo_article->getArticleByRef();
$finition = null;
$ref = '';
foreach ($finitions as $finitionTmp) {
$refTmp = $refArray[1];
$pos = strpos($refTmp, $finitionTmp->getReference());
if ($pos !== false) {
$refTmp = str_replace($finitionTmp->getReference(), '', $refTmp);
if (strlen($refTmp) == $pos) {
$finition = $finitionTmp;
$ref = $refTmp;
break;
}
}
}
if ($ref != '') {
$ref .= '|';
if ( ! empty($refArray[2])) {
$ref .= $refArray[2];
}
$article = $em->getRepository(Article::class)->findOneBy(['reference' => $ref]);
if (is_object($article)) {
$conditionVente = $em->getRepository(ConditionVente::class)->findOneBy([
'article' => $article,
'debut' => $quantiteMin,
'fin' => $quantiteMax,
'finition' => $finition,
]);
if ( ! is_object($conditionVente)) {
$conditionVente = new ConditionVente;
$conditionVente->setDebut($quantiteMin);
$conditionVente->setFin($quantiteMax);
$conditionVente->setArticle($article);
$conditionVente->setFinition($finition);
$conditionVente->setStatut(true);
}
$conditionVente->setPrix($prix);
$em->persist($conditionVente);
$em->flush();
if (is_object($finition)) {
$articleComposant = $em->getRepository(ArticleComposant::class)->findOneBy([
'articleCompose' => $article,
'article' => $finition,
]);
if ( ! is_object($articleComposant)) {
$articleComposant = new ArticleComposant();
$articleComposant->setArticleCompose($article);
$articleComposant->setArticle($finition);
$articleComposant->setQuantite(1);
$em->persist($articleComposant);
$em->flush();
}
}
}
}
$retour = 'ref: '.$ref;
if (is_object($finition)) {
$retour .= ' + finition '.$finition->getReference();
}
$retour .= ' -> '.$prix;
if ( ! empty($conditionVente) && is_object($conditionVente)) {
$retour .= ' / condition de vente ID '.$conditionVente->getId();
}
return new JsonResponse(['data' => $retour]);
}
}