<?php
namespace App\Controller\Articles;
use App\Entity\Articles\Article;
use App\Entity\Articles\ArticleCategorie;
use App\Entity\Articles\Categorie;
use App\Entity\Articles\ConditionAchat;
use App\Entity\Articles\FamilleCompta;
use App\Entity\Articles\HistoriqueArticle;
use App\Entity\Articles\Image;
use App\Entity\Articles\Marque;
use App\Entity\Articles\MouvementStock;
use App\Entity\Articles\RaisonMouvementStock;
use App\Entity\Articles\RefsEquivalentes;
use App\Entity\Articles\Type;
use App\Entity\FO\Societe;
use App\Entity\Fournisseurs\Fournisseur;
use App\Entity\Ged\Fichier;
use App\Entity\GestionComerciale\Commande;
use App\Model\GestionCommerciale\TypeDocumentCommercial;
use App\Entity\GestionComerciale\ArticleCommande;
use App\Entity\GestionComerciale\StatutCommande;
use App\Entity\MarketPlace\ArticleMarketPlace;
use App\Entity\MarketPlace\ArticleMarketPlaceCaracteristique;
use App\Entity\MarketPlace\ArticleMarketPlaceImage;
use App\Entity\MarketPlace\Caracteristiques;
use App\Entity\MarketPlace\CategorieErpCategorieMarketPlace;
use App\Entity\MarketPlace\CompteMarketPlace;
use App\Entity\MarketPlace\ErreurPublicationArticleMarketPlace;
use App\Entity\MarketPlace\MarketPlace;
use App\Entity\MarketPlace\Profil;
use App\Entity\MarketPlace\StatutArticle;
use App\Entity\MarketPlace\TarifModeLivraison;
use App\Entity\Vehicules\Application;
use App\Entity\Vehicules\Modele;
use App\Entity\Vehicules\Type as VehiculesType;
use App\Form\Articles\ArticleDiversType;
use App\Form\Articles\ArticleRechercheType;
use App\Form\Articles\ArticleType;
use App\Library\Datatable\Util\Datatable;
use App\Library\Uploader\Services\FileUploader;
use App\Security\Voter\EntityVoter;
use App\Service\Articles\ArticleCategorieService;
use App\Service\Articles\ArticleService;
use App\Service\Articles\DocumentArticle;
use App\Service\Articles\ImageArticleService;
use App\Service\MarketPlace\ArticleMarketPlaceService;
use App\Service\Utilisateur\ColonneTableauService;
use Doctrine\ORM\EntityManagerInterface;
use DTS\eBaySDK\FileTransfer\Types\Data;
use JMS\Serializer\SerializerBuilder;
use Knp\Component\Pager\PaginatorInterface;
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\Security\Core\Exception\AccessDeniedException;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class ArticleController extends AbstractController
{
/**
* @Route("/article/statut-nomenclature/modifier/{id}", name="dtc_article_nomemclature_statut")
*/
public function changeStatutNomemclatureAction(Article $article, EntityManagerInterface $em)
{
if ($article->getNomenclatureValidee() == 1) {
$article->setNomenclatureValidee(0);
} else {
$article->setNomenclatureValidee(1);
}
$em->persist($article);
$em->flush();
$em->refresh($article);
$headers = ['Content-Type' => 'application/json', 'Access-Control-Allow-Origin' => '*', 'Access-Control-Allow-Methods' => 'POST'];
return new JsonResponse(['data' => '1'], 200, $headers);
}
/**
* @Route("/article/dupliquer/{id}", name="dtc_article_dupliquer")
*/
public function dupliquerAction(Article $article, EntityManagerInterface $em, TranslatorInterface $translator)
{
$article_duplique = clone $article;
$article_duplique->setLibelle("COPIE ".$article_duplique->getLibelle());
$em->persist($article_duplique);
$em->flush();
$this->addFlash('notice', $translator->trans('Produit dupliqué avec succès !'));
return $this->redirectToRoute('dtc_article_liste');
}
/**
* @Route("/article/dupliquer/{id}/formulaire", name="dtc_article_dupliquer_formulaire")
*/
public function dupliquerFormulaireAction(Request $request, Article $article, EntityManagerInterface $em, ValidatorInterface $validator, ArticleService $articleService,
ImageArticleService $imageArticleService, DocumentArticle $documentArticle, TranslatorInterface $translator
) {
$article_duplique = new Article;
//Champs obligatoire
/*
$article_duplique->setLibelle(" ");
$article_duplique->setDescriptionCourte(" ");
$article_duplique->setPrixBase(0);
$article_duplique->setPrixVente(0);
*
*/
//com git
//Marque
$article_duplique->setReference("");
$article_duplique->setStatut(false);
$article_duplique->setLibelle($article->getLibelle());
$article_duplique->setCoefficientPrixBaseVente($article->getCoefficientPrixBaseVente());
$article_duplique->setIdImport("");
if (is_object($article->getRegleTaxe())) {
$article_duplique->setRegleTaxe($article->getRegleTaxe());
}
if (is_object($article->getFamilleCompta())) {
$article_duplique->setFamilleCompta($article->getFamilleCompta());
}
$marque = $article->getMarque();
if (is_object($marque)) {
$article_duplique->setMarque($marque);
}
if (is_object($article->getType())) {
$article_duplique->setType($article->getType());
}
//Publication
//$statut = $article->getStatut();
//$article_duplique->setStatut($statut);
$aConsigner = $article->getAConsigner();
$article_duplique->setAConsigner($aConsigner);
$consigne = $article->getConsigne();
$article_duplique->setConsigne($consigne);
$stockAuto = $article->getStockAuto();
$article_duplique->setStockAuto($stockAuto);
$produitInterne = $article->getProduitInterne();
$article_duplique->setProduitInterne($produitInterne);
$virtuel = $article->getVirtuel();
$article_duplique->setVirtuel($virtuel);
$majPrix = $article->getMajPrix();
$article_duplique->setMajPrix($majPrix);
$arretGamme = $article->getArretGamme();
$article_duplique->setArretGamme($arretGamme);
$afficherComposantPdfInterne = $article->getAfficherComposantPdfInterne();
$article_duplique->setAfficherComposantPdfInterne($afficherComposantPdfInterne);
$afficherComposantPdfExterne = $article->getAfficherComposantPdfExterne();
$article_duplique->setAfficherComposantPdfExterne($afficherComposantPdfExterne);
$article_duplique->setDivers($article->getDivers());
$article_duplique->setNumSerieObligatoire($article->getNumSerieObligatoire());
$article_duplique->setNonCommandable($article->getNonCommandable());
$article_duplique->setMainOeuvre($article->getMainOeuvre());
$article_duplique->setPrestation($article->getPrestation());
$article_duplique->setArchive($article->getArchive());
$article_duplique->setNonStocke($article->getNonStocke());
//Catégorie de remise
$categorieRemise = $article->getCategorieRemiseArticle();
$article_duplique->setCategorieRemiseArticle($categorieRemise);
/*
$em->persist($article_duplique);
$em->flush();
*
*/
//Catégories
$categories = $article->getArticleCategorie();
foreach ($categories as $categorie) {
$categorie_dupliquee = clone $categorie;
//$categorie_dupliquee->setArticle($article_duplique);
//$em->persist($categorie_dupliquee);
$article_duplique->addArticleCategorie($categorie_dupliquee);
}
//Codes Comptables
/*
$codesCompta = $article->getArticlesCompta();
foreach($codesCompta as $codeCompta){
$codeCompta_duplique = clone $codeCompta;
//$codeCompta_duplique->setArticle($article_duplique);
//$em->persist($codeCompta_duplique);
$article_duplique->addArticlesComptum($codeCompta_duplique);
}*/
$user = $this->getUser();
$article_duplique->setUtilisateur($user);
$tokenPicture = sprintf('%09d', mt_rand(0, 1999999999));
$photosArray = [];
$form = $this->createForm(ArticleType::class, $article_duplique);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
$tokenP = $request->request->get('tokenPicture');
$tokenD = $request->request->get('tokenDocument');
//echo 'submitted';
if ($form->isValid()) {
//echo 'valid';
//Remplissage auto des champs web
/*
if ($article->getNomWeb() == '') $article->setNomWeb($article->getLibelle().' '.$article->getLibelleSecondaire());
if ($article->getReferenceWeb() == '') $article->setReferenceWeb($article->getReference());
if ($article->getReferenceFournisseurWeb() == '') $article->setReferenceFournisseurWeb($article->getReferenceFournisseur());
if ($article->getDescriptionWeb() == '') $article->setDescriptionWeb($article->getDescription());
if ($article->getResumeWeb() == '') $article->setResumeWeb($article->getDescriptionCourte());
*
*/
// $article
//echo "<div>TEST : ".$article->getId()."</div>";
//exit;
$em->persist($article_duplique);
$em->flush();
if (count($article->getConditionsAchat()) > 0) {
foreach ($article->getConditionsAchat() as $cond) {
if ($cond->getDefaut()) {
$clone_cond = clone $cond;
$clone_cond->setArticle($article_duplique);
$clone_cond->setPrixAchatBrut(null);
$clone_cond->setPrixAchatNet(null);
$article_duplique->addConditionsAchat($clone_cond);
$em->persist($clone_cond);
}
}
}
foreach ($article->getArticlesComposants() as $ac) {
$article_comosant = clone $ac;
$article_comosant->setArticleCompose($article_duplique);
$em->persist($article_comosant);
}
/*
foreach($article->getRefsEquivalentes() as $rf) {
$article_duplique->addRefsEquivalente($rf);
$em->persist($article_duplique);
}
foreach($article->getRefsEquivalentesConcurrence() as $rec) {
$rec_clone = clone $rec;
$rec_clone->setArticle($article_duplique);
$em->persist($rec_clone);
}
*/
$em->flush();
$imageArticleService->sauvegarder($article_duplique, 'images', $tokenP);
$documentArticle->sauvegarder($article_duplique, 'documents', $tokenD);
$this->addFlash('notice', $translator->trans('Produit ajouté avec succès !'));
$message_historique = [];
$message_historique["titre"] = "Création d'un article";
$message_historique["message"] = "";
$articleService->creerHistorique($article, 'defaut', $message_historique);
return $this->redirectToRoute('dtc_article_modifier', ['id' => $article_duplique->getId()]);
} else {
$errors = $validator->validate($article_duplique);
//\Doctrine\Common\Util\Debug::dump($errors);
}
}
return $this->render('Articles/Article/ajouter.html.twig', [
'form' => $form->createView(),
'errors' => $errors,
'photos' => $photosArray,
'tokenPicture' => $tokenPicture,
'article' => $article_duplique,
]);
}
/**
* @Route("/article/modal/afficher/{id}", name="dtc_article_afficher_modal")
*/
public function afficherModalAction(Article $article, EntityManagerInterface $em)
{
$repoArticleCommande = $em->getRepository(ArticleCommande::class);
$url = $this->generateUrl('dtc_article_modifier', ["id" => $article->getId()]);
$titre_modal = "<a target='_blank' href='".$url."'>".$article->getReference()."</a>";
$form = $this->createForm(ArticleType::class, $article);
$ralClient = $repoArticleCommande->getRalClient($article);
$rendu = $this->renderView('Articles/Article/afficher.html.twig', ['article' => $article, 'form' => $form->createView(), 'ralClient' => $ralClient]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("/article/modal/afficher/ref/{id}", name="dtc_article_afficher_ref_modal")
*/
public function afficherRefModalAction(Article $article)
{
$titre_modal = $article->getLibelle();
$form = $this->createForm(ArticleType::class, $article);
$rendu = $this->renderView('Articles/Article/refAppel.html.twig', ['article' => $article, 'form' => $form->createView()]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("/article/modifier/{id}", name="dtc_article_modifier", requirements={"id"="\d+"})
*/
public function modifierAction(Request $request, Article $article, EntityManagerInterface $em, ImageArticleService $imageArticleService,
ArticleCategorieService $articleCategorieService, ValidatorInterface $validator, DocumentArticle $documentArticle, ArticleService $articleService,
Datatable $datatable, TranslatorInterface $translator, FileUploader $fileUploader
) {
//set_time_limit(15);
$user = $this->getUser();
$repoCompteMarketPlace = $em->getRepository(CompteMarketPlace::class);
$repoMarketPlace = $em->getRepository(MarketPlace::class);
$compteMarketPlace = $repoCompteMarketPlace->findBy(["statut" => 1]);
$marketPlace = $repoMarketPlace->findAll();
$repoDossier = $em->getRepository(Fichier::class);
$parent = $repoDossier->find(3);
$fichier = $repoDossier->findOneBy(["article" => $article, "type" => "dossier", "parent" => $parent]);
if ( ! is_object($fichier)) {
$fichier = new Fichier();
$fichier->setUtilisateur($user);
$fichier->setType("dossier");
$fichier->setRenomme(true);
$fichier->setSupprimable(false);
$fichier->setModifiable(false);
$fichier->setArticle($article);
$fichier->setParent($parent);
$libelle_ged = trim($article->getReference());
$fichier->setLIbelle($libelle_ged);
$em->persist($fichier);
$enfant2 = new Fichier();
$enfant2->setUtilisateur($user);
$enfant2->setType("dossier");
$enfant2->setRenomme(true);
$enfant2->setSupprimable(false);
$enfant2->setModifiable(false);
$enfant2->setArticle($article);
$enfant2->setParent($fichier);
$enfant2->setLibelle("Documents");
$em->persist($enfant2);
$enfant3 = new Fichier();
$enfant3->setUtilisateur($user);
$enfant3->setType("dossier");
$enfant3->setRenomme(true);
$enfant3->setSupprimable(false);
$enfant3->setModifiable(false);
$enfant3->setArticle($article);
$enfant3->setParent($fichier);
$enfant3->setLibelle("Divers");
$em->persist($enfant3);
$em->flush();
}
$repoDossier = $em->getRepository(Fichier::class);
$parent = $repoDossier->find(3);
$fichier_plan = $repoDossier->findOneBy(["article" => $article, "type" => "dossier", "parent" => $fichier, "libelle" => "Plans"]);
if ( ! is_object($fichier_plan)) {
$enfant4 = new Fichier();
$enfant4->setUtilisateur($user);
$enfant4->setType("dossier");
$enfant4->setRenomme(true);
$enfant4->setSupprimable(false);
$enfant4->setModifiable(false);
$enfant4->setArticle($article);
$enfant4->setParent($fichier);
$enfant4->setLibelle("Plans");
$em->persist($enfant4);
$em->flush();
}
$user = $this->getUser();
$article->setUtilisateur($user);
//$reserv = $serviceArticle->getRalClientArticle($article);
$repoArticleCommande = $em->getRepository(ArticleCommande::class);
$repo_fournisseur = $em->getRepository(Fournisseur::class);
$repo_condition_achat = $em->getRepository(ConditionAchat::class);
//$form_stock = $request->request->get('forms[vars][id]', '');
// \Doctrine\Common\Util\Debug::dump($form_stock);
$refsEquiActives = $em->getRepository(RefsEquivalentes::class)->actives();
$refsEquivalentesConcurrence = $article->getRefsEquivalentesConcurrence();
$refsEquivalentes = $article->getRefsEquivalentes();
$statutMajPrixInitial = $article->getMajPrix();
$prixBaseInitial = $article->getPrixBase();
$form = $this->createForm(ArticleType::class, $article);
$errors = "";
$form->handleRequest($request);
$tokenPicture = sprintf('%09d', mt_rand(0, 1999999999));
$photosExistantes = $fileUploader->getFiles(['folder' => 'tmp/attachments/article-'.$article->getId()]);
if ($form->isSubmitted()) {
$droit = $this->isGranted(EntityVoter::UPDATE, Article::class);
if ( ! $droit) {
return $this->redirectToRoute('dtc_article_modifier', ["id" => $article->getId()]);
}
if ($form->isValid()) {
$imageArticleService->sauvegarder($article, 'images');
$articleCategorieService->sauvegarder($article, $request->request->get('categories'));
foreach ($article->getArticlesComposants() as $articleComposant) {
if (is_object($articleComposant)) {
$article->setProduitInterne(true);
};
}
$documentArticle->sauvegarder($article, 'documents');
$ref11 = $article->getReference();
$delimiteur = ["-", " ", "_", "."];
$test = str_replace($delimiteur, "", $ref11);
$article->setReferenceAppel11($test);
if ($article->getStatut()) {
$article->setSurPrestashop(1);
}
$article->setDateMaj(new \Datetime());
//Si on décoche DIVERS et que le parent n'est pas null, supprimer le parent de l'article
if ( ! $article->getDivers() && $article->getParent() != null) {
$article->setParent(null);
if ($article->getCommentairePonctuel() == "PRODUIT DIVERS") {
$article->setCommentairePonctuel("");
}
if ($article->getLibelleSecondaire() == "PRODUIT DIVERS") {
$article->setLibelleSecondaire("");
}
}
$em->persist($article);
$em->flush();
$articleService->majQteConseillee($article);
if ($article->getFournisseurDefaut() == null) {
$articleService->setFournisseurDefaut($article);
}
$commentaire = '';
//si le prix de base a été modifié et maj auto, mettre à jour la condition HA par défaut
if ($article->getMajPrix() === true && $prixBaseInitial != $article->getPrixBase()) {
//$commentaire .= 'Modification du prix de base de la condition d\'achat.<br>';
$articleService->majCondHaEnFonctionPrixBase($article);
}
//produit compose dont la condition achat par défaut a pour fournisseur dreamteamcar
if ($article->getProduitInterne() === true) {
$dtc = $repo_fournisseur->findOneBy(['reference' => 12000]);
if (is_object($dtc)) {
//$condHa = $repo_condition_achat->findOneBy(array('defaut'=>true, 'fournisseur'=>$dtc, 'article'=>$article));
$condHa = $repo_condition_achat->findOneBy(['fournisseur' => $dtc, 'article' => $article]);
if (is_object($condHa)) {
$prixCondHa = $articleService->getPrixCondHaCompose($article);
$condHa->setPrixAchatBrut($prixCondHa);
$condHa->setPrixAchatNet($prixCondHa);
$em->persist($condHa);
$em->flush();
}
}
}
//Si on passe la maj à auto, mettre à jour l'article en fonction de la cond HA
if ($article->getMajPrix() === true && $article->getMajPrix() != $statutMajPrixInitial) {
//$commentaire .= 'Mise à jour de l\'article en fonction de la condition d\'achat.<br>';
$articleService->majEnFonctionDuPrixAchat($article);
}
/*
$article->setCommentairePonctuel($commentaire);
$em->persist($article);
$em->flush();
*
*/
//if($this->getParameter('domaine_prestashop') != '') @fopen('http://'.$this->getParameter('domaine_prestashop').'/67PHEAuaps4P4h3/articles.php?id_article='.$article->getId(), 'r');
$message_maj = [];
//$articleMarketPlaceService = $this->get('dtc.articlemarketplace');
//$message_maj = $articleMarketPlaceService->majStockAnnonce($article->getId());
if (is_array($message_maj)) {
if (array_key_exists('notice', $message_maj) && $message_maj["notice"] != "") {
$this->addFlash('notice', $message_maj["notice"]);
}
if (array_key_exists('warning', $message_maj) && $message_maj["warning"] != "") {
$this->addFlash('warning', $message_maj["warning"]);
}
}
//print_r($message_maj);
$id_prestashop = $article->getIdPrestahop();
$id_combination_prestashop = $article->getIdCombinationPrestahop();
if((!is_null($id_combination_prestashop) or !is_null($id_prestashop) or $article->getStatut()) ) {
$conn = $em->getConnection();
$this->addFlash('notice','Création / Mise à jour de l\'article sur le prestashop..');
$dateAPublier = new \Datetime();
$tableau_donnee_a_publier=array("a_publier"=>1,'date_a_publier'=>$dateAPublier->format("Y-m-d H:i:s"));
$conn->update('article__article', $tableau_donnee_a_publier, array('id' => $article->getId()));
}
$this->addFlash('notice', $translator->trans('Produit modifié avec succès !'));
$message_historique = [];
$message_historique["titre"] = "Modification de l'article";
$message_historique["message"] = "";
$articleService->creerHistorique($article, 'defaut', $message_historique);
return $this->redirectToRoute('dtc_article_modifier', ["id" => $article->getId()]);
} else {
$errors = $validator->validate($article);
//\Doctrine\Common\Util\Debug::dump($errors);
}
}
$ralClient = $repoArticleCommande->getRalClient($article);
$this->datatableApplications($article, $datatable, $translator);
// $this->datatableVentes($article);
$total_devise = $repoArticleCommande->getDevisArticle($article);
return $this->render(
'Articles/Article/ajouter.html.twig',
[
'compteMarketPlace' => $compteMarketPlace,
'tabMarketPlace' => $marketPlace,
'total_devise' => $total_devise,
'form' => $form->createView(),
'errors' => $errors,
'article' => $article,
'photos' => $photosExistantes,
'tokenPicture' => $tokenPicture,
'refsEquiActives' => $refsEquiActives,
'refsEquivalentes' => $refsEquivalentes,
'ralClient' => $ralClient,
'refsEquivalentesConcurrence' => $refsEquivalentesConcurrence,
]
);
}
/**
* @Route("/article/nouveau", name="dtc_article_ajouter")
*/
public function ajouterAction(Request $request, EntityManagerInterface $em, ValidatorInterface $validator, ArticleMarketPlaceService $articleMarketPlaceService,
ImageArticleService $imageArticleService, DocumentArticle $documentArticle
) {
$article = new Article;
$user = $this->getUser();
$article->setUtilisateur($user);
//$marque_kallles = $em->getRepository('DTCArticlesBundle:Marque')->find(1);
//$article->setMarque($marque_kallles);
$tokenPicture = sprintf('%09d', mt_rand(0, 1999999999));
$photosArray = [];
$form = $this->createForm(ArticleType::class, $article);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
$tokenP = $request->request->get('tokenPicture');
$tokenD = $request->request->get('tokenDocument');
//echo $tokenP;
if ($form->isValid()) {
$statutArticleMarketPlace = $em->getRepository(StatutArticle::class)->find(1);
$post = $request->request->all();
$repo_categorie = $em->getRepository(Categorie::class);
$repo_article_categorie = $em->getRepository(ArticleCategorie::class);
//Remplissage auto des champs web
if ($article->getNomWeb() == '') {
$article->setNomWeb($article->getLibelle().' '.$article->getLibelleSecondaire());
}
if ($article->getReferenceWeb() == '') {
$article->setReferenceWeb($article->getReference());
}
if ($article->getReferenceFournisseurWeb() == '') {
$article->setReferenceFournisseurWeb($article->getReferenceFournisseur());
}
if ($article->getDescriptionWeb() == '') {
$article->setDescriptionWeb($article->getDescription());
}
if ($article->getResumeWeb() == '') {
$article->setResumeWeb($article->getDescriptionCourte());
}
if ($article->getColis() == '') {
$article->setColis(1);
}
$ref11 = $article->getReference();
$delimiteur = ["-", " ", "_"];
$test = str_replace($delimiteur, "", $ref11);
$article->setReferenceAppel11($test);
$article->setDateMaj(new \Datetime());
if ($article->getStatut()) {
$article->setSurPrestashop(1);
}
$em->persist($article);
$em->flush();
$imageArticleService->sauvegarder($article, 'images', $tokenP);
$documentArticle->sauvegarder($article, 'documents', $tokenD);
if (array_key_exists('categories', $post) && count($post["categories"] > 0)) {
foreach ($post["categories"] as $ca) {
$ca_obj = $repo_categorie->find($ca);
if (is_object($ca_obj)) {
$articleCategorie = new ArticleCategorie();
$articleCategorie->setCategorie($ca_obj);
$articleCategorie->setArticle($article);
$em->persist($articleCategorie);
}
}
}
$em->flush();
$em->refresh($article);
if (count($article->getImages()) > 0) {
foreach ($article->getImages() as $imgArt) {
$imgArt->setAffichageWeb(true);
$em->persist($imgArt);
break;
}
}
$notice = "Produit ajouté avec succès !";
$warning = "";
$stock_valide = true;
if ($article->getStock() <= 0) {
$stock_valide = false;
}
$image_valide = true;
if (count($article->getImages()) <= 0) {
$image_valide = false;
}
$repo_article_market_place = $em->getRepository(ArticleMarketPlace::class);
$repo_compte_market_place = $em->getRepository(CompteMarketPlace::class);
$compteMarketPlaces = $repo_compte_market_place->findBy(["statut" => "1"]);
$warning = "";
foreach ($compteMarketPlaces as $compteMarketPlace) {
$articleMarketPlace = $repo_article_market_place->findOneBy(["article" => $article, "compteMarketPlace" => $compteMarketPlace]);
if ( ! is_object($articleMarketPlace)) {
$categorie_valide = false;
$prix_valide = false;
$articleMarketPlace = new ArticleMarketPlace();
$articleMarketPlace->setArticle($article);
//$skuGen = "AMA".$compteMarketPlace->getId().str_replace(" ","",$article->getUnspsc());
$skuGen = $article->getReference();
$articleMarketPlace->setVisible(true);
$articleMarketPlace->setSku($skuGen);
$articleMarketPlace->setEan($article->getUnspsc());
$articleMarketPlace->setEan($article->getUnspsc());
if (is_object($article->getRegletaxe())) {
$articleMarketPlace->setRegleTaxe($article->getRegletaxe());
}
$articleMarketPlace->setLibelle($article->getLibelle());
$articleMarketPlace->setTitreDescription($article->getLibelle());
$articleMarketPlace->setDescription($article->getDescription());
$articleMarketPlace->setResume($article->getDescriptionCourte());
$articleMarketPlace->setRenouvellementAuto(true);
$prixVente = $article->getPrixVente() * (1 + $article->getRegleTaxe()->getTauxDefaut() / 100);
$articleMarketPlace->setPrixVente($prixVente);
if ($article->getPrixVente() > 0) {
$prix_valide = true;
}
//$articleMarketPlace->setStatut(false);
$articleMarketPlace->setCompteMarketPlace($compteMarketPlace);
$articleMarketPlace->setStock($article->getStock());
//echo "(".$compteMarketPlace->getMarketPlace()->getId().")|";
$em->persist($articleMarketPlace);
$em->flush();
$em->refresh($articleMarketPlace);
$categorieMarket = $repo_article_categorie->findBy(["article" => $article, "marketPlace" => $compteMarketPlace->getMarketPlace()]);
//echo "TOTO".count($categorieMarket);
if (count($categorieMarket) > 0) {
foreach ($categorieMarket as $cm) {
$articleCategorie = new ArticleCategorie;
$articleCategorie->setArticleMarketPlace($articleMarketPlace);
$articleCategorie->setCategorie($cm->getCategorie());
$em->persist($articleCategorie);
$categorie_valide = true;
}
$em->flush();
} else {
if (is_object($articleMarketPlace->getCompteMarketPlace()) && is_object($articleMarketPlace->getCompteMarketPlace()->getMarketPlace())) {
$catErp = $repo_article_categorie->getCategorieErpArticle($article);
$continuer_recherche_cat = true;
if (count($catErp) > 0) {
foreach ($catErp as $ce) {
if ($continuer_recherche_cat) {
if (is_object($ce->getCategorie())) {
//echo "<div>CAT ".$ce->getCategorie()."</div>";
$repo_CategorieErpCategorieMarketPlace = $em->getRepository(CategorieErpCategorieMarketPlace::class);
$cateCorrespondance = $repo_CategorieErpCategorieMarketPlace->findOneBy(
["categorieErp" => $ce->getCategorie(), "compteMarketPlace" => $articleMarketPlace->getCompteMarketPlace()]
);
if (is_object($cateCorrespondance) && is_object($cateCorrespondance->getCategorieMarketPlace())) {
$articleCategorie = new ArticleCategorie;
$articleCategorie->setArticleMarketPlace($articleMarketPlace);
$articleCategorie->setCategorie($cateCorrespondance->getCategorieMarketPlace());
$em->persist($articleCategorie);
$continuer_recherche_cat = false;
$categorie_valide = true;
}
}
}
}
$em->flush();
}
}
}
}
$em->refresh($article);
if (count($article->getImages()) > 0) {
//echo "AAAAA";
foreach ($article->getImages() as $img) {
// echo "BBBB ".$img->getId()." ".$articleMarketPlace->getId();
$articleMarketPlaceImage = new ArticleMarketPlaceImage();
$articleMarketPlaceImage->setImage($img);
//$articleMarketPlaceImage->setOrdre();
$articleMarketPlaceImage->setArticleMarketPlace($articleMarketPlace);
$articleMarketPlaceImage->setDate($article->getDate());
$em->persist($articleMarketPlaceImage);
}
} else {
//echo "erreur ";
//exit;
}
//$categorie_valide;
//$prix_valide;
//$stock_valide;
//$image_valide;
$message_historique = [];
$message_historique["message"] = "";
$message_historique["en_cours_publication"] = false;
if ( ! $image_valide or ! $prix_valide or ! $categorie_valide) {
$erreur_detail = "";
//if(!$stock_valide) $erreur_detail .= " (Stock insuffisant)";
if ( ! $image_valide) {
$erreur_detail .= " (Image obligatoire)";
}
if ( ! $prix_valide) {
$erreur_detail .= " (Prix obligatoire)";
}
if ( ! $categorie_valide) {
$erreur_detail .= " (Catégorie obligatoire)";
}
//$erreur_chaine = "Lancement de la publication de l'offre : ".$articleMarketPlace->getSku()." sur le marketplace ".$articleMarketPlace->getCompteMarketPlace()->getLibelle()." impossible : ".$erreur_detail."<br/>";
//$warning .= $erreur_chaine;
} else {
//$articleMarketPlace->setDateDemandePublicationMarketPlace(new \Datetime());
//$articleMarketPlace->setStatutArticleMarketPlace($statutArticleMarketPlace);
//$notice .= "<br/>Lancement de la publication de l'offre : ".$articleMarketPlace->getSku()." sur le marketplace ".$articleMarketPlace->getCompteMarketPlace()->getLibelle()." réalisé avec succès";
}
$em->flush();
$em->refresh($articleMarketPlace);
$message_maj = null;
//$message_maj = $articleMarketPlaceService->majStockAnnonce($article->getId(),$articleMarketPlace->getId());
if (is_array($message_maj)) {
if (array_key_exists('notice', $message_maj) && $message_maj["notice"] != "") {
$this->addFlash('notice', $message_maj["notice"]);
$message_historique["en_cours_publication"] = true;
}
if (array_key_exists('warning', $message_maj) && $message_maj["warning"] != "") {
$this->addFlash('warning', $message_maj["warning"]);
}
$articleMarketPlaceService->creerHistorique($articleMarketPlace, 10, $message_historique);
} else {
$articleMarketPlaceService->creerHistorique($articleMarketPlace, 10, $message_historique);
}
}
if ($article->getStock() > 0) {
$repo_mouvement_stock = $em->getRepository(MouvementStock::class);
$repo_raison_mouvement_stock = $em->getRepository(RaisonMouvementStock::class);
$raison = $repo_raison_mouvement_stock->find(13);
$mvmt = new MouvementStock();
$mvmt->setArticle($article);
$mvmt->setQuantite($article->getStock());
$mvmt->setStock($article->getStock());
$mvmt->setUtilisateur($user);
$mvmt->setCommentaire("Création produit avec stock initial");
$mvmt->setRaisonMouvementStock($raison);
$mvmt->setAFacturer(false);
$em->persist($mvmt);
}
$this->addFlash('notice', $notice);
if ($warning != "") {
$this->addFlash('warning', $warning);
}
//return $this->redirectToRoute('dtc_article_liste');
return $this->redirectToRoute('dtc_article_modifier', ['id' => $article->getId()]);
} else {
$errors = $validator->validate($article);
//\Doctrine\Common\Util\Debug::dump($errors);
}
}
return $this->render('Articles/Article/ajouter.html.twig', [
'form' => $form->createView(),
'errors' => $errors,
'photos' => $photosArray,
'tokenPicture' => $tokenPicture,
]);
}
/**
* @Route("/article", name="dtc_article_liste")
*/
public function listerAction(Request $request, EntityManagerInterface $em, ColonneTableauService $serviceColonneTableau, Datatable $datatable,
TranslatorInterface $translator, $parent = ''
) {
//\Doctrine\Common\Util\Debug::dump($filters);
$tableau_class_cellule[] = ["searchable" => true, "className" => " colonne_id", "targets" => [0], "visible" => false, "orderable" => false];
$tableau_class_cellule[] = [
"searchable" => true,
"className" => "visible_export colonne_id",
"targets" => [1],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Article::class, "id"),
];
/*
$tableau_class_cellule[] = [
"searchable" => true,
"className" => "visible_export colonne_image",
"targets" => [2],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Article::class, "image"),
];
*/
$tableau_class_cellule[] = [
"searchable" => true,
"className" => "visible_export colonne_reference",
"targets" => [2],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Article::class, "reference"),
];
$tableau_class_cellule[] = [
"searchable" => false,
"className" => "visible_export colonne_libelle",
"targets" => [3],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Article::class, "libelle"),
];
/*
$tableau_class_cellule[] = [
"searchable" => false,
"className" => "visible_export colonne_libelle",
"targets" => [5],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Article::class, "marque"),
];
$tableau_class_cellule[] = [
"searchable" => false,
"className" => "visible_export colonne_descriptionCourte",
"targets" => [6],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Article::class, "descriptionCourte"),
];
$tableau_class_cellule[] = [
"searchable" => false,
"className" => "visible_export colonne_prixBase text-center",
"targets" => [7],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Article::class, "prixHT"),
];
$tableau_class_cellule[] = [
"searchable" => false,
"className" => "visible_export colonne_prixBase text-center",
"targets" => [8],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Article::class, "prixHT"),
];
$tableau_class_cellule[] = [
"searchable" => false,
"className" => "visible_export colonne_prixBase text-center",
"targets" => [9],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Article::class, "prixTTC"),
];
$tableau_class_cellule[] = [
"searchable" => false,
"className" => "visible_export colonne_prixBase text-center",
"targets" => [10],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Article::class, "marge"),
];
$tableau_class_cellule[] = [
"searchable" => false,
"className" => "visible_export colonne_prixBase text-right",
"targets" => [11],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Article::class, "pump"),
];
$tableau_class_cellule[] = [
"searchable" => true,
"className" => "visible_export colonne_prixBase text-center",
"targets" => [12],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Article::class, "stock"),
];
$tableau_class_cellule[] = ["searchable" => false, "className" => "visible_export colonne_prixBase", "targets" => [13], "visible" => true];
//$tableau_class_cellule[]=array("searchable"=> false,"className"=>"visible_export colonne_prixBase","targets"=>array(13),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Article::class,"type"));
*/
$tableau_class_cellule[] = ["searchable" => false, "orderable" => false, "className" => "colonne_id", "targets" => [4], "visible" => true];
$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(count($param) == 0) $param['mouvemente'] = '0';
if (array_key_exists('categorie_article', $param) and $param["categorie_article"] > 0) {
$parentTmp = $repo_categorie_article->find($param["categorie_article"]);
if (is_object($parentTmp)) {
$categorie_enfants = $repo_categorie_article->findBy(["categorieParent" => $parentTmp]);
}
}
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]);
}
}
//\Doctrine\Common\Util\Debug::dump($param);
// $param["mouvemente"]=1;
$this->datatable($datatable, $request, $em, $translator);
//$parent = $request->query->get('parent');
if ($parent == '' or array_key_exists('marque', $param)) {
return $this->render('Articles/Article/lister.html.twig', [
'name' => 'article',
'tableauClassColonne' => $tableau_class_cellule,
'parametres' => $param,
"categorie_article" => $categorie_article_racine,
"sous_categorie_article" => $categorie_enfants,
"sous_sous_categorie_article" => $categorie_enfants_enfants,
"marque" => $marque_article,
"type" => $type_article,
"parent" => $parent,
//'mouvemente' => $mouvemente
]);
} else {
return $this->render('Articles/Article/lister-datatable.html.twig', [
'name' => 'article',
'tableauClassColonne' => $tableau_class_cellule,
'parametres' => $param,
"categorie_article" => $categorie_article_racine,
"sous_categorie_article" => $categorie_enfants,
"sous_sous_categorie_article" => $categorie_enfants_enfants,
"marque" => $marque_article,
"type" => $type_article,
"parent" => $parent,
//'mouvemente' => $mouvemente
]);
}
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatable(Datatable $datatable, Request $request, EntityManagerInterface $em, TranslatorInterface $translator)
{
$param = $request->query->all();
$parametres = [];
$parent = $request->query->get('parent');
if ($parent == '') {
$where = " AND x.parent is null";
} else {
$where = " AND x.parent = :parent";
$parametres['parent'] = $parent;
}
if ( ! array_key_exists('parametres', $param)) {
$param["parametres"] = $param;
}
//$reference = $request->query->get('reference');
$conn = $em->getConnection();
$conn->getConfiguration()->setSQLLogger(null);
$qb = $em->createQueryBuilder();
$qb->select(
"
x.id as x_id,
x.libelle as x_libelle,
x.reference as x_reference"/*.","
."x.descriptionCourte as x_descriptionCourte,
x.prixVente as x_prixVente,
x.prixBase as x_prixBase,
x.tauxMarge as x_tauxMarge,"
//."x.cpump as x_cpump,"
."x.pump as x_pump,"
."x.stock as x_stock,
x.statut as x_statut,
m.libelle as m_libelle,
m.id as m_id,
t.libelle as t_libelle,
t.id as t_id,
r.id as r_id,
r.tauxDefaut as r_tauxDefaut,
x.referenceAppel10 as x_referenceAppel10
"
*/
)
->orderBy('x.libelle', 'ASC')
->from(Article::class, "x")
->leftJoin('x.marque', 'm')
->leftJoin('x.type', 't')
->leftJoin('x.regleTaxe', 'r', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
if (array_key_exists('reference', $param['parametres']) and $param['parametres']['reference'] != "") {
$where = " AND (x.reference is null or x.reference='')";
}
else if (array_key_exists('oqton', $param['parametres']) and $param['parametres']['oqton'] != "") {
$where = " AND (x.oqtonUrn is null or x.oqtonUrn = '' or x.oqtonMaterialUrn is null or x.oqtonMaterialUrn = '') AND x.type = 1";
}
if (array_key_exists('categorie_article', $param['parametres']) and $param['parametres']['categorie_article'] != "") {
$qb->join('x.articleCategorie', 'ac', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$qb->join('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'] != "") {
$qb->join('x.articleCategorie', 'ac2', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$qb->join('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'] != "") {
$qb->join('x.articleCategorie', 'ac3', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$qb->join('ac3.categorie', 'cat3', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$where .= " AND cat3.id = :categorie3";
$parametres['categorie3'] = $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 x.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 x.type = :type";
$parametres['type'] = $param['parametres']['type'];
}
if (array_key_exists('mouvemente', $param['parametres']) and $param['parametres']['mouvemente'] != "") {
//$qb->join('x.marque', 'm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$where .= " AND x.mouvemente = :mouvemente";
$parametres['mouvemente'] = $param['parametres']['mouvemente'];
}
if (array_key_exists('archive', $param['parametres']) and $param['parametres']['archive'] == "1") {
//$qb->leftJoin('x.articleMarketPlace', 'amp', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$where .= " AND (x.archive = 1 )";
} else {
if (array_key_exists('arret', $param['parametres']) and $param['parametres']['arret'] == "1") {
} else {
$where .= " AND (x.archive = 0 or x.archive is null )";
}
}
if (count($param['parametres']) == 0) {
$where .= "AND (x.mouvemente = :mouvemente)";
$parametres['mouvemente'] = 0;
}
//$qb->where('x.temporaire is null and (x.archive = 0 or x.archive is null)'.$where);
$qb->where('x.temporaire is null '.$where);
//echo $where;
if (count($parametres) > 0) {
$qb->setParameters($parametres);
}
//$qb->orderBy("x.id", "desc");
//$qb->OrderBy('x.id', 'DESC');
$datatable = $datatable
->setFields(
[
$translator->trans("ID") => 'x.id',
//$translator->trans("Img") => 'x.reference',
$translator->trans("Réf") => 'x.reference',
$translator->trans("Libellé") => 'x.libelle',
/*
$translator->trans("Marque") => 'm.libelle',
$translator->trans("Desc courte") => 'x.descriptionCourte',
$translator->trans("Prix base") => 'x.prixBase',
$translator->trans("Prix HT") => 'x.prixVente',
$translator->trans("Prix TTC") => 'x.prixVente',
$translator->trans("Marge") => 'x.tauxMarge',
$translator->trans("PUMP") => 'x.pump',
$translator->trans("Stock") => 'x.stock',
$translator->trans("Ref appel") => 'x.referenceAppel10',
//$translator->trans("Type") => 't.libelle',
*/
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id'
/*
$translator->trans("AA") => 'x.id',
$translator->trans("BB") => 'x.libelle',
"cc" => 'x.libelle',
"dd" => 'x.libelle',
"ee" => 'x.libelle',
"ff" => 'x.libelle',
"gg" => 'x.libelle',
"hh" => 'x.libelle',
"ii" => 'x.libelle',
"jj" => 'x.libelle',
"kk" => 'x.libelle',
"ll" => 'x.libelle',
"_identifier_" => 'x.id'
*/
]
)
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/article_id.html.twig',
'params' => [
'edit_route' => 'dtc_article_modifier',
],
],
/*
1 => [
'view' => 'FO/DataTable/article_image.html.twig',
'params' => [
'edit_route' => 'dtc_article_modifier',
],
],
*/
1 => [
'view' => 'FO/DataTable/article_id.html.twig',
'params' => [
'edit_route' => 'dtc_article_modifier',
],
],
2 => [
'view' => 'FO/DataTable/article_id.html.twig',
'params' => [
'edit_route' => 'dtc_article_modifier',
'typeDocument' => 'article',
],
],
/*
4 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_marque_modifier',
'typeDocument' => 'marque_article',
],
],
6 => [
'view' => 'FO/DataTable/prix.html.twig',
'params' => [
'surveillance' => false,
'afficher_total' => false,
],
],
7 => [
'view' => 'FO/DataTable/article_prixSuivi.html.twig',
'params' => [
'surveillance' => false,
],
],
8 => [
'view' => 'FO/DataTable/article_prix_article_ttc.html.twig',
],
/*
8 => array(
'view' => 'FO/DataTable/pourcentage.html.twig',
),
*
*/
/*
9 => [
'view' => 'FO/DataTable/taux-marge-article.html.twig',
],
10 => [
'view' => 'FO/DataTable/prix.html.twig',
],
*/
3 => [
'view' => 'FO/DataTable/article_actions.html.twig',
'params' => [
'edit_route' => 'dtc_article_modifier',
//'dupliquer_route' => 'dtc_article_dupliquer_formulaire',
'objet' => Article::class,
],
],
]
)
->setSearch(true)
->setGlobalSearch(1)
//->setFilteringType([2 => 'e', 3 => 'e'])
->setSearchFields([1,2])
->setMultiple(
[
'delete' => [
'title' => 'Non disponible',
'route' => 'dtc_client_liste_supprimer',
],
]
)
->setOrder("x.id", "desc");
$datatable->getQueryBuilder()->setDoctrineQueryBuilder($qb);
return $datatable;
}
/**
* @Route("/articles/grid", name="dtc_article_liste_grid")
*/
public function gridAction(Request $request, Datatable $datatable, EntityManagerInterface $entityManager, TranslatorInterface $translator)
{
return $this->datatable($datatable, $request, $entityManager, $translator)->execute();
}
/**
* @Route("/article/statut/{id}", name="dtc_article_changer_statut")
*/
public function changeStatutAction(Article $article, EntityManagerInterface $em)
{
if ($article->getStatut() == 1) {
$article->setStatut(0);
} else {
$article->setStatut(1);
}
$em->persist($article);
$em->flush();
$headers = [
'Content-Type' => 'application/json',
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'POST',
];
return new JsonResponse(['data' => '1'], 200, $headers);
}
/**
* @Route("/article/recherche", name="dtc_article_recherche")
*/
public function rechercheAction(Request $request, EntityManagerInterface $em, PaginatorInterface $paginator, ArticleService $articleService)
{
//exit;
$user = $this->getUser();
$q = $request->query->get('q');
$produitInterne = $request->query->get('interne');
$articleAExclure = $request->query->get('article');
$articlesAExclure = [];
if ($articleAExclure !== null && $articleAExclure != '') {
$article = $em->getRepository(Article::class)->find($articleAExclure);
$articlesAExclure[] = $articleAExclure;
if (is_object($article)) {
foreach ($article->getArticlesComposants() as $articleComposant) {
$articlesAExclure[] = $articleComposant->getArticle()->getId();
}
}
}
$page = $request->query->getInt('page', 1);
$repo = $em->getRepository(Article::class);
$tri_reference = $request->query->get('tri_reference');
$tri_libelle = $request->query->get('tri_libelle');
$tri_prix = $request->query->get('tri_prix');
$tri_stock = $request->query->get('tri_stock');
if ($tri_reference == "" and $tri_libelle == "" and $tri_prix == "" and $tri_stock == "" and $user->getTriRechercheArticle() != "") {
//if($user->getTriRechercheArticle() == "tri_reference") $tri_reference = $user->getOrdreTriRechercheArticle();
//else if($user->getTriRechercheArticle() == "tri_libelle") $tri_libelle = $user->getOrdreTriRechercheArticle();
//else if($user->getTriRechercheArticle() == "tri_prix") $tri_prix = $user->getOrdreTriRechercheArticle();
//else if($user->getTriRechercheArticle() == "tri_stock") $tri_stock = $user->getOrdreTriRechercheArticle();
}
if ($request->query->get('fournisseur') != '') {
$results = $repo->getRechercheArticleSelect2(
$q,
$produitInterne,
$request->query->get('fournisseur'),
$articlesAExclure,
$request->query->get('stock'),
$request->query->get('reference_search'),
$request->query->get('libelle_search'),
$request->query->get('prix_search'),
$tri_reference,
$tri_libelle,
$tri_prix,
$tri_stock,
$request->query->get('categorie'),
$request->query->get('mouvemente'),
$request->query->get('inventaire')
);
} elseif ($request->query->get('ff') == 'true') {//FactureFournisseur
$results = $repo->getRechercheArticleSelect3(
$q,
$produitInterne,
$request->query->get('fournisseur'),
$articlesAExclure,
$request->query->get('stock'),
$request->query->get('reference_search'),
$request->query->get('libelle_search'),
$request->query->get('prix_search'),
$tri_reference,
$tri_libelle,
$tri_prix,
$tri_stock,
$request->query->get('categorie'),
$request->query->get('mouvemente'),
$request->query->get('inventaire')
);
} else {
$results = $repo->getRechercheArticleSelect(
$q,
$produitInterne,
$request->query->get('fournisseur'),
$articlesAExclure,
$request->query->get('stock'),
$request->query->get('reference_search'),
$request->query->get('libelle_search'),
$request->query->get('prix_search'),
$tri_reference,
$tri_libelle,
$tri_prix,
$tri_stock,
$request->query->get('categorie'),
$request->query->get('mouvemente'),
$request->query->get('inventaire'),
$request->query->get('declinaisons')
);
}
$triRechercheArticle = "";
$ordreTriRechercheArticle = "";
$majTri = false;
if ($request->query->get('mouvemente') != "") {
if ($request->query->get('mouvemente') == "1" && ( ! $user->getMouvementeRechercheArticle() or is_null($user->getMouvementeRechercheArticle()))) {
$user->setMouvementeRechercheArticle(true);
$em->persist($user);
$em->flush();
} elseif ($request->query->get('mouvemente') == "0" && ($user->getMouvementeRechercheArticle() or is_null($user->getMouvementeRechercheArticle()))) {
$user->setMouvementeRechercheArticle(false);
$em->persist($user);
$em->flush();
}
}
if ($request->query->get('tri_reference') != "") {
$triRechercheArticle = "tri_reference";
$ordreTriRechercheArticle = $request->query->get('tri_reference');
$majTri = true;
} elseif ($request->query->get('tri_libelle') != "") {
$triRechercheArticle = "tri_libelle";
$ordreTriRechercheArticle = $request->query->get('tri_libelle');
$majTri = true;
} elseif ($request->query->get('tri_prix') != "") {
$triRechercheArticle = "tri_prix";
$ordreTriRechercheArticle = $request->query->get('tri_prix');
$majTri = true;
} elseif ($request->query->get('tri_stock') != "") {
$triRechercheArticle = "tri_stock";
$ordreTriRechercheArticle = $request->query->get('tri_stock');
$majTri = true;
}
//echo $user->getEmail();
if ($majTri) {
$user->setTriRechercheArticle($triRechercheArticle);
$user->setOrdreTriRechercheArticle($ordreTriRechercheArticle);
$em->persist($user);
$em->flush();
}
$pagination = $paginator->paginate(
$results, /* query NOT result */
$request->query->getInt('page', $page)/*page number*/,
20/*limit per page*/
);
$pagination_results = $pagination->getItems();
$tabPremiereLigne = [
"reference_appel_1" => "",
"reference_appel_2" => "",
"reference_appel_3" => "",
"reference_appel_4" => "",
"reference_appel_5" => "",
"reference_appel_6" => "",
"reference_appel_7" => "",
"reference_appel_8" => "",
"reference_appel_9" => "",
"reference_appel_10" => "",
"reference_appel_11" => "",
"arret_gamme" => "",
"virtuel" => "",
"libelle" => "Sélectionnez",
"libelle_construit" => "Sélectionnez",
"id" => "",
"reference_fournisseur" => "",
"prixVente" => "",
"prixAchat" => "",
"poids" => "",
"stock" => 0,
"stock_reserve" => 0,
"cpump" => "",
"reference" => "",
"dispo" => "",
];
//$option_placeholde = array("libelle"=>"Sélectionnez","id"=>"","stock"=>"","stock_reserve"=>"");
$option_placeholde = $tabPremiereLigne;
if ($request->query->getInt('page', 1) == 1) {
array_unshift($pagination_results, $option_placeholde);
}
$pagination->setItems($pagination_results);
/*if($q == "" && $page < 2) {
$option_placeholde = array("libelle"=>"Recherche à partir du libellé ou de la référence article","id"=>"","reference"=>"Réf","prixVente"=>"Prix","stock"=>"Stock");
array_unshift($pagination_results, $option_placeholde);
$pagination->setItems($pagination_results);
}
*/
$option_placeholde = [
"libelle" => "Sélectionnez",
"id" => "",
"reference" => "",
"prixVente" => "",
"stock" => 0,
"prixAchat" => "",
"dispo" => "d",
"nbArticleInventaire" => "",
];
if ($request->query->getInt('page', 1) == 1) {
array_unshift($pagination_results, $option_placeholde);
}
//print_r($pagination_results);
$tabFinal = [];
//foreach($pagination as $p) {
for ($i = 1; $i < count($pagination_results); $i++) {
//print_r($pagination_results[$i]);
$tabTemp = [];
$continuer = true;
if ($request->query->get('declinaisons') == true) {
$enfants = $repo->findBy(["articleDeclinaisonParent" => $pagination_results[$i]["id"]]);
if (count($enfants) > 0) {
//echo "TEST ".$pagination_results[$i]["id"];
$continuer = false;
}
}
if ($continuer) {
$tabTemp = $pagination_results[$i];
if ( ! array_key_exists('virtuel', $tabTemp) or $tabTemp["virtuel"] == "") {
$tabTemp["virtuel"] = 0;
}
$tabTemp["dispo"] = 0;
/*
{% if a.article.virtuel == 0 %}
{% set dispo = a.article.stock - a.article.stockReserve %}
{% else %}
{% set dispo = dtc_article.getStock(a.article) %}
{% endif %}
{% if a.commande.typeDocumentCommercial.id is defined and a.commande.typeDocumentCommercial.id in [2,3,4,11] %}
{% set dispo = dispo + a.quantite %}
{% endif %}
*/
if ($tabTemp["virtuel"] === 0) {
$tabTemp["dispo"] = $tabTemp["stock"] - $tabTemp["stock_reserve"];
} else {
//echo "HHHH";
//{% set dispo = dtc_article.getStock(a.article) %}
$objArticle = $em->getRepository(Article::class)->find($tabTemp["id"]);
$tabTemp["dispo"] = $articleService->getStock($objArticle);
}
$tabTemp["dispo"] = max(0, $tabTemp["dispo"]);
$tabFinal[] = $tabTemp;
}
}
//print_r($tabFinal);
//print_r($tabFinal);
//$pagination->setItems($pagination_results);
$pagination->setItems($tabFinal);
//print_r($pagination);
//$em->getConnection()->close();
$serializer = SerializerBuilder::create()->build();
return JsonResponse::fromJsonString($serializer->serialize($pagination, 'json'));
}
/**
* @Route("/article/search", name="dtc_article_search")
*/
public function searchAction(Request $request, EntityManagerInterface $em)
{
$query = $request->query->get('q');
$results = $em->getRepository(Article::class)->findByRefOrName($query);
$datas = [];
foreach ($results as $result) {
$article = $em->getRepository(Article::class)->find($result['id']);
if (is_object($article)) {
$result['cpump'] = $article->getCpump();
}
$datas[] = $result;
}
$response = new JsonResponse();
$response->setData([
'items' => $datas,
]);
return $response;
}
/**
* @Route("/article/toolbar/commande", name="dtc_article_ajax_toolbar_commande")
*/
public function ajaxToolbarCommandeAction(Request $request, EntityManagerInterface $em, ArticleService $articleService)
{
$query = $request->query->get('article');
$repoArticle = $em->getRepository(Article::class);
$repoArticleCommande = $em->getRepository(ArticleCommande::class);
$article = $repoArticle->find($query);
$retour = [];
if (is_object($article)) {
$retour['ref'] = $article->getReference();
$retour['equivalentes'] = [];
foreach ($article->getRefsEquivalentes() as $refEquivalente) {
$ref = [];
$ref['id'] = $refEquivalente->getId();
$ref['codeArticle'] = $refEquivalente->getReference();
$ref['libelle'] = $refEquivalente->getLibelle();
$ref['besoin'] = '';
$ref['remise'] = '0';
$ref['remiseSuplementaire'] = '0';
$ref['prixVente'] = $refEquivalente->getPrixVente();
$ref['prix_NET'] = 0;
$etat = true;
foreach ($refEquivalente->getConditionsAchat() as $cond) {
if ($cond->getDefaut() == 1) {
if ($cond->getRemise() != null) {
$ref['remise'] = $cond->getRemise();
}
if ($cond->getRemiseSupplementaire() != null) {
$ref['remiseSuplementaire '] = $cond->getRemiseSupplementaire();
}
if ($cond->getPrixAchatNet() != null) {
$ref['prix_NET'] = $cond->getPrixAchatNet();
}
$etat = false;
}
}
if ($etat) {
$ref['remise'] = 0;
$ref['remiseSuplementaire '] = 0;
$ref['prix_NET'] = 0;
}
//$ref['dispo'] = $refEquivalente->getStock() - $refEquivalente->getStockReserve();
$ref['dispo'] = $refEquivalente->getDispo();
$retour['equivalentes'][] = $ref;
}
//tri des équivalences par dispo DESC
if (count($retour['equivalentes'])) {
foreach ($retour['equivalentes'] as $key => $row) {
$dispo[$key] = $row['dispo'];
}
array_multisort($dispo, SORT_DESC, $retour['equivalentes']);
}
$retour['stock'] = $article->getStock();
$retour['qteMini'] = $article->getSeuilMiniCommandeFournisseur();
//$retour['emplacement'] = $article->getNiveauUn().'-'.$article->getNiveauDeux().'-'.$article->getNiveauTrois().'-'.$article->getNiveauQuatre();
$retour['emplacement'] = "";
foreach ($article->getEmplacements() as $e) {
$libelleEmplacement = "";
if (is_object($e->getNiveauUn())) {
$libelleEmplacement .= "-".$e->getNiveauUn()->getLibelle();
}
if (is_object($e->getNiveauDeux())) {
$libelleEmplacement .= "-".$e->getNiveauDeux()->getLibelle();
}
if (is_object($e->getNiveauTrois())) {
$libelleEmplacement .= "-".$e->getNiveauTrois()->getLibelle();
}
if (is_object($e->getNiveauQuatre())) {
$libelleEmplacement .= "-".$e->getNiveauQuatre()->getLibelle();
}
$libelleEmplacement = $e->getLibelle();
//$libelleEmplacement .= "<span style='font-size:10px;'>(S".$e->getStock().") (R".$e->getStockReserve().")</span>";
$retour['emplacement'] = $retour['emplacement']."<div>".$libelleEmplacement."</div>";
}
/*
{% set rals = dtc_article.ralClientPositifNegatif(article.id) %}
{{rals.ralClient}}{% if rals.ralClientNegatif != 0 %} ({{rals.ralClientPositif}} {{rals.ralClientNegatif}}){% endif %}
*/
$rals_calcul = $articleService->ralClientPositifNegatif($article->getId());
$chaine_ral = $rals_calcul["ralClientPositif"]." | ".$rals_calcul["ralClientNegatif"];
$rals_calcul_f = $articleService->ralFournisseurPositifNegatif($article->getId());
$chaine_ral_f = $rals_calcul_f["ralFournisseurPositif"]." | ".$rals_calcul_f["ralFournisseurNegatif"];
//$retour['ralClient'] = $repoArticleCommande->getRalClient($article);
//$retour['ralClient'] = $article->getStockReserve();
$retour['ralClient'] = $chaine_ral;
$retour['prixBase'] = $article->getPrixBase();
$retour['detailRalClient'] = $repoArticleCommande->getRalClientEtCmdAssociees($article);
//$retour['ralFournisseur'] = $repoArticleCommande->getRalFournisseur($article);
$retour['ralFournisseur'] = $chaine_ral_f;
}
$response = new JsonResponse();
$response->setData([
'retour' => $retour,
]);
return $response;
}
/**
* @Route("", name="")
*/
public function historiqueVenteAction(Article $article, EntityManagerInterface $em)
{
$historique = $em->getRepository(Article::class)->gethistoriqueVente($article->getId());
$nbVentesMois = $em->getRepository(Article::class)->getNbArticlesVendus($article->getId(), 30);
$nbVentesAnnee = $em->getRepository(Article::class)->getNbArticlesVendus($article->getId(), 365);
return $this->render('Articles/Article/historique.html.twig', [
'historique' => $historique,
'nbVentesMois' => $nbVentesMois,
'nbVentesAnnee' => $nbVentesAnnee,
]);
}
/*
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableApplications($article, Datatable $datatable, TranslatorInterface $translator)
{
$datatable->setDatatableId('dta-applications')
->setEntity(Application::class, "x")
->setFields(
[
$translator->trans("Marque") => 'm.libelle',
$translator->trans("Modele") => 'mo.libelle',
$translator->trans("Type") => 't.libelle',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->setWhere(
'x.article = :article',
['article' => $article]
)
->addJoin('x.marque', 'm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.modele', 'mo', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.type', 't', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
3 => [
'view' => 'FO/DataTable/actions_modal.html.twig',
'params' => [
'supprimer_route' => 'dtc_application_supprimer',
'id' => $article->getId(),
'type' => "article",
'entite' => 'application',
'objet' => Application::class,
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([0, 1, 2]);
return $datatable;
}
/*
* Grid action
* @return Response
*/
/**
* @Route("/article/application/grid/{id}", name="dtc_article_application_liste_grid")
*/
public function gridApplicationsAction(Article $article, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatableApplications($article, $datatable, $translator)->execute();
}
/**
* @Route("", name="")
*/
public function listerPrixVentesAction(Article $article, Datatable $datatable, EntityManagerInterface $em, TranslatorInterface $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 text-center colonne_id", "targets" => [2], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export text-center colonne_id", "targets" => [3], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export text-right colonne_id", "targets" => [4], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export text-center colonne_id", "targets" => [5], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export text-right colonne_id", "targets" => [6], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [7], "visible" => true, "orderable" => true];
//$tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(8),"visible"=>true,"orderable"=>true);
$this->datatableVentesOngletStats($article, $datatable, $em, $translator);
return $this->render('Articles/Article/lister-prix-ventes.html.twig', ['article' => $article, 'tableauClassColonne' => $tableau_class_cellule]);
}
/*
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableVentes($article, Request $request, Datatable $datatable, EntityManagerInterface $em, TranslatorInterface $translator)
{
//dump($request);
$columns = $request->query->get('columns');
// dd($columns);
$where = '((ac.article = :article and statut.ordre != :ordreStatutDoc) or (x.typeDocumentCommercial IN (:typeDoc) and acbl.article = :article and statut.ordre != :ordreStatutDoc))';
if (empty($columns[9]['search']['value'])) {
$where .= ' AND x.typeDocumentCommercial = 6';
}
$qb = $em->createQueryBuilder();
/*
$qb->select("
x.id as x_id,
x.reference as x_reference
"
)
->from(Commande::class, 'x')
->leftJoin('x.articleCommande', 'ac', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->leftJoin('x.statutCommande', 'statut', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->leftJoin(Commande::class, 'bl', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN, 'with', 'bl.facture = x.id')
->leftJoin('bl.articleCommande', 'acbl', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->where('(ac.article = :article and statut.ordre != :ordreStatutDoc) or (c.typeDocumentCommercial IN (:typeDoc) and acbl.article = :article and statut.ordre != :ordreStatutDoc)')
;
*/
$qb->select(
"
x.id as x_id,
x.date as x_date,
x.reference as x_reference,
ac.totalHt as ac_totalHt,
cl.prenom as cl_prenom,
cl.nom as cl_nom,
ac.quantite as ac_quantite,
acbl.quantite as acbl_quantite,
ac.remise as ac_remise,
acbl.remise as acbl_remise,
x.referenceClient as x_referenceClient,
x.typeDocumentCommercial as type_id,
ac.prixBase as ac_prixBase,
acbl.prixBase as acbl_prixBase,
acbl.totalHt as acbl_totalHt
"
)
->from(Commande::class, 'x')
->leftJoin('x.articleCommande', 'ac', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->leftJoin('x.statutCommande', 'statut', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->leftJoin('x.client', 'cl', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->leftJoin('x.typeDocumentCommercial', 'type', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->leftJoin(Commande::class, 'bl', 'with', 'bl.facture = x.id')
->leftJoin('bl.articleCommande', 'acbl', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->where($where)
->orderBy('x.id', 'DESC');;
$parametres = ["article" => $article, "ordreStatutDoc" => 0, "typeDoc" => [6, 7]];
$qb->setParameters($parametres);
/*
select c.id,c.reference,c.statut_commande_id,c.type_document_commercial_id,c.date,ac.commande_id
from commerciale__commande as c
LEFT JOIN commerciale__article_commande as ac ON c.id = ac.commande_id
LEFT JOIN commerciale__statut_commande as statut ON statut.id = c.statut_commande_id
LEFT JOIN commerciale__commande as bl ON bl.facture_id = c.id
LEFT JOIN commerciale__article_commande as acbl ON acbl.commande_id = bl.id
where
(ac.article_id = 1509827 and statut.ordre != 0) or (c.type_document_commercial_id IN ('.TypeDocumentCommercial::FACTURE.','.TypeDocumentCommercial::AVOIR.') and acbl.article_id = 1509827 and statut.ordre != 0)
order by date desc
*/
$datatable->setDatatableId('dta-ventes')
->setFields(
[
$translator->trans("Date") => 'x.date',
$translator->trans("Réf commande") => 'x.reference',
$translator->trans("Réf cmde client") => 'x.referenceClient',
//$translator->trans("Date") => 'x.date',
$translator->trans("Qté") => 'ac.quantite',
$translator->trans("PU HT") => 'ac.prixBase',
$translator->trans("Remise") => 'ac.remise',
$translator->trans("Total HT") => 'ac.totalHt',
$translator->trans("Nom client") => 'cl.prenom',
$translator->trans("Prénom client") => 'cl.nom',
// $translator->trans("Type") => 'x.typeDocumentCommercial',
"_identifier_" => 'x.id',
]
)
->setRenderers(
[
1 => [
'view' => 'FO/DataTable/avec_lien_edit_route_vente.html.twig',
'params' => [
'edit_route' => 'dtc_commande_modifier',
'typeDocument' => 'true',
],
],
0 => [
'view' => 'FO/DataTable/heure.html.twig',
],
3 => [
'view' => 'FO/DataTable/prix_vente.html.twig',
'params' => [
'champCible' => 'quantite',
],
],
4 => [
'view' => 'FO/DataTable/prix_vente.html.twig',
'params' => [
'champCible' => 'prixBase',
],
],
6 => [
'view' => 'FO/DataTable/prix_vente.html.twig',
'params' => [
'champCible' => 'totalHt',
],
],
/*3 => array(
'view' => 'FO/DataTable/actions_modal.html.twig',
'params' => array(
'supprimer_route' => 'dtc_application_supprimer',
'id' => $article->getId(),
'type' => "article",
'entite' => 'application',
'objet' => "DTCVehiculesBundle:Application"
),
)
*/
]
)
->setOrder("x.date", "desc")
->setSearch(true)
->setSearchFields([1, 2, 9]);
$datatable->getQueryBuilder()->setDoctrineQueryBuilder($qb);
return $datatable;
}
private function olddatatableVentes($article, Request $request, Datatable $datatable, EntityManagerInterface $em, TranslatorInterface $translator)
{
/*
select c.id,c.reference,c.statut_commande_id,c.type_document_commercial_id,c.date,ac.commande_id
from commerciale__commande as c
LEFT JOIN commerciale__article_commande as ac ON c.id = ac.commande_id
LEFT JOIN commerciale__statut_commande as statut ON statut.id = c.statut_commande_id
LEFT JOIN commerciale__commande as bl ON bl.facture_id = c.id
LEFT JOIN commerciale__article_commande as acbl ON acbl.commande_id = bl.id
where
(ac.article_id = 1509827 and statut.ordre != 0) or (c.type_document_commercial_id IN ('.TypeDocumentCommercial::FACTURE.','.TypeDocumentCommercial::AVOIR.') and acbl.article_id = 1509827 and statut.ordre != 0)
order by date desc
*/
$datatable->setDatatableId('dta-ventes')
->setEntity(ArticleCommande::class, "x")
->setFields(
[
$translator->trans("Date") => 'c.date',
$translator->trans("Réf commande") => 'c.reference',
$translator->trans("Réf cmde clientY") => 'c.referenceClient',
//$translator->trans("Date") => 'c.date',
$translator->trans("Qté") => 'x.quantite',
$translator->trans("PU HT") => 'x.prixBase',
$translator->trans("Remise") => 'x.remise',
$translator->trans("Total HT") => 'x.totalHt',
$translator->trans("Nom client") => 'clt.prenom',
$translator->trans("Prénom client") => 'clt.nom',
$translator->trans("Type") => 't.libelle',
"_identifier_" => 'x.id',
]
)
->setWhere(
'x.article = :article and x.rar is NULL AND s.ordre != :ordreStatutDoc',
['article' => $article, 'ordreStatutDoc' => "0"]
)
->addJoin('x.commande', 'c', \Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
->addJoin('c.client', 'clt', \Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
//->addJoin('c.typeDocumentCommercial', 't', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('c.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
1 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_commande_modifier',
'typeDocument' => 'true',
],
],
0 => [
'view' => 'FO/DataTable/heure.html.twig',
],
4 => [
'view' => 'FO/DataTable/prix.html.twig',
],
6 => [
'view' => 'FO/DataTable/prix.html.twig',
],
/*3 => array(
'view' => 'FO/DataTable/actions_modal.html.twig',
'params' => array(
'supprimer_route' => 'dtc_application_supprimer',
'id' => $article->getId(),
'type' => "article",
'entite' => 'application',
'objet' => "DTCVehiculesBundle:Application"
),
)
*/
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([1, 2, 9]);
return $datatable;
}
/**
* @Route("/article/ventes/grid/{id}", name="dtc_article_vente_liste_grid")
*/
public function gridVentesAction(Article $article, Request $request, Datatable $datatable, EntityManagerInterface $em, TranslatorInterface $translator)
{
return $this->datatableVentes($article, $request, $datatable, $em, $translator)->execute();
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableVentesOngletStats($article, Datatable $datatable, EntityManagerInterface $em, TranslatorInterface $translator)
{
$repo_statut_document = $em->getRepository(StatutCommande::class);
$liste_statut = $repo_statut_document->findBy(["documentCommercial" => [2, 3], "ordre" => [0]]);
$datatable->setDatatableId('dta-ventes-onglet-stats')
->setEntity(ArticleCommande::class, "x")
->setFields(
[
$translator->trans("Réf commande") => 'c.reference',
$translator->trans("Réf cmde client") => 'c.referenceClient',
$translator->trans("Date") => 'c.date',
$translator->trans("Qté") => 'x.quantite',
$translator->trans("PU HT") => 'x.prixBase',
$translator->trans("Remise") => 'x.remise',
$translator->trans("Total HT") => 'x.totalHt',
$translator->trans("Client") => 'clt.nom',
"_identifier_" => 'x.id',
]
)
->setWhere(
'x.article = :article and (c.typeDocumentCommercial = '.TypeDocumentCommercial::COMMANDE.' or c.typeDocumentCommercial = '.TypeDocumentCommercial::ORDREREPARATION.') AND c.statutCommande NOT IN (:statutCommande) ',
['article' => $article, 'statutCommande' => $liste_statut]
)
->addJoin('x.commande', 'c', \Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
->addJoin('c.client', 'clt', \Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_commande_modifier',
'typeDocument' => 'commande',
],
],
1 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_client_modifier',
'typeDocument' => 'client_article_commande',
],
],
2 => [
'view' => 'FO/DataTable/date.html.twig',
],
4 => [
'view' => 'FO/DataTable/prix.html.twig',
'params' => [
'afficher_total' => false,
],
],
6 => [
'view' => 'FO/DataTable/prix.html.twig',
'params' => [
'afficher_total' => false,
],
],
7 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_client_modifier',
'typeDocument' => 'client_article_commande_nom_prenom',
],
],
/*3 => array(
'view' => 'FO/DataTable/actions_modal.html.twig',
'params' => array(
'supprimer_route' => 'dtc_application_supprimer',
'id' => $article->getId(),
'type' => "article",
'entite' => 'application',
'objet' => "DTCVehiculesBundle:Application"
),
)
*/
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([0]);
return $datatable;
}
/**
* @Route("/article/ventes/stats/grid/{id}", name="dtc_article_vente_onglet_stats_liste_grid")
*/
public function gridVentesOngletStatsAction(Article $article, Datatable $datatable, EntityManagerInterface $em, TranslatorInterface $translator)
{
return $this->datatableVentesOngletStats($article, $datatable, $em, $translator)->execute();
}
/**
* @Route("", name="")
*/
public function statsAction(Article $article, EntityManagerInterface $em)
{
/*
$historique = $em->getRepository(Article::class)->gethistoriqueVente($article->getId());
$nbVentesMois = $em->getRepository(Article::class)->getNbArticlesVendus($article->getId(), 30);
$nbVentesAnnee = $em->getRepository(Article::class)->getNbArticlesVendus($article->getId(), 365);
*
*/
$nbVentesParMois = $em->getRepository(Article::class)->getNbArticlesVendusParMois($article->getId(), 12);
$prixAchatVente = $em->getRepository(Article::class)->getPrixAchatVenteParMois($article->getId(), 12);
return $this->render('Articles/Article/stats.html.twig', [
'article' => $article,
'nbVentesParMois' => $nbVentesParMois,
'prixAchatVente' => $prixAchatVente,
]);
}
/**
* @Route("/article/refs/json", name="dtc_article_ref_liste_json")
*/
public function FindAllJsonAction(Request $request, EntityManagerInterface $em)
{
if ($request->getMethod() == 'GET') {
$query = $request->query->get('query');
$articleId = $request->query->get('articleId');
}
$results = $em->getRepository(Article::class)->findLibelleOrRefLike($query, $articleId);
$response = new JsonResponse();
$response->setData($results);
return $response;
}
/**
* @Route("/article/consignes/json", name="dtc_article_consigne_liste_json")
*/
public function FindConsignesJsonAction(Request $request, EntityManagerInterface $em)
{
$query = $request->query->get('query');
$articleId = $request->query->get('articleId');
$results = $em->getRepository(Article::class)->findLibelleOrRefLikeInConsigne($query, $articleId);
$response = new JsonResponse();
$response->setData($results);
return $response;
}
/**
* @Route("/article/{id}/quantite/{quantite}/couleur/achat", name="dtc_article_get_couleur_achat")
*/
public function getCouleurQteAchatAction(Request $request, Article $article, $quantite, ArticleService $articleService)
{
$fournisseur = $request->query->get('fournisseur');
if ($fournisseur != '') {
$retour = $articleService->getCouleurQteF($article, $quantite, $fournisseur);
} else {
$retour = $articleService->getCouleurQteF($article, $quantite);
}
$response = new JsonResponse();
$response->setData(['couleur' => $retour]);
return $response;
}
/**
* @Route("/article/consigne/ajouter", name="dtc_article_article_en_consigne_ajouter")
*/
public function ajouterConsigneAction(Request $request, EntityManagerInterface $em)
{
if ($request->getMethod() == 'GET') {
$text = $request->query->get('text');
$value = $request->query->get('value');
$articleId = $request->query->get('article');
}
$article = $em->getRepository(Article::class)->find($articleId);
$consigne = $em->getRepository(Article::class)->find($value);
$article->setArticleEnconsigne($consigne);
$em->persist($article);
$em->flush();
$value = $consigne->getReference();
$valide = 1;
$response = new JsonResponse();
$response->setData([
'data' => 'Reférence ajoutée',
'valide' => $valide,
'value' => $value,
]);
return $response;
}
/**
* @Route("/article/consigne/supprimer", name="dtc_article_article_en_consigne_supprimer")
*/
public function supprimerConsigneAction(Request $request, EntityManagerInterface $em)
{
if ($request->getMethod() == 'GET') {
$value = $request->query->get('value');
$articleId = $request->query->get('article');
}
$article = $em->getRepository(Article::class)->find($articleId);
$consigne = $em->getRepository(Article::class)->find($value);
$article->setArticleEnconsigne(null);
$em->persist($article);
$em->flush();
$value = $consigne->getReference();
$valide = 1;
$response = new JsonResponse();
$response->setData([
'data' => 'Reférence supprimée',
'valide' => $valide,
]);
return $response;
}
/**
* @Route("/article/a-consigner/ajouter", name="dtc_article_articles_a_consigner_ajouter")
*/
public function ajouterAConsignerAction(Request $request, EntityManagerInterface $em)
{
if ($request->getMethod() == 'GET') {
$text = $request->query->get('text');
$value = $request->query->get('value');
$articleId = $request->query->get('article');
}
$consigne = $em->getRepository(Article::class)->find($articleId);
$aConsigner = $em->getRepository(Article::class)->find($value);
$consigne->addArticlesAconsigner($aConsigner);
$em->persist($consigne);
$em->flush();
$value = $aConsigner->getReference();
$valide = 1;
$response = new JsonResponse();
$response->setData([
'data' => 'Reférence ajoutée',
'valide' => $valide,
'value' => $value,
]);
return $response;
}
/**
* @Route("/article/a-consigner/supprimer", name="dtc_article_articles_a_consigner_supprimer")
*/
public function supprimerAConsignerAction(Request $request, EntityManagerInterface $em)
{
if ($request->getMethod() == 'GET') {
$value = $request->query->get('value');
$articleId = $request->query->get('article');
}
$consigne = $em->getRepository(Article::class)->find($articleId);
$aConsigner = $em->getRepository(Article::class)->find($value);
$consigne->removeArticlesAconsigner($aConsigner);
$em->persist($consigne);
$em->flush();
$value = $aConsigner->getReference();
$valide = 1;
$response = new JsonResponse();
$response->setData([
'data' => 'Reférence supprimée',
'valide' => $valide,
]);
return $response;
}
/**
* @Route("", name="")
*/
public function historiquePrixAction(Article $article, EntityManagerInterface $em)
{
//$this->datatableArticle($article);
$repoArticle = $em->getRepository(Article::class);
//$prix = $repoArticle->historiquePrix($article);
//return $this->render('Articles/Article/historique-prix.html.twig', array('article' => $article,'prix'=>$prix));
return $this->render('Articles/HistoriquePrix/lister.html.twig', ['article' => $article]);
}
/**
* @Route("/article/minimaxi", name="dtc_article_mini_maxi")
*/
public function saisieRapideMiniMaxiAction(Request $request, EntityManagerInterface $em, TranslatorInterface $translator)
{
if ($request->isMethod('POST') and $request->query->get('formulaire') == 1) {
$miniMaxi = $request->get('miniMaxi');
$em->getRepository(Article::class)->setMiniMaxi($miniMaxi["ids"], $request->request->all());
//print_r($miniMaxi);
$this->addFlash(
'notice',
$translator->trans('Mini/Maxi mis à jour avec succès !')
);
$url = $this->generateUrl('dtc_article_liste', []);
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
} else {
$data = $request->get('dataTables');
$ids = $data['actions'];
$titre_modal = $translator->trans("Saisie multiple Mini/Maxi");
$rendu = $this->renderView('Articles/Article/saisie-mini-maxi.html.twig', ['ids' => $ids]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
/**
* @Route("/article/{article}/categorie/{categorie}/statut/{statut}", name="dtc_article_associer_categorie_ajax")
*/
public function associerArticleCategorieAction(Request $request, $article, Categorie $categorie, $statut, EntityManagerInterface $em, ArticleMarketPlaceService $articleMarketPlaceService
) {
$article_obj = "";
$repo_articlesCategories = $em->getRepository(ArticleCategorie::class);
$repo_market_place = $em->getRepository(MarketPlace::class);
$repo_compte_market_place = $em->getRepository(CompteMarketPlace::class);
$repo_article = $em->getRepository(Article::class);
$repo_article_market_place = $em->getRepository(ArticleMarketPlace::class);
$caracteristiques = "";
$notice_publication = "";
$warning_publication = "";
$compteMarketPlace = "";
$compteMarketPlaceId = $request->query->get('compteMarketPlace');
$marketPlaceId = $request->query->get('marketPlace');
$marketPlaceObj = "";
if ($marketPlaceId != "") {
$marketPlaceObj = $repo_market_place->find($marketPlaceId);
}
$idAnnonce = "";
$idArticle = "";
$articleMarketPlaceId = $request->query->get('articleMarketPlace');
//echo "<div>".$compteMarketPlaceId."</div>";
if ($compteMarketPlaceId != "") {
$repo_compte_market_place = $em->getRepository(CompteMarketPlace::class);
$compteMarketPlace = $repo_compte_market_place->find($compteMarketPlaceId);
$repo_market_place = $em->getRepository(MarketPlace::class);
$marketPlace = $compteMarketPlace->getMarketPlace();
}
/*
if($articleMarketPlaceId != "") {
$repo_article_market_place = $em->getRepository('DTCMarketPlaceBundle:CompteMarketPlace');
$articleMarketPlace = $repo_article_market_place->find($articleMarketPlaceId);
}
*/
//echo "HHH ".$compteMarketPlace->getLibelle();
if (is_object($compteMarketPlace)) {
//$articleMarketPlace = $repo_article_market_place->findOneBy(array("article"=>$article,"compteMarketPlace"=>$compteMarketPlace));
$article = $repo_article_market_place->find($article);
$article_obj = $article->getArticle();
$idAnnonce = $article->getId();
$articleCategorie = $repo_articlesCategories->findOneBy(['articleMarketPlace' => $article, 'categorie' => $categorie]);
if ($compteMarketPlace->getMarketPlace()->getId() == "3"
or $compteMarketPlace->getMarketPlace()->getId() == "6"
or $compteMarketPlace->getMarketPlace()->getId() == "10"
or $compteMarketPlace->getMarketPlace()->getId() == "11"
or $compteMarketPlace->getMarketPlace()->getId() == "12"
or $compteMarketPlace->getMarketPlace()->getId() == "13"
) {
$conn = $em->getConnection();
$sql = 'DELETE FROM article__article_categorie WHERE article_market_place_id="'.$article->getId().'"';
$stmt = $conn->executeQuery($sql);
$conn = $em->getConnection();
$sql = 'DELETE FROM market_place__article_market_place_caracteristique WHERE article_market_place_id="'.$article->getId().'"';
//echo $sql;
$stmt = $conn->executeQuery($sql);
$articleCategorie = null;
}
if ($compteMarketPlace->getMarketPlace()->getId() == "1"
or $compteMarketPlace->getMarketPlace()->getId() == "3"
or $compteMarketPlace->getMarketPlace()->getId() == "6"
or $compteMarketPlace->getMarketPlace()->getId() == "10"
or $compteMarketPlace->getMarketPlace()->getId() == "11"
or $compteMarketPlace->getMarketPlace()->getId() == "12"
or $compteMarketPlace->getMarketPlace()->getId() == "13"
) {
$conn = $em->getConnection();
if (is_object($articleCategorie)) {
$sql = 'DELETE FROM article__article_categorie WHERE article_market_place_id="'.$article->getId().'" and id != "'.$articleCategorie->getId().'"';
} else {
$sql = 'DELETE FROM article__article_categorie WHERE article_market_place_id="'.$article->getId().'"';
}
$stmt = $conn->executeQuery($sql);
}
//echo $articleMarketPlace->getId();
} else {
$article = $repo_article->find($article);
$article_obj = $repo_article->find($article);
$idArticle = $article->getId();
if (is_object($marketPlaceObj)) {
$conn = $em->getConnection();
if ($marketPlaceId == "4"
or $marketPlaceId == "6"
or $marketPlaceId == "10"
or $marketPlaceId == "11"
or $marketPlaceId == "12"
or $marketPlaceId == "13"
) {
$conn = $em->getConnection();
$sql = 'DELETE FROM market_place__article_market_place_caracteristique WHERE article_id="'.$article->getId().'"';
$stmt = $conn->executeQuery($sql);
}
if (
($marketPlaceId == "6"
or $marketPlaceId == "4"
or $marketPlaceId == "3"
or $marketPlaceId == "1"
or $marketPlaceId == "6"
or $marketPlaceId == "10"
or $marketPlaceId == "11"
or $marketPlaceId == "12"
or $marketPlaceId == "13"
)
and is_object($article)
) {
$sql = 'DELETE FROM article__article_categorie WHERE market_place_id = "'.$marketPlaceId.'" and article_id="'.$article->getId().'"';
$stmt = $conn->executeQuery($sql);
}
}
$articleCategorie = $repo_articlesCategories->findOneBy(['article' => $article, 'categorie' => $categorie]);
}
if ($statut == 'add') {
//echo "<div>ADD</div>";
if ( ! is_object($articleCategorie)) {
$articleCategorie = new ArticleCategorie;
//echo "<div>ADDVIDE</div>";
if (is_object($compteMarketPlace)) {
$articleCategorie->setArticleMarketPlace($article);
} else {
$articleCategorie->setArticle($article);
}
$articleCategorie->setCategorie($categorie);
}
if (is_object($marketPlaceObj)) {
$articleCategorie->setMarketPlace($marketPlaceObj);
}
$em->persist($articleCategorie);
$em->flush();
if (is_object($compteMarketPlace) or is_object($marketPlaceObj)) {
if ((is_object($compteMarketPlace)
and
($compteMarketPlace->getMarketPlace()->getId() == "4"
or $compteMarketPlace->getMarketPlace()->getId() == "6"
or $compteMarketPlace->getMarketPlace()->getId() == "3"
or $compteMarketPlace->getMarketPlace()->getId() == "10"
or $compteMarketPlace->getMarketPlace()->getId() == "11"
or $compteMarketPlace->getMarketPlace()->getId() == "12"
or $compteMarketPlace->getMarketPlace()->getId() == "13"
)
)
or is_object($marketPlaceObj)
) {
$caracteristiques = $this->renderView(
'Articles/Categorie/template_caracteristiques.html.twig',
["idArticle" => $idArticle, "idAnnonce" => $idAnnonce, "categorie" => $categorie]
);
}
}
} else {
if (is_object($articleCategorie)) {
$em->remove($articleCategorie);
}
}
$em->persist($article);
$em->flush();
if (is_object($marketPlaceObj)) {
//echo "AAA ".$marketPlaceObj->getId();
$compteMarketPlace = $repo_compte_market_place->findBy(["marketPlace" => $marketPlaceObj]);
if (count($compteMarketPlace) > 0) {
$tabBoucle = [];
foreach ($compteMarketPlace as $compte) {
$annonces = $repo_article_market_place->findBy(["article" => $article, "compteMarketPlace" => $compte]);
$categories = $repo_articlesCategories->findBy(["article" => $article, "marketPlace" => $marketPlaceObj]);
if (count($annonces) > 0) {
foreach ($annonces as $an) {
//echo "<div>ANID ".$an->getId()."</div>";
if (($compte->getMarketPlace()->getId() == "8") and 1 != 1) {
$conn = $em->getConnection();
if ($compte->getId() == $an->getCompteMarketPlace()->getId()) {
$sql = 'DELETE FROM article__article_categorie WHERE article_market_place_id="'.$an->getId().'"';
$stmt = $conn->executeQuery($sql);
//echo "sql ".$sql;
//echo "<div>SQL ".$sql." ==> ".$compte->getMarketPlace()->getLibelle()."</div>";
$conn = $em->getConnection();
$sql = 'DELETE FROM market_place__article_market_place_caracteristique WHERE article_market_place_id="'.$an->getId().'"';
$stmt = $conn->executeQuery($sql);
//echo "<div>SQL ".$sql."</div>";
//exit;
//$em->refresh($an);
}
}
if (count($an->getarticleCategorie()) == 0) {
foreach ($categories as $cat) {
$articleCategorieAnnonce = new ArticleCategorie;
$articleCategorieAnnonce->setArticleMarketPlace($an);
$articleCategorieAnnonce->setCategorie($cat->getCategorie());
//echo "CAT:".$cat->getCategorie()->getId()." ANN:".$an->getId();
$em->persist($articleCategorieAnnonce);
// $em->flush();
// exit;
}
}
}
$message_maj = $articleMarketPlaceService->majStockAnnonce($article->getId());
}
}
$em->flush();
}
} else {
$compteMarketPlace = $repo_compte_market_place->findBy(["statut" => true]);
if (count($compteMarketPlace) > 0) {
$conn = $em->getConnection();
$tabBoucle = [];
foreach ($compteMarketPlace as $compte) {
$annonces = $repo_article_market_place->findBy(["article" => $article, "compteMarketPlace" => $compte]);
if (count($annonces) > 0) {
foreach ($annonces as $an) {
/*
if($compte->getMarketPlace()->getId() == "9" or $compte->getMarketPlace()->getId() == "5" )
{
$sql = 'DELETE FROM article__article_categorie WHERE article_market_place_id="'.$an->getId().'"';
$stmt = $conn->query($sql);
$stmt->execute();
}
*/
if (1 != 1 and count($article->getArticleCategorie()) > 0) {
foreach ($article->getArticleCategorie() as $ca2) {
if ($compte->getMarketPlace()->getId() == "9" && is_object($ca2->getCategorie()->getCategorieWordpressWoo())) {
$articleCategorie = new ArticleCategorie();
$articleCategorie->setCategorie($ca2->getCategorie()->getCategorieWordpressWoo());
$articleCategorie->setArticleMarketPlace($an);
$em->persist($articleCategorie);
$categorie_valide = true;
}
if ($compte->getMarketPlace()->getId() == "5" && is_object($ca2->getCategorie()->getCategoriePrestahop())) {
$articleCategorie = new ArticleCategorie();
$articleCategorie->setCategorie($ca2->getCategorie()->getCategoriePrestahop());
$articleCategorie->setArticleMarketPlace($an);
$em->persist($articleCategorie);
$categorie_valide = true;
}
}
}
}
$em->flush();
}
}
}
$message_maj = $articleMarketPlaceService->majStockAnnonce($article_obj->getId());
$notice_publication = $message_maj["notice"];
$warning_publication = $message_maj["warning"];
}
$response = new JsonResponse;
$response->setData([
'article' => $article->getId(),
'categorie' => $categorie->getId(),
'statut' => $statut,
'caracteristiques' => $caracteristiques,
'notice_publication' => $notice_publication,
'warning_publication' => $warning_publication,
]);
return $response;
}
/**
* @Route("", name="")
*/
public function ___associerArticleCategorieAction(Article $article, Categorie $categorie, $statut, EntityManagerInterface $em)
{
$repo_articlesCategories = $em->getRepository(ArticleCategorie::class);
$articleCategorie = $repo_articlesCategories->findOneBy(['article' => $article, 'categorie' => $categorie]);
if ($statut == 'add') {
if ( ! is_object($articleCategorie)) {
$articleCategorie = new ArticleCategorie;
$articleCategorie->setArticle($article);
$articleCategorie->setCategorie($categorie);
}
$em->persist($articleCategorie);
} else {
if (is_object($articleCategorie)) {
$em->remove($articleCategorie);
}
}
$em->persist($article);
$em->flush();
$response = new JsonResponse;
$response->setData([
'article' => $article->getId(),
'categorie' => $categorie->getId(),
'statut' => $statut,
]);
return $response;
}
/**
* @Route("/article/{article}/marque/{marque}/statut/{statut}", name="dtc_article_associer_marque_vehicule_ajax")
*/
public function associerArticleMarqueVehiculeAction(Article $article, Marque $marque, $statut, EntityManagerInterface $em)
{
//$repo_articlesCategories = $em->getRepository('DTCArticlesBundle:ArticleCategorie');
//$articleCategorie = $repo_articlesCategories->findOneBy(array('article'=>$article, 'categorie'=>$categorie));
$repo_applications = $em->getRepository(Application::class);
$application = $repo_applications->findOneBy(['article' => $article, 'marque' => $marque, 'modele' => null, 'type' => null]);
if ($statut == 'add') {
if ( ! is_object($application)) {
$application = new Application;
$application->setArticle($article);
$application->setMarque($marque);
}
$em->persist($application);
} else {
if (is_object($application)) {
$em->remove($application);
}
}
$em->persist($article);
$em->flush();
$response = new JsonResponse;
$response->setData([
'article' => $article->getId(),
'marque' => $marque->getId(),
'statut' => $statut,
]);
return $response;
}
/**
* @Route("/article/{article}/modele/{modele}/statut/{statut}", name="dtc_article_associer_modele_vehicule_ajax")
*/
public function associerArticleModeleVehiculeAction(Article $article, Modele $modele, $statut, EntityManagerInterface $em)
{
//$repo_articlesCategories = $em->getRepository('DTCArticlesBundle:ArticleCategorie');
//$articleCategorie = $repo_articlesCategories->findOneBy(array('article'=>$article, 'categorie'=>$categorie));
$repo_applications = $em->getRepository(Application::class);
$application = $repo_applications->findOneBy(['article' => $article, 'marque' => $modele->getMarque(), 'modele' => $modele, 'type' => null]);
if ($statut == 'add') {
if ( ! is_object($application)) {
$application = new Application;
$application->setArticle($article);
$application->setModele($modele);
$application->setMarque($modele->getMarque());
}
$em->persist($application);
} else {
if (is_object($application)) {
$em->remove($application);
}
}
$em->persist($article);
$em->flush();
$response = new JsonResponse;
$response->setData([
'article' => $article->getId(),
'modele' => $modele->getId(),
'statut' => $statut,
]);
return $response;
}
/**
* @Route("/article/{article}/type/{type}/statut/{statut}", name="dtc_article_associer_type_vehicule_ajax")
*/
public function associerArticleTypeVehiculeAction(Article $article, VehiculesType $type, $statut, EntityManagerInterface $em)
{
//$repo_articlesCategories = $em->getRepository('DTCArticlesBundle:ArticleCategorie');
//$articleCategorie = $repo_articlesCategories->findOneBy(array('article'=>$article, 'categorie'=>$categorie));
$repo_applications = $em->getRepository(Application::class);
$application = $repo_applications->findOneBy(['article' => $article, 'marque' => $type->getModele()->getMarque(), 'modele' => $type->getModele(), 'type' => $type]);
if ($statut == 'add') {
if ( ! is_object($application)) {
$application = new Application;
$application->setArticle($article);
$application->setType($type);
$application->setModele($type->getModele());
$application->setMarque($type->getModele()->getMarque());
}
$em->persist($application);
} else {
if (is_object($application)) {
$em->remove($application);
}
}
$em->persist($article);
$em->flush();
$response = new JsonResponse;
$response->setData([
'article' => $article->getId(),
'type' => $type->getId(),
'statut' => $statut,
]);
return $response;
}
/**
* @Route("/article/modifier/chaine/resultats/ajax", name="dtc_article_modif_chaine_resultats_ajax")
*/
public function modifsChaineResultatsAjaxAction(Request $request, ArticleService $articleService, EntityManagerInterface $em, PaginatorInterface $paginator)
{
$param = $request->query->all();
$retour_recherche = [];
//print_r($param);
$retour["draw"] = $param["draw"];
$page = $param["start"] / 10 + 1;
//$retour["recordsTotal"]="100";
//print_r($request->query->all());
$retour_recherche = $articleService->rechercheArticleChaine($param["param"], "afficher");
$resultats_recherche = $retour_recherche["resultats"];
$nb_resultats_recherche = $retour_recherche["nbResultats"];
$pagination = $paginator->paginate(
$resultats_recherche, /* query NOT result */
$page/*page number*/,
$param["length"]/*limit per page*/
);
$pagination_results = $pagination->getItems();
//print_r($pagination_results);
for ($i = 0; $i < count($pagination_results); $i++) {
$url = $this->generateUrl('dtc_article_modifier', ["id" => $pagination_results[$i][0]]);
$pagination_results[$i][1] = "<a target='_blank' href='".$url."'>".$pagination_results[$i][1]."</a>";
$pagination_results[$i][2] = "<a target='_blank' href='".$url."'>".$pagination_results[$i][2]."</a>";
$pagination_results[$i][5] = "<input type='checkbox' value='".$pagination_results[$i][0]."'name='".$pagination_results[$i][0]."' checked='true' >";
}
$retour["recordsFiltered"] = $nb_resultats_recherche;
//$retour["data"]=$resultats_recherche;
$retour["data"] = $pagination_results;
$retour["recordsTotal"] = $nb_resultats_recherche;
return new Response(json_encode($retour));
//return new JsonResponse(array('rendu'=>$retour), 200, array('Content-Type'=>'application/json'));
}
/**
* @Route("/article/modifier/chaine/resultats", name="dtc_article_modif_chaine_resultats")
*/
public function modifsChaineResultatsAction(Request $request, TranslatorInterface $translator)
{
$titre_modal = $translator->trans("Résultats recherche");
$nb_resultats_recherche = "0";
$resultats_recherche = [];
$param = $request->query->all();
//var_dump($param["param"]);
//$retour = $articleService->rechercheArticleChaine($param["param"]);
//$resultats_recherche = $retour["resultats"];
//$nb_resultats_recherche = $retour["nbResultats"];
$urlDatatAble = $this->generateUrl('dtc_article_modif_chaine_resultats_ajax', ["param" => $param["param"]]);
$rendu = $this->renderView(
'Articles/Article/resultats_recherche_chaine.html.twig',
[
"urlDatatAble" => $urlDatatAble,
"param" => $param,
"nb_resultats_recherche" => $nb_resultats_recherche,
"resultats_recherche" => $resultats_recherche,
]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("/article/modifier/chaine", name="dtc_article_modif_chaine")
*/
public function modifsChaineAction(Request $request, EntityManagerInterface $em, ArticleService $articleService)
{
$article = new Article;
$resultats_recherche = [];
$nb_resultats_recherche = 0;
// $article->setReference(null);
$article->setCoefficientPrixBaseVente(null);
$article->setTauxMarge(null);
$article->setSeuilMiniCommandeFournisseur(null);
$article->setPoids(null);
$article->setLargeur(null);
$article->setHauteur(null);
$article->setProfondeur(null);
$article->setTypeRemiseMax(null);
$article->setConsigne(null);
$article->setVirtuel(null);
$article->setProduitInterne(null);
$article->setPrixBase(null);
$article->setPrixVente(null);
$form = $this->createForm(ArticleRechercheType::class, $article);
$recherche = "";
//$form->handleRequest($request);
$action_form = "recherche";
$params = [];
$param = $request->query->all();
//print_r($param);
if ($request->isMethod('POST')) {
//echo "<div>modifier a</div>";
$param_valeur = $request->request->all();
$param_recherche = $request->query->all();
$retour = $articleService->modifierArticleChaine($param_recherche, $param_valeur);
/*
$builder = new ProcessBuilder();
//$builder->setArguments(array('php', '../app/console', 'modifier:articleChaine', $param_recherche, $param_valeur));
$builder->setArguments(array('php', '../app/console', 'modifier:articleChaine'));
$builder->setInput(array('param_recherche'=>$param_recherche, 'param_valeur'=>$param_valeur));
$builder->getProcess()->start();
*
*/
$this->addFlash(
'notice',
'Articles mis à jour avec succès ! '.$retour.' articles mis à jour'
//'La modification en chaîne a été lancée. Vous receverez une note dès que celle-ci sera terminée.'
);
return $this->redirectToRoute('dtc_article_liste', []);
} elseif (array_key_exists('dtc_articlesbundle_article', $param)) {
//echo "<div>RECHERCHER a</div>";
$recherche = $article;
$article = new Article;
//print_r($param);
$retour = $articleService->rechercheArticleChaine($param);
$resultats_recherche = $retour["resultats"];
$nb_resultats_recherche = $retour["nbResultats"];
// $article->setReference(null);
$article->setCoefficientPrixBaseVente(null);
$article->setTauxMarge(null);
$article->setSeuilMiniCommandeFournisseur(null);
$article->setPoids(null);
$article->setLargeur(null);
$article->setHauteur(null);
$article->setProfondeur(null);
$article->setTypeRemiseMax(null);
$article->setConsigne(null);
$article->setVirtuel(null);
$article->setProduitInterne(null);
$article->setPrixBase(null);
$article->setPrixVente(null);
$form = $this->createForm(ArticleRechercheType::class, $article);
$action_form = "modifier";
}
return $this->render(
'Articles/Article/modifier_chaine.html.twig',
[
"nb_resultats_recherche" => $nb_resultats_recherche,
"resultats_recherche" => $resultats_recherche,
"param" => $request->query->all(),
"action_form" => $action_form,
"form" => $form->createView(),
]
);
}
/**
* @Route("/article/modifier/multiple", name="dtc_article_multi_modif")
*/
public function modifsMultipleAction(Request $request, EntityManagerInterface $em, TranslatorInterface $translator, ArticleService $articleService)
{
$titre_modal = $translator->trans("Modification en chaine");
$repo_categorie_article = $em->getRepository(Categorie::class);
$categorie_article_racine = $repo_categorie_article->findBy(["categorieParent" => 1]);
$sous_categorie_article = [];
$type_article = [];
$repo_type_article = $em->getRepository(Type::class);
$type_article = $repo_type_article->findBy([], ["libelle" => "ASC"]);
$famille_compta = [];
$repo_famille_compta = $em->getRepository(FamilleCompta::class);
$famille_compta = $repo_famille_compta->findBy([], ["libelle" => "ASC"]);
if ($request->isMethod('POST')) {
$url = "";
$type = "";
$rendu = "";
$suffixe = "";
$param = $request->request->all();
$nbEdited = $articleService->majEnChaine($param);
//$rendu = $this->renderView('Articles/Article/modifier_multiple.html.twig', array("categorie_article"=>$categorie_article_racine,"sous_categorie_article"=>$sous_categorie_article));
$this->addFlash(
'notice',
'Articles mis à jour avec succès ! '.$nbEdited.' articles mis à jour'
);
//$this->pdfValorisationAction($suffixe,$param,false);
$url = $this->generateUrl('dtc_article_liste', []);
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
} else {
$type = "";
$url = "";
$rendu = $this->renderView(
'Articles/Article/modifier_multiple.html.twig',
[
"categorie_article" => $categorie_article_racine,
"sous_categorie_article" => $sous_categorie_article,
"type_article" => $type_article,
"famille_compta" => $famille_compta,
]
);
}
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => $url, 'titre' => $titre_modal, "type" => $type]
);
}
/**
* @Route("/article-divers-compose/ajouter/{id}", name="dtc_article_divers_compose_ajouter")
*/
public function diversComposeAjouterAction(Article $article, TranslatorInterface $translator)
{
$titre_modal = $translator->trans('Ajouter un article divers composé :');
$errors = '';
$errorsSup = [];
$rendu = $this->renderView('Articles/Article/divers-compose-ajouter.html.twig', ['errors' => $errors, 'article' => $article]);
return new JsonResponse(
[
'rendu' => $rendu,
'valide' => '0',
'url' => '',
'titre' => $titre_modal,
],
200,
['Content-Type' => 'application/json']
);
}
/**
* @Route("/article-divers/ajouter/{id}", name="dtc_article_divers_ajouter")
*/
public function diversAjouterAction(Request $request, Article $article, EntityManagerInterface $em, ValidatorInterface $validator, TranslatorInterface $translator, ArticleService $articleService)
{
/*
$url = $this->generateUrl('dtc_article_modifier', array("id"=>$article->getId()));
$titre_modal = "<a target='_blank' href='".$url."'>".$article->getLibelle()."</a>";
*
*/
$conn = $em->getConnection();
$repo_condition_achat = $em->getRepository(ConditionAchat::class);
$repo_fournisseur = $em->getRepository(Fournisseur::class);
$titre_modal = $translator->trans('Ajouter un article divers :');
$errors = '';
$errorsSup = [];
$repoFournisseur = $em->getRepository(Fournisseur::class);
$typeCommande = "vente";
$fournisseur = '';
if ($request->query->get('fournisseur') != "") {
$fournisseur = $repoFournisseur->find($request->query->get('fournisseur'));
$typeCommande = "achat";
}
$fournisseurId = $request->query->get('fournisseur');
$conditionAchat = $repo_condition_achat->findOneBy(['article' => $article->getId()]);
if ( ! is_object($conditionAchat)) {
$conditionAchat = new ConditionAchat;
$conditionAchat->setArticle($article);
$conditionAchat->setDefaut(true);
$conditionAchat->setPrixAchatBrut(0);
$conditionAchat->setQuantite(0);
//$conditionAchat->setConditionnement(1);
}
$user = $this->getUser();
$conditionAchat->setUtilisateur($user);
$article->setUtilisateur($user);
$fournisseurId = '';
$modificationFormulaire = $request->request->get('modificationFormulaire');
if(!is_null($request->request->get('dtc_articlesbundle_conditionachat'))) $fournisseurId = $request->request->get('dtc_articlesbundle_conditionachat')['fournisseur'];
if ($fournisseurId != '') {
//echo "tatatat";
$fournisseur = $repo_fournisseur->find($fournisseurId);
}
if ($fournisseurId == "") {
$fournisseurId = $request->query->get('fournisseur');
}
//echo "HHH ".$fournisseurId;
if ($fournisseurId != '' && ($modificationFormulaire == 'true' or $request->query->get('fournisseur') != "")) {
// echo "A";
if (is_object($fournisseur)) {
// echo "B";
$conditionAchat->setFournisseur($fournisseur);
}
}
$form = $this->createForm(ArticleDiversType::class, $conditionAchat);
/*
dump($modificationFormulaire);
if(is_object($fournisseur)) dump($fournisseur->getId()); else dump('non defini');
if(is_object($conditionAchat->getFournisseur())) dump($conditionAchat->getFournisseur()->getId()); else dump('non defini');
*
*/
if ($modificationFormulaire != 'true') {
$form->handleRequest($request);
if ($form->isSubmitted()) {
/*
$this->addFlash(
'notice',
$fournisseurId. ' / ' .$conditionAchat->getFournisseur()->getDivers(). ' ' .$conditionAchat->getFournisseur()->getId()
);
*
*/
//echo 'test';
if ($form->isValid()) {
if (is_object($fournisseur)) {
$query = $repoFournisseur->createQueryBuilder('p')
->select(
'p.id as id,p.libelle as libelle,p.tva,c.id as compta, p.reference as reference, p.divers as divers, p.codeComptable as code_comptable'
)
->join('p.compta', 'c')
->where('p.id = :id')
->setParameters(['id' => $conditionAchat->getFournisseur()->getId()])
->setMaxResults(1)
->orderBy('p.id', 'ASC');
$fournisseur_bdd = $query->getQuery()->getOneOrNullResult();
}
//Calcul du prix achat net
$prixAchatNet = $conditionAchat->getPrixAchatBrut() * (1 - ($conditionAchat->getTauxRemise() / 100)) * (1 - ($conditionAchat->getTauxRemiseSupplementaire() / 100));
$coefficient = $conditionAchat->getCoefficient();
if ($coefficient != 0) {
$prixAchatNet = $prixAchatNet * $coefficient;
}
$prixAchatNet += $conditionAchat->getFraisAnnexes();
$conditionAchat->setPrixAchatNet($prixAchatNet);
//Calcul du coefficient
/*
if($prixAchatNet > 0){
$coefficient = $conditionAchat->getPrixAchatBrut() / $prixAchatNet;
$conditionAchat->setCoefficient($coefficient);
}
*
*/
$fourn_est_divers = false;
if (isset($fournisseur) && is_object($fournisseur) && $fournisseur->getDivers() === true && ! is_object($fournisseur->getParent())) {
$fourn_est_divers = true;
$fournisseurPlus = $conditionAchat->getFournisseurPlus();
//dump($fournisseur->getDivers());
/*
if(is_object($fournisseur)) {
\Doctrine\Common\Util\Debug::dump($fournisseur->getId());
\Doctrine\Common\Util\Debug::dump($fournisseurPlus->getId());
\Doctrine\Common\Util\Debug::dump($request->request->get('dtc_articlesbundle_conditionachat'));
}
*/
$newFournisseur = clone $fournisseurPlus;
$newFournisseur->setParent($fournisseur);
//$em->remove($fournisseurPlus);
$newFournisseur->setUtilisateur($user);
$dernierrepoFournisseur = $repo_fournisseur->getDernierFournisseur();
$derfournisseur = intval($dernierrepoFournisseur[0][1]) + 1;
$newFournisseur->setReference($derfournisseur);
$codeCompta = "401{$derfournisseur}";
$newFournisseur->setCodeComptable($codeCompta);
$date = new \DateTime;
$newFournisseur->setDate($date);
//$newFournisseur->setLibelle('test');
//$em->persist($newFournisseur);
//if(is_object($conditionAchat->getFournisseur())) dump('fournisseur de la cond HA '.$conditionAchat->getFournisseur()->getId()); else dump('pas de fournisseur sur la cond HA ');
$conditionAchat->setFournisseur(null);
$conditionAchat->setFournisseurPlus(null);
//unset($fournisseur);
unset($fournisseurPlus);
//if(is_object($conditionAchat->getFournisseur())) dump('fournisseur de la cond HA '.$conditionAchat->getFournisseur()->getId()); else dump('pas de fournisseur sur la cond HA ');
//dump($fournisseur->getLibelle());
$conditionAchat->setFournisseur($newFournisseur);
//$em->flush();
}
$em->persist($conditionAchat);
$em->persist($article);
$em->flush();
$articleService->majEnFonctionDuPrixAchat($article, $conditionAchat->getPrixAchatBrut());
if ($fourn_est_divers && $fournisseur_bdd['id'] != "") {
//dump('maj donnee fournisseur '.$fournisseur_bdd['id'].' -> '.$fournisseur_bdd['libelle']);
$tableau_donnee = [];
$tableau_donnee["reference"] = $fournisseur_bdd['reference'];
$tableau_donnee["code_comptable"] = $fournisseur_bdd['code_comptable'];
$tableau_donnee["divers"] = $fournisseur_bdd['divers'];
$tableau_donnee["libelle"] = $fournisseur_bdd['libelle'];
if ($fournisseur_bdd['compta'] > 0) {
$tableau_donnee["compta_id"] = $fournisseur_bdd['compta'];
}
$tableau_donnee["tva"] = $fournisseur_bdd['tva'];
$conn->update('fournisseur__fournisseur', $tableau_donnee, ['id' => $fournisseur_bdd['id']]);
}
$articleService->setFournisseurDefaut($article);
$this->addFlash(
'notice',
$translator->trans('Article divers modifié avec succès !')
);
$rendu = $this->renderView('FO/FO/modal-close.html.twig', ['errors' => $errors]);
return new Response(json_encode(['rendu' => $rendu, 'valide' => '0', 'url' => '']));
} else {
//$errors = $validator->validate($conditionAchat);
//if ($conditionAchat->getLibelle() == '') $errorsSup[] = 'Libellé obligatoire!';
$errors = $validator->validate($conditionAchat, null, ['articleDivers']);
}
}
}
$rendu = $this->renderView('Articles/Article/divers-ajouter.html.twig', [
'typeCommande' => $typeCommande,
'article' => $article,
'conditionAchat' => $conditionAchat,
'form' => $form->createView(),
'errors' => $errors,
'fournisseurId' => $fournisseurId,
'errorsSup' => $errorsSup,
]);
$divers = '';
$tva = '';
if (is_object($conditionAchat->getFournisseur())) {
$divers = $conditionAchat->getFournisseur()->getDivers();
$tva = $conditionAchat->getFournisseur()->getTva();
}
return new Response(
json_encode([
'rendu' => $rendu,
'valide' => '0',
'url' => '',
'titre' => $titre_modal,
'divers' => $divers,
'tva' => $tva,
]),
200,
['Content-Type' => 'application/json']
);
}
/**
* @Route("/article/universel/{id}", name="dtc_article_universel")
*/
public function changeUniverselAction(Article $article, EntityManagerInterface $em)
{
if ($article->getUniversel() == 1) {
$article->setUniversel(0);
} else {
$article->setUniversel(1);
}
$em->persist($article);
$em->flush();
$headers = [
'Content-Type' => 'application/json',
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'POST',
];
return new JsonResponse(['data' => $article->getUniversel()], 200, $headers);
}
/**
* @Route("/article/tableau-vente/charger-tableau/{article}", name="dtc_article_vente_charger_tableau")
* @Route("/article/tableau-vente/charger-tableau/{id}", name="dtc_vente_article_charger_tableau_vente")
*/
public function chargerTableauVenteAction(Article $article)
{
$rendu = $this->renderView('Articles/Vente/charger_tableau.html.twig', ["article" => $article]);
return new JsonResponse(['rendu' => $rendu]);
}
/**
* @Route("/application/charger-tableau/{id}/", name="dtc_application_article_charger_tableau")
*/
public function chargerTableauApplicationAction(Article $article)
{
$rendu = $this->renderView('Articles/Article/charger_application_tableau.html.twig', ["article" => $article]);
return new JsonResponse(['rendu' => $rendu]);
}
/**
* @Route("/article/pdf/{id}", name="dtc_article_pdf")
*/
public function pdfArticleAction(Request $request, Article $article, $retour = true, EntityManagerInterface $em, Pdf $snappy)
{
$param = $request->query->all();
$societe = $em->getRepository(Societe::class)->find(1);
$chemin_pdf = 'PDF/ARTICLE/article_'.$article->getId().'.pdf';
if (file_exists($chemin_pdf)) {
//return $this->render('FO/PDF/conteneur_pdf.html.twig', array('chemin_pdf' =>'/'.$chemin_pdf));
unlink($chemin_pdf);
}
//$footer = $this->renderView('FO/PDF/footer_pagination_pdf.html.twig', array('societe' => $societe));
//$header = $this->renderView('FO/PDF/header_bl_pdf.html.twig', array('societe' => $societe,'commande' => $bonPreparation));
$header = "";
//$snappy->setOption('header-html',$header);
//$snappy->setOption('footer-html',$footer);
//$snappy->setOption('margin-bottom',"10");
$snappy->generateFromHtml(
$this->renderView(
//'GestionComerciale/BonLivraison/template_pdf.html.twig',
'Articles/Article/template_pdf.html.twig',
[
'societe' => $societe,
'article' => $article,
]
),
$chemin_pdf
);
if ($retour == true) {
return $this->render('FO/PDF/conteneur_pdf.html.twig', ['chemin_pdf' => '/'.$chemin_pdf]);
}
}
/**
* @Route("/article/quantite-conseille/{article}/{fournisseur}", name="dtc_article_quantite_conseillee")
*/
public function quantiteConseilleeAction(Article $article, Fournisseur $fournisseur, ArticleService $articleService)
{
$qteConseillee = $articleService->getQteConseillee($article, null, $fournisseur);
$retour = [
'qteConseillee' => $qteConseillee['qteConseillee'],
'qteMini' => $qteConseillee['qteMini'],
'qteMaxi' => $qteConseillee['qteMaxi'],
];
if (is_object($qteConseillee['condition'])) {
$retour['prixAchatNet'] = $qteConseillee['condition']->getPrixAchatNet();
$retour['referenceFournisseur'] = $qteConseillee['condition']->getReferenceFournisseur();
$retour['delai'] = $qteConseillee['condition']->getDelai();
$retour['conditionnement'] = $qteConseillee['condition']->getConditionnement();
$retour['conditionAchatId'] = $qteConseillee['condition']->getId();
}
return new JsonResponse($retour);
}
/**
* @Route("/article/associer/caracteritiques", name="dtc_article_associer_caracteristiques_ajax")
*/
public function associerCaracteristiquesCategorieAction(Request $request, EntityManagerInterface $em)
{
//echo "TEST";
$repo_articlesCategories = $em->getRepository(ArticleCategorie::class);
$repo_caracteristiques_market_place = $em->getRepository(ArticleMarketPlaceCaracteristique::class);
$repo_caracteristiques = $em->getRepository(Caracteristiques::class);
$repo_article_market_place = $em->getRepository(ArticleMarketPlace::class);
$repo_article = $em->getRepository(Article::class);
$repo_compte_market_place = $em->getRepository(CompteMarketPlace::class);
$get = $request->query->all();
$articleMarketPlaceCaracteristique = "";
$article = "";
$annonce = "";
$objetTrouve = false;
$caracteristique = $repo_caracteristiques->find($get["idCarac"]);
if ($get["dataAnnonce"] != "") {
$article = $repo_article_market_place->find($get["dataAnnonce"]);
if (is_object($article)) {
$articleMarketPlaceCaracteristique = $repo_caracteristiques_market_place->findOneBy(["articleMarketPlace" => $article, "caracteristique" => $caracteristique]);
if ( ! is_object($articleMarketPlaceCaracteristique)) {
$articleMarketPlaceCaracteristique = new ArticleMarketPlaceCaracteristique();
$articleMarketPlaceCaracteristique->setCaracteristique($caracteristique);
}
$articleMarketPlaceCaracteristique->setArticleMarketPlace($article);
$articleMarketPlaceCaracteristique->setValeur($get["valeur"]);
$em->persist($articleMarketPlaceCaracteristique);
$em->flush();
}
} elseif ($get["dataArticle"] != "") {
$article = $repo_article->find($get["dataArticle"]);
if (is_object($article)) {
$articleMarketPlaceCaracteristique = $repo_caracteristiques_market_place->findOneBy(["article" => $article, "caracteristique" => $caracteristique]);
if ( ! is_object($articleMarketPlaceCaracteristique)) {
$articleMarketPlaceCaracteristique = new ArticleMarketPlaceCaracteristique();
$articleMarketPlaceCaracteristique->setCaracteristique($caracteristique);
}
$articleMarketPlaceCaracteristique->setArticle($article);
$articleMarketPlaceCaracteristique->setValeur($get["valeur"]);
$em->persist($articleMarketPlaceCaracteristique);
$em->flush();
$compteMarketPlace = $repo_compte_market_place->findBy(["marketPlace" => ["4", "6"]]);
//$compteMarketPlace = $repo_compte_market_place->findBy(array("marketPlace"=>"4"));
if (count($compteMarketPlace) > 0) {
foreach ($compteMarketPlace as $compte) {
$annonces = $repo_article_market_place->findBy(["article" => $article, "compteMarketPlace" => $compte]);
if (count($annonces) > 0) {
foreach ($annonces as $an) {
//if($an->getCompteMarketPlace()->getMarketPlace()->getId() == "4" or $an->getCompteMarketPlace()->getMarketPlace()->getId() == "4" && $an->getIdImport() == NULL) {
if ($an->getCompteMarketPlace()->getMarketPlace()->getId() == "4" or $an->getCompteMarketPlace()->getMarketPlace()->getId() == "6") {
$articleMarketPlaceCaracteristiqueAnnonce = $repo_caracteristiques_market_place->findOneBy(
["articleMarketPlace" => $an, "caracteristique" => $caracteristique]
);
if ( ! is_object($articleMarketPlaceCaracteristiqueAnnonce)) {
//echo "RRRRR ".$an->getId();
$articleMarketPlaceCaracteristiqueAnnonce = new ArticleMarketPlaceCaracteristique();
$articleMarketPlaceCaracteristiqueAnnonce->setCaracteristique($caracteristique);
$articleMarketPlaceCaracteristiqueAnnonce->setArticleMarketPlace($an);
}
$articleMarketPlaceCaracteristiqueAnnonce->setValeur($articleMarketPlaceCaracteristique->getValeur());
$em->persist($articleMarketPlaceCaracteristiqueAnnonce);
}
}
}
}
$em->flush();
}
}
}
//print_r($get);
$response = new JsonResponse;
$response->setData([
'rendu' => "1",
]);
return $response;
}
/**
* @Route("/article/historique/{article}", name="dtc_article_historique")
*/
public function historiqueAction(Article $article, EntityManagerInterface $em, TranslatorInterface $translator)
{
$titre_modal = $translator->trans("Historique de l'article");
$articles = [];
$articles[] = $article;
//dump($commandes);
$historiques = $em->getRepository(HistoriqueArticle::class)->findBy(['article' => $articles], ['date' => 'DESC']);
$rendu = $this->renderView('Articles/Article/historique_article.html.twig', ['historiques' => $historiques]);
return new Response(json_encode(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal, 'width' => 900]));
}
}