<?php
namespace App\Controller\GestionComerciale;
use App\Entity\Email\Categorie;
use App\Entity\Email\Modele;
use App\Entity\FO\Parametrage;
use App\Entity\FO\Societe;
use App\Entity\Ged\Fichier;
use App\Entity\GestionComerciale\ArticleCommande;
use App\Entity\GestionComerciale\Commande;
use App\Entity\GestionComerciale\CommandeFournisseur;
use App\Entity\GestionComerciale\Fabrication;
use App\Entity\GestionComerciale\HistoriqueCommande;
use App\Entity\GestionComerciale\StatutCommande;
use App\Model\GestionCommerciale\TypeDocumentCommercial;
use App\Form\GestionComerciale\CommandeAdresseType;
use App\Form\GestionComerciale\CommandeTransporteurType;
use App\Form\GestionComerciale\CommandeType;
use App\Form\GestionComerciale\SupprimerCommandeType;
use App\Library\Datatable\Util\Datatable;
use App\Library\Uploader\Services\FileUploader;
use App\Security\Voter\EntityVoter;
use App\Service\Articles\ArticleService;
use App\Service\Fabrication\OqtonService;
use App\Service\FO\FOService;
use App\Service\GestionComerciale\AcompteService;
use App\Service\GestionComerciale\CommandeService;
use App\Service\GestionComerciale\EmailService;
use App\Service\Taxes\TaxeService;
use App\Service\Utilisateur\ColonneTableauService;
use Doctrine\ORM\EntityManagerInterface;
use JMS\Serializer\SerializerBuilder;
use Knp\Component\Pager\PaginatorInterface;
use Knp\Snappy\Pdf;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\DependencyInjection\Container;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
class CommandeController extends AbstractController
{
/**
* @Route("/vente/commande/nouveau", name="dtc_commande_ajouter")
*/
public function ajouterAction(Request $request, EntityManagerInterface $em, CommandeService $commandeService, TranslatorInterface $translator, ValidatorInterface $validator)
{
$commande = new Commande();
$user = $this->getUser();
$commande->setUtilisateur($user);
$form = $this->createForm(CommandeType::class, $commande);
$errors = "";
$forceQteDispo = $request->query->get('forceQteDispo');
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$commande->setDate(new \Datetime, true);
$em->persist($commande);
$em->flush();
//valeurRemiseEnEuros
$articles = [
'ids' => $request->request->get('ids'),
'remise' => $request->request->get('remise'),
'montantRemise' => $request->request->get('montantRemise'),
'commentaire' => $request->request->get('commentaire'),
'commentairePrive' => $request->request->get('commentairePrive'),
'libellesSecondaires' => $request->request->get('libellesSecondaires'),
'libelles' => $request->request->get('libelles'),
'tva' => $request->request->get('tva'),
'idsTva' => $request->request->get('idsTva'),
'remiseSuppl' => $request->request->get('remiseSuppl'),
'ecocontribution' => $request->request->get('ecocontribution'),
'prix' => $request->request->get('prix'),
//'fraisPortLigne'=>$request->request->get('fraisPortLigne'),
'qte' => $request->request->get('qte'),
'force' => $request->request->get('force'),
'qteDispo' => $request->request->get('qteDispo'),
'transporteurs' => $request->request->get('transporteurs'),
];
$valeurs = ["articles" => $articles, 'typeDocument' => 'commande', 'operation' => 'commande'];
if ($commande->getClient()->getReferenceClientObligatoire() == true && $commande->getReferenceClient() == '') {
$commandeService->sauvegarder($commande, $valeurs, false);
$this->addFlash(
'warning',
$translator->trans('La référence de commande client est obligatoire pour ce client!')
);
return $this->redirectToRoute('dtc_commande_modifier', ["id" => $commande->getId()]);
} else {
$commandeService->sauvegarder($commande, $valeurs);
$this->addFlash('notice', $translator->trans('Commande ajoutée avec succès !'));
return $this->redirectToRoute('dtc_commande_modifier', ["id" => $commande->getId(), 'forceQteDispo' => true]);
}
} else {
$errors = $validator->validate($commande);
}
}
return $this->render('GestionComerciale/Commande/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'forceQteDispo' => $forceQteDispo]);
}
/**
* @Route("/vente/commande/modifier/{id}", name="dtc_commande_modifier")
*/
public function modifierAction(Request $request, Commande $commande, EntityManagerInterface $em, CommandeService $commandeService,
TranslatorInterface $translator, ValidatorInterface $validator, AcompteService $serviceAcompte,OqtonService $oqtonService
) {
//echo '('.$commande->getLibelleLivraison().')';
//exit;
/*
$serviceNumerotation = $this->get('dtc.numerotationdocument');
$n = $serviceNumerotation->generer($commande);
echo $n;
*/
/*
13 Ordre de fabrication multiple
12 Facture fournisseur
11 Bon de préparation atelier
10 Devis OR
9 Ordre de fabrication
8 Commande fournisseur
7 Avoir
6 Facture
5 Bon de livraison
4 Bon de préparation
3 Ordre de réparation
2 Commande
1 Devis
*/
//$request = $request;
$tab = $request->query->get('tab');
if (is_int($commande->getTypeDocumentCommercial())) {
if ($commande->getTypeDocumentCommercial() != TypeDocumentCommercial::COMMANDE) {
if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::DEVIS) {
$url = "dtc_devis_modifier";
}
if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::BP) {
$url = "dtc_bon_preparation_modifier";
}
if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::BL) {
$url = "dtc_bon_livraison_modifier";
}
if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::FACTURE) {
$url = "dtc_facture_afficher";
}
if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::AVOIR) {
$url = "dtc_avoir_modifier";
}
if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::ORDREFABRICATION) {
$url = "dtc_ordre_reparation_modifier";
}
if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::DEVISOR) {
$url = "dtc_ordre_reparation_modifier";
}
if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::ORDREREPARATION) {
$url = "dtc_ordre_reparation_modifier";
}
return $this->redirectToRoute($url, ["id" => $commande->getId(), "tab" => $tab]);
}
}
$user = $this->getUser();
//if(is_object($user) && !empty($this->getParameter('utilisateur_site_internet')) && $user->getId() != $this->getParameter('utilisateur_site_internet')) $commande->setUtilisateur($user);
if (is_object($commande->getUtilisateur())
&& ! empty($this->getParameter('utilisateur_site_internet'))
&& $commande->getUtilisateur()->getId() == $this->getParameter('utilisateur_site_internet')) {
} else {
//if(!is_object($commande->getUtilisateur())) $commande->setUtilisateur($user);
}
$forceQteDispo = $request->query->get('forceQteDispo');
$form = $this->createForm(CommandeType::class, $commande);
$articles = [
'ids' => $request->request->get('ids'),
'prix' => $request->request->get('prix'),
'qte' => $request->request->get('qte'),
'force' => $request->request->get('force'),
];
$valeurs = ["articles" => $articles, 'operation' => 'commande'];
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($commandeService->estEditable($commande) or 1 == 1) {
$droit = $this->isGranted(EntityVoter::UPDATE, Commande::class);
if ( ! $droit) {
return $this->redirectToRoute('dtc_commande_modifier', ["id" => $commande->getId()]);
}
if ($form->isValid()) {
if ($request->request->get('facturer') != '') {
$valeurs["facturer"] = "1";
$facture = $commandeService->transformerCommandeEnFacture($commande);
$this->addFlash('notice', $translator->trans('Facture créée avec succès!'));
return $this->redirectToRoute('dtc_facture_afficher', ["id" => $facture->getId()]);
} elseif ($request->request->get('supprimer') == 'supprimer') {
$this->addFlash('notice', $translator->trans('Commande supprimée avec succès !'));
$commandeService->annulerCommande($commande);
if (is_object($commande->getClient())) {
$remboursement = $serviceAcompte->proposerRemboursement($commande->getClient());
}
return $this->redirectToRoute('dtc_commande_liste', []);
//return $this->redirectToRoute('dtc_commande_liste',array("r"=>$remboursement,"c"=>$commande->getClient()->getId()));
}
if ($request->request->get('commandeEnfant') != '') {
$commandeEnfant = $commandeService->creerCommandeEnfant($commande);
$this->addFlash('notice', $translator->trans('Commande enfant créée avec succès !'));
return $this->redirectToRoute('dtc_commande_modifier', ["id" => $commandeEnfant->getId()]);
}
$em->persist($commande);
$em->flush();
$operation = $request->request->get('operation');
$articles = [
'valider' => $request->request->get('valider'),
'ids' => $request->request->get('ids'),
'montantRemise' => $request->request->get('montantRemise'),
'remiseCalcule' => $request->request->get('remiseCalcule'),
'remise' => $request->request->get('remise'),
'commentaire' => $request->request->get('commentaire'),
'commentairePrive' => $request->request->get('commentairePrive'),
'remiseSuppl' => $request->request->get('remiseSuppl'),
'ecocontribution' => $request->request->get('ecocontribution'),
'prix' => $request->request->get('prix'),
//'fraisPortLigne'=>$request->request->get('fraisPortLigne'),
'libellesSecondaires' => $request->request->get('libellesSecondaires'),
'libelles' => $request->request->get('libelles'),
'tva' => $request->request->get('tva'),
'idsTva' => $request->request->get('idsTva'),
'qte' => $request->request->get('qte'),
'force' => $request->request->get('force'),
'commentaireSuppl' => $request->request->get('commentaireSuppl'),
'emplacement' => $request->request->get('emplacement'),
'nbEmplacement' => $request->request->get('nbEmplacement'),
'numero_serie' => $request->request->get('numero_serie'),
'duree_garantie' => $request->request->get('duree_garantie'),
'articlesCommandeRepris' => $request->request->get('articlesCommandeRepris'),
'idsArticleCommandeOrigine' => $request->request->get('idArticleCommandeOrigine'),
'articlesCommandeIds' => $request->request->get('articlesCommandeIds'),
'qteDispo' => $request->request->get('qteDispo'),
'transporteurs' => $request->request->get('transporteurs'),
'articlesCommandeAssocies' => $request->request->get('articlesCommandeAssocies'),
'tabPrixAchatNetEuros' => $request->request->get('tabPrixAchatNetEuros'),
'societe_livraison_txt' => $request->request->get('societe_livraison_txt'),
'numero_livraison_txt' => $request->request->get('numero_livraison_txt'),
'rue_livraison_txt' => $request->request->get('rue_livraison_txt'),
'complement_livraison_txt' => $request->request->get('complement_livraison_txt'),
'complement2_livraison_txt' => $request->request->get('complement2_livraison_txt'),
'cp_livraison_txt' => $request->request->get('cp_livraison_txt'),
'ville_livraison_txt' => $request->request->get('ville_livraison_txt'),
'pays_livraison_txt' => $request->request->get('pays_livraison_txt'),
'societe_facturation_txt' => $request->request->get('societe_facturation_txt'),
'numero_facturation_txt' => $request->request->get('numero_facturation_txt'),
'rue_facturation_txt' => $request->request->get('rue_facturation_txt'),
'complement_facturation_txt' => $request->request->get('complement_facturation_txt'),
'complement2_facturation_txt' => $request->request->get('complement2_facturation_txt'),
'cp_facturation_txt' => $request->request->get('cp_facturation_txt'),
'ville_facturation_txt' => $request->request->get('ville_facturation_txt'),
'pays_facturation_txt' => $request->request->get('pays_facturation_txt'),
'kilometrage' => $request->request->get('kilometrage'),
'dateCT' => $request->request->get('dateCT'),
'referencesArticle' => $request->request->get('referencesArticle'),
];
$valeurs = ["articles" => $articles, 'typeDocument' => 'commande', 'operation' => 'commande'];
if ($request->request->get('facturer') != '') {
$valeurs = ["articles" => $articles, 'typeDocument' => 'commande', 'operation' => 'facturer_v2'];
//On s'assure qu'il n'existe pas deja une facture pour cette commande
/*
$totalFactureTmp = $commandeService->getTotalFacture($commande);
$totalAvoirTmp = $commandeService->getTotalAvoir($commande);
if($totalFactureTmp > 0 or $totalAvoirTmp > 0) {
$this->addFlash('warning',$translator->trans('Impossible de facturer, il existe déjà une facture !'));
return $this->redirectToRoute('dtc_commande_modifier',array("id"=>$commande->getId()));
}
*/
$factures = $em->getRepository(Commande::class)->getFacturesEtAvoirsByCommande($commande);
$totalTmp = $commande->getTotalTtc();
foreach ($factures as $facture) {
$totalTmp -= $facture->getTotalTtc();
}
if (($commande->getTotalTtc() > 0 && $totalTmp <= 0) || ($commande->getTotalTtc() < 0 && $totalTmp >= 0)) {
$this->addFlash('warning', $translator->trans('Impossible de facturer, il existe déjà une facture !'));
return $this->redirectToRoute('dtc_commande_modifier', ["id" => $commande->getId()]);
}
}
if ($request->isXmlHttpRequest()) {
$commandeService->sauvegarder($commande, $valeurs, false, false);
if ( ! in_array($request->request->get('declencheur'), ['supprimer-row-article'])) {
$commandeService->creerHistorique($commande, $request->request->get('declencheur'));
}
return new JsonResponse(['data' => 1, 'date' => (new \Datetime)->format('d/m/Y à H:i')]);
}
//$commandeService->sauvegarder($commande,$valeurs);
$commandeService->sauvegarder($commande, $valeurs, $email = false, $creerBonAuto = false);
//return $this->render('GestionComerciale/Commande/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'commande'=>$commande,"ouvrir"=>$request->request->get('actionPrecedente'), 'forceQteDispo'=>$forceQteDispo));
if ($request->request->get('facturer') != '') {
$this->addFlash('notice', $translator->trans('Facture sauvegardée avec succès !'));
$repo_statut_document = $em->getRepository(StatutCommande::class);
//$liste_statut = $repo_statut_document->findOneBy(array("documentCommercial"=>6,"ordre"=>array(1)));
$liste_statut = $repo_statut_document->findById([19, 21, 22]);
$typesFac = [6,7];
$repo_fac = $em->getRepository(Commande::class);
$reliquats = false;
foreach ($commande->getArticleCommande() as $ac) {
if ($ac->getRalClient() != 0) {
$reliquats = true;
break;
}
}
$facture = $repo_fac->findBy(["commande" => $commande, "typeDocumentCommercial" => $typesFac, "visible" => 1], ['id' => 'DESC'], 1, 0);
$temp_type_document_commercial = "";
foreach ($facture as $f) {
$temp_id_fac = $f->getId();
$temp_type_document_commercial = $f->getTypeDocumentCommercial();
}
//return $this->render('GestionComerciale/Commande/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'commande'=>$commande,"ouvrir"=>$request->request->get('actionPrecedente'), 'forceQteDispo'=>$forceQteDispo));
if (is_object($temp_type_document_commercial) && $temp_type_document_commercial->getId() == 6) {
return $this->redirectToRoute('dtc_facture_afficher', ["id" => $temp_id_fac, 'reliquats' => $reliquats]);
} else {
return $this->redirectToRoute('dtc_avoir_modifier', ["id" => $temp_id_fac, 'reliquats' => $reliquats]);
}
}
$commandeService->changeDateExpeditionTheoriqueCommandeProcess($commande);
if ($commande->getClient()->getReferenceClientObligatoire() == true && $commande->getReferenceClient() == '') {
/*$this->addFlash(
'warning',
$translator->trans('La référence de commande client est obligatoire pour ce client!')
);
*/
} else {
// $oqtonService->sendOrder($commande);
$this->addFlash('notice', $translator->trans('Commande sauvegardée avec succès !'));
}
$commandeService->creerHistorique($commande, 2);
return $this->redirectToRoute('dtc_commande_modifier', ["id" => $commande->getId(), 'forceQteDispo' => true]);
} else {
$errors = $validator->validate($commande);
}
} else {
$paiement = $commande->getStatutPaiement();
$em->refresh($commande);
$commande->setStatutPaiement($paiement);
$em->persist($commande);
$em->flush();
$this->addFlash('notice', $translator->trans('Statut du paiement de la commande modifié avec succès !'));
/*
$this->addFlash(
'warning',
"La commande n'est plus éditable ! "
);
*/
//return $this->redirectToRoute('dtc_commande_modifier',array("id"=>$commande->getId()));
}
}
return $this->render(
'GestionComerciale/Commande/ajouter.html.twig',
[
'form' => $form->createView(),
'errors' => $errors,
'commande' => $commande,
"ouvrir" => $request->request->get('actionPrecedente'),
'forceQteDispo' => $forceQteDispo,
]
);
}
/**
* @Route("/vente/commande/supprimer/multiple", name="dtc_commande_liste_supprimer")
*/
public function supprimerMultipleAction(Request $request, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$url = $this->generateUrl('dtc_commande_liste', []);
return new JsonResponse(['url' => $url, 'valide' => '1']);
$data = $request->get('dataTables');
$ids = $data['actions'];
$repo = $em->getRepository(Commande::class);
for ($i = 0; $i < count($ids); $i++) {
$v = $repo->find($ids[$i]);
if (is_object($v)) {
$em->remove($v);
}
}
$em->flush();
$this->addFlash(
'notice',
$translator->trans('Commande supprimée avec succès !')
);
$url = $this->generateUrl('dtc_commande_liste', []);
return new JsonResponse(['url' => $url, 'valide' => '1']);
}
/**
* @Route("/vente/commande/supprimer/{id}", name="dtc_commande_supprimer")
*/
public function supprimerAction(Request $request, Commande $commande, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$titre_modal = $translator->trans("Demande de confirmation");
$user = $this->getUser();
$form = $this->createForm(SupprimerCommandeType::class, $commande);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$em->remove($commande);
$em->flush();
$this->addFlash(
'notice',
$translator->trans('Commande supprimée avec succès !')
);
$url = $this->generateUrl('dtc_commande_liste', []);
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
} else {
$errors = $validator->validate($commande);
$rendu = $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'id' => $commande->getId(), 'type' => '']);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
$rendu = $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'id' => $commande->getId(), 'type' => '', 'errors' => $errors]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
private function reorderArray($array, $ordres)
{
$arrayTmp = [];
foreach ($ordres as $ordre) {
foreach ($array as $statut) {
if ($statut->getOrdre() == $ordre) {
$arrayTmp[] = $statut;
}
}
}
return $arrayTmp;
}
/**
* @Route("/vente/commande", name="dtc_commande_liste")
*/
public function listerAction(Request $request, EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator, ColonneTableauService $serviceColonneTableau)
{
$typeDocumentCommercial = TypeDocumentCommercial::COMMANDE;
$statuts = $em->getRepository(StatutCommande::class)->findBy([
'documentCommercial' => $typeDocumentCommercial,
], ['ordre' => 'ASC']);
$typeDocumentCommercial = TypeDocumentCommercial::BP;
$statutsBP = $em->getRepository(StatutCommande::class)->findBy([
'documentCommercial' => $typeDocumentCommercial,
], ['ordre' => 'ASC']);
$statuts = $this->reorderArray($statuts, [11, 0, 2, 1, 3, 4, 5, 10, 8, 9, 12, 13, 39, 40,14]);
$statutsBP = $this->reorderArray($statutsBP, [1, 2, 12, 3, 10, 13, 11, 4, 9999]);
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [0],
"visible" => true,
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [1],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "id"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id text-center",
"targets" => [2],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "date"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [3],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "reference"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [4],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "referenceCommandeClient"),
];
/*
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [4],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "origine"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [5],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "refclient"),
];
*/
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [5],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "nomClient"),
];
/*
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [7],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "libelleLivraison"),
];
//$tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(7),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"prenomClient"));
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [8],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "telephone"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [9],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "adresse1"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [10],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "adresse2"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [11],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "ville"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [12],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "codePostal"),
];
*/
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id text-right",
"targets" => [6],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "totalHT"),
];
/*
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id text-right",
"targets" => [14],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Commande::class, "totaTTC"),
];
*/
$tableau_class_cellule[] = ["orderable" => false, "className" => "colonne_id", "targets" => [7], "visible" => true];
/*
$tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(4),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"refclient"));
$tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(5),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"client"));
$tableau_class_cellule[]=array("className"=>"visible_export somme colonne_id text-right","targets"=>array(6),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"totalHT"));
$tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(6),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"commentaire"));
$tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(7),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"dateBon"));
$tableau_class_cellule[]=array("className"=>"visible_export colonne_id text-center","targets"=>array(8),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"refCli"));
$tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(9),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"commercial"));
$tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(10),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"assistanteCommerciale"));
$tableau_class_cellule[]=array("className"=>"visible_export colonne_id text-center","targets"=>array(11),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"dateReceptionFournisseur"));
$tableau_class_cellule[]=array("className"=>"visible_export colonne_id text-center","targets"=>array(12),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"dateLivraisonSouhaitee"));
$tableau_class_cellule[]=array("className"=>"visible_export colonne_id text-center","targets"=>array(13),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"dateExpeditionTheorique"));
$tableau_class_cellule[]=array("className"=>"visible_export colonne_id text-center","targets"=>array(14),"visible"=>$serviceColonneTableau->getColonneUtilisateur(Commande::class,"Statut"));
*/
$response = new Response();
$this->datatable($request, $em, $datatable, $translator, $response);
$param = $request->query->all();
return $this->render('GestionComerciale/Commande/lister.html.twig', [
'parametres' => $param,
'tableauClassColonne' => $tableau_class_cellule,
'statuts' => $statuts,
'statutsBP' => $statutsBP,
]
, $response);
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatable(Request $request, EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
$param = $request->query->all();
$datatable
->setDatatableId('liste_commande')
->setEntity(Commande::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Date") => 'x.date',
$translator->trans("Réf") => 'x.reference',
$translator->trans("Réf cmd client") => 'x.referenceClient',
/*
$translator->trans("Origine") => 'cmp.libelle',
$translator->trans("Réf Client") => 'c.reference',
*/
$translator->trans("Client") => 'x.nom',
/*
$translator->trans("Société / Nom") => 'x.libelleLivraison',
$translator->trans("Tél") => 'x.telephone',
$translator->trans("Adresse 1") => 'x.complementLivraison',
$translator->trans("Adresse 2") => 'x.complementLivraison2',
$translator->trans("Ville") => 'x.villeLivraisonTxt',
$translator->trans("Code postal") => 'x.codePostalLivraisonTxt',
*/
$translator->trans("Total HT") => 'x.total',
/*
$translator->trans("Total TTC") => 'x.totalTtc',
*/
$translator->trans("Statut") => 's.libelle',
//$translator->trans("Transporteur") => 'tr.libelle',
/*
$translator->trans("Comm") => 'x.commentaire',
$translator->trans("Date Prep") => 'x.dateBon',
$translator->trans("Réf cmde cli") => 'x.referenceClient',
$translator->trans("Commercial") => 'co.reference',
$translator->trans("Assistante commercial") => 'ac.reference',
$translator->trans("Date de réception fourn.") => 'x.dateReceptionFournisseur',
$translator->trans("Date liv. souhaitée") => 'x.dateLivraisonSouhaitee',
//$translator->trans("Date liv. théorique") => 'x.dateLivraisonTheorique',
$translator->trans("Date exp. théorique") => 'x.dateExpeditionTheorique',
$translator->trans("Statut") => 's.libelle',
*/
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
/*
->addJoin('x.etatCommande', 'ec', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
//->addJoin('x.typeDocumentCommercial', 'td', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.utilisateur', 'u', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.assistanteCommercial', 'ac', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.commercial', 'co', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
*/
->addJoin('x.compteMarketPlace', 'cmp', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('cmp.marketPlace', 'mp', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.client', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.transporteur', 't', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.niveauUn', 'nu', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.transporteur', 'tr', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
1 => [
'view' => 'FO/DataTable/date.html.twig',
],
2 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_commande_modifier',
],
],
3 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_commande_modifier',
],
],
/*
5 => [
'view' => 'FO/DataTable/client-reference.html.twig',
'params' => [
'edit_route' => 'dtc_client_modifier',
'typeDocument' => 'client',
],
],
*/
4 => [
'view' => 'FO/DataTable/client.html.twig',
'params' => [
'edit_route' => 'dtc_client_modifier',
'typeDocument' => 'client',
],
],
/*
8 => [
'view' => 'FO/DataTable/telephone.html.twig',
'params' => [
'champ' => 'setTelephone',
'objet' => Commande::class,
],
],
*/
5 => [
'view' => 'FO/DataTable/prix_total_ht.html.twig',
],
/*
14 => [
'view' => 'FO/DataTable/prix_total_ttc.html.twig',
],
*/
7 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_document_commercial_modifier',
//'edit_adresse_commande_modal' => 'dtc_document_commercial_modifier_adresse_modal',
//'supprimer_route' => 'dtc_commande_supprimer',
'objet' => Commande::class,
'deplier' => true,
'table' => "liste_commande",
'download_export' => 'exportGedZip'
],
],
]
)
->setMultiple(
array(
'delete' => array(
'title' => 'ExportZip',
'route' => 'export__export_commandes_zip'
),
)
)
->setOrder("x.date desc, x.id", "desc")
//->setOrder("ec.ordre", "desc")
->setSearch(true)
->setSearchFields([2, 3, 4, 6]);
//$where = "x.typeDocumentCommercial = :typeDocumentCommercial and x.origineSaisie IN (:origineSaisie) AND x.visible=:visible";
//$where = "x.typeDocumentCommercial = :typeDocumentCommercial and x.origineSaisie IN (:origineSaisie) AND (x.visible=:visible OR x.visible=:visible OR (x.visible=0 AND x.dateBon>:dateActuelle)) ";
//$where = "x.typeDocumentCommercial = :typeDocumentCommercial and x.origineSaisie IN (:origineSaisie)";
$where = "x.typeDocumentCommercial = :typeDocumentCommercial";
//$parameters = array('typeDocumentCommercial' => TypeDocumentCommercial::COMMANDE,"visible"=>"1",'origineSaisie'=>array("commande","devis","bp"),"dateActuelle"=>date('Y-m-d H:i:s' ));
//$parameters = array('typeDocumentCommercial' => TypeDocumentCommercial::COMMANDE,'origineSaisie'=>array("commande","devis","bp"));
$parameters = ['typeDocumentCommercial' => TypeDocumentCommercial::COMMANDE];
$cookies = $request->cookies;
//print_r($cookies);
if ( ! empty($param['parametres']["acompte"]) and $param['parametres']["acompte"] != "") {
if ($param['parametres']["acompte"] == "oui") {
$datatable->addJoin('x.acomptes', 'acpte');
} elseif ($param['parametres']["acompte"] == "non") {
//sans acompte
$datatable->addJoin('x.acomptes', 'acpte', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN, 'with', 'acpte.commande = x.id');
$where .= " and acpte.id is null ";
}
}
$cmdes_internet = false;
if ( ! empty($param['parametres']["internet"]) and $param['parametres']["internet"] == "on") {
$cmdes_internet = true;
unset($param['parametres']["internet"]);
}
if (empty($param['parametres'])) {
//echo "AAA";
foreach ($cookies as $key => $cookie) {
$param['parametres'][$key] = $cookie;
}
if ($cmdes_internet) {
$param['parametres']["internet"] = "on";
}
} else {
if ($cmdes_internet) {
$param['parametres']["internet"] = "on";
}
//print_r($param['parametres']);
//exit;
}
if (array_key_exists('parametres', $param)) {
// print_r($param['parametres']);
$response = new Response();
if (array_key_exists('client', $param["parametres"]) and $param["parametres"]["client"] > 0) {
//$datatable->addJoin('x.client', 'client', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$parameters["client"] = $param["parametres"]["client"];
if ($where != "") {
$where .= " AND ";
}
$where .= "c.id = :client";
}
if (array_key_exists('client', $param["parametres"]) and $param["parametres"]["date_debut"] != "") {
$param["parametres"]["date_debut"] = \DateTime::createFromFormat('d/m/Y', $param["parametres"]["date_debut"]);
$param["parametres"]["date_debut"]->setTime(00, 00, 00);
$parameters["date_debut"] = $param["parametres"]["date_debut"];
if ($where != "") {
$where .= " AND ";
}
$where .= "x.date >= :date_debut";
}
if (array_key_exists('transporteur', $param["parametres"]) and $param["parametres"]["transporteur"] > 0) {
//$datatable->addJoin('x.client', 'client', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$parameters["transporteur"] = $param["parametres"]["transporteur"];
if ($where != "") {
$where .= " AND ";
}
$where .= "t.id = :transporteur";
}
if (array_key_exists('marketplace', $param["parametres"]) and $param["parametres"]["marketplace"] > 0) {
//$datatable->addJoin('x.client', 'client', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$parameters["marketplace"] = $param["parametres"]["marketplace"];
if ($where != "") {
$where .= " AND ";
}
$where .= "mp.id = :marketplace";
}
//if (array_key_exists('type_commande', $param["parametres"]) and $param["parametres"]["type_commande"] == "internet") {
if ($cmdes_internet) {
//$parameters["origine"]="prestashop";
if ($where != "") {
$where .= " AND ";
}
//$where .= "x.origine = :origine";
//$where .= "x.origine = :origine AND (x.valideManuellement = 0 OR x.valideManuellement IS NULL)";
$where .= "x.referenceMarketPlace is not null";
} elseif (array_key_exists('type_commande', $param["parametres"]) and $param["parametres"]["type_commande"] == "comptoir") {
//$parameters["origine"]="prestashop";
if ($where != "") {
$where .= " AND ";
}
$where .= "x.referenceMarketPlace is null";
} else {
if ($where != "") {
$where .= " AND ";
}
$where .= "x.referenceMarketPlace is null";
}
if (array_key_exists('valideManuellement', $param["parametres"]) and $param["parametres"]["valideManuellement"] == "on") {
if ($where != "") {
$where .= " AND ";
}
$where .= "x.valideManuellement = 1";
}
if (array_key_exists('client', $param["parametres"]) and $param["parametres"]["date_fin"] != "") {
$param["parametres"]["date_fin"] = \DateTime::createFromFormat('d/m/Y', $param["parametres"]["date_fin"]);
$param["parametres"]["date_fin"]->setTime(23, 59, 59);
$parameters["date_fin"] = $param["parametres"]["date_fin"];
if ($where != "") {
$where .= " AND ";
}
$where .= "x.date <= :date_fin";
}
//statut de commande
$typeDocumentCommercial = TypeDocumentCommercial::COMMANDE;
$statuts = $em->getRepository(StatutCommande::class)->findBy([
'documentCommercial' => $typeDocumentCommercial,
], ['ordre' => 'ASC']);
$statutIds = [];
foreach ($statuts as $statut) {
$key = $statut->getLibelleNettoye();
if (array_key_exists($key, $param["parametres"])) {
// echo "(AA:".$key.")";
$cookie = new Cookie($key, 'on', strtotime('now + 360 days'));
$response->headers->setCookie($cookie);
$statutIds[] = $statut->getId();
//$cookies = $request->cookies;
//print_r($cookies);
} else {
//echo "(BB:".$key.")";
$response->headers->clearCookie($key);
}
}
//echo "(CC)";
//exit;
//print_r($statutIds);
$au_moins_un_statut_cmde = false;
if (count($statutIds) > 0) {
$au_moins_un_statut_cmde = true;
if ($where != "") {
$where .= " AND ";
}
$where .= "(x.statutCommande IN (:statuts)";
$parameters['statuts'] = $statutIds;
}
//statut de BP
$typeDocumentCommercial = TypeDocumentCommercial::BP;
$statuts = $em->getRepository(StatutCommande::class)->findBy([
'documentCommercial' => $typeDocumentCommercial,
], ['ordre' => 'ASC']);
$statutIds = [];
foreach ($statuts as $statut) {
$key = $statut->getLibelleNettoye();
if (array_key_exists($key, $param["parametres"])) {
$cookie = new Cookie($key, 'on', strtotime('now + 360 days'));
$response->headers->setCookie($cookie);
$statutIds[] = $statut->getId();
} else {
$response->headers->clearCookie($key);
}
}
//print_r($statutIds);
if (count($statutIds) > 0 and 1!=1) {
$datatable->addJoin('x.bps', 'bp', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$datatable->setGroupBy('x.id');
if ($where != "" && $au_moins_un_statut_cmde) {
$where .= " OR ";
} elseif ($where != "") {
$where .= " AND ";
}
$where .= "bp.statutCommande IN (:statutsBP)";
$parameters['statutsBP'] = $statutIds;
}
if ($au_moins_un_statut_cmde) {
$where .= ")";
}
// $response->send();
$response->sendHeaders();
/*
if(array_key_exists('statut', $param["parametres"]) and $param["parametres"]["statut"] != "") {
if ($param["parametres"]["statut"] == 28){
$parameters["statutCommande"]=7;
if($where != "") $where .= " AND ";
$where .= "x.statutCommande != :statutCommande";
}else{
$parameters["statutCommande"]=$param["parametres"]["statut"];
if($where != "") $where .= " AND ";
$where .= "x.statutCommande = :statutCommande";
}
}
*/
} else {
/*
$parameters["statutCommande"]=7;
if($where != "") $where .= " AND ";
$where .= "x.statutCommande != :statutCommande";
*
*/
}
//echo $where;
//exit;
if ($where != '') {
//echo $where;
//print_r($parameters);
$datatable->setWhere($where, $parameters);
$qb = $datatable->getQueryBuilder()->getDoctrineQueryBuilder();
// print_r($qb->getQuery()->getSql());
}
return $datatable;
}
/**
* @Route("/vente/commande/grid", name="dtc_commande_liste_grid")
*/
public function gridAction(Request $request, EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatable($request, $em, $datatable, $translator)->execute();
}
/**
* @Route("/export/xls/fournisseur/{id}", name="dtc_export_fournisseur_xls")
*/
public function excelExportCommandeFournisseurAction(Request $request, CommandeFournisseur $commande, ArticleService $articleService
) {
$spreadsheet = new Spreadsheet();
$boucle = 1;
if (is_object($commande->getFournisseur())) {
$spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle, 'Fournisseur');
$spreadsheet->setActiveSheetIndex(0)->setCellValue('B'.$boucle, $commande->getFournisseur()->getReference().' : '.$commande->getFournisseur()->getLibelle());
$boucle++;
$boucle++;
}
$spreadsheet->setActiveSheetIndex(0)
->setCellValue('A'.$boucle, 'Ref')
->setCellValue('B'.$boucle, 'Ref fournisseur')
->setCellValue('C'.$boucle, 'Libellé')
->setCellValue('D'.$boucle, 'Libellé fournisseur')
->setCellValue('E'.$boucle, 'Qté mini')
->setCellValue('F'.$boucle, 'Qté maxi')
->setCellValue('G'.$boucle, 'RAL Client')
->setCellValue('H'.$boucle, 'RAL fournisseur')
->setCellValue('I'.$boucle, 'Qté stock cmdée')
->setCellValue('J'.$boucle, 'Qté')
->setCellValue('K'.$boucle, 'Unité achat')
->setCellValue('L'.$boucle, 'Prix achat U ')
->setCellValue('M'.$boucle, 'Prix HT')
->setCellValue('N'.$boucle, 'CC')
->setCellValue('O'.$boucle, 'Qté mini achat')
->setCellValue('P'.$boucle, 'Condit')
->setCellValue('Q'.$boucle, 'Tx remise')
->setCellValue('R'.$boucle, 'Tx remise supp')
->setCellValue('S'.$boucle, 'Fraix annexes')
->setCellValue('T'.$boucle, 'Montant HT')
->setCellValue('U'.$boucle, 'Total HT')
->setCellValue('V'.$boucle, 'CUMP')
->setCellValue('W'.$boucle, 'Stock');
$boucle++;
$poidsTotal = 0;
$nbProduits = 0;
if ($commande->getAvecTaxe()) {
$total_ttc = $commande->getTotalTtc();
} else {
$total_ttc = $commande->getTotal() + $commande->getTotalFraisPort();
}
foreach ($commande->getArticleCommande() as $ac) {
//echo "<div>RRR ". $ac->geId()."</div>";
$montantHT = $articleService->getPrixEncours($ac->getArticle(), $ac, '');
$poidsTotal += $ac->getArticle()->getPoids() * $ac->getQuantite();
$nbProduits += $ac->getQuantite();
$remiseInit = "";
if (is_object($ac->getRemiseInitial())) {
$remiseInit = $ac->getRemiseInitial()->getMontant();
}
$pump = $ac->getArticle()->getCpump() * $ac->getCommandeFournisseur()->getTauxChange();
if (is_object($ac->getConditionAchat())) {
$qsc = $ac->getQuantite() * $ac->getConditionAchat()->getConditionnement();
$prixAchatUnitaire = $ac->getPrixBase() / $ac->getConditionAchat()->getCoefficientConditionnement();
$cc = $ac->getConditionAchat()->getCoefficientConditionnement();
$qteminiachat = $ac->getConditionAchat()->getQuantite();
$condit = $ac->getConditionAchat()->getConditionnement();
$refFournisseur = $ac->getConditionAchat()->getReferenceFournisseur();
} else {
$qsc = $ac->getQuantite();
$prixAchatUnitaire = $ac->getPrixBase();
$cc = 1;
$qteminiachat = 1;
$condit = 1;
}
$prixFinal = $ac->getTotalHtV2() / $ac->getQuantite();
$totalHtFinal = $prixFinal * $ac->getQuantite();
$libelle = trim($ac->getLibelle())."\n".trim($ac->getLibelleSecondaire());
$spreadsheet->setActiveSheetIndex(0)
->setCellValue('A'.$boucle, $ac->getArticle()->getReference())
->setCellValue('B'.$boucle, $refFournisseur)
->setCellValue('C'.$boucle, $libelle)
->setCellValue('D'.$boucle, $ac->getLibelle())
->setCellValue('E'.$boucle, $ac->getArticle()->getSeuilMiniCommandeFournisseur())
->setCellValue('F'.$boucle, $ac->getArticle()->getSeuilMaxiCommandeFournisseur())
->setCellValue('G'.$boucle, $ac->getArticle()->getStockReserve())
->setCellValue('H'.$boucle, $ac->getArticle()->getRalFournisseur())
->setCellValue('I'.$boucle, $qsc)
->setCellValue('J'.$boucle, $ac->getQuantite())
->setCellValue('K'.$boucle, $ac->getArticle()->getUniteMesure())
->setCellValue('L'.$boucle, $prixAchatUnitaire)
->setCellValue('M'.$boucle, $totalHtFinal)
->setCellValue('N'.$boucle, $cc)
->setCellValue('O'.$boucle, $qteminiachat)
->setCellValue('P'.$boucle, $condit)
->setCellValue('Q'.$boucle, $ac->getRemise())
->setCellValue('R'.$boucle, $ac->getRemiseSupplementaire())
->setCellValue('S'.$boucle, $ac->getFraisAnnexes())
->setCellValue('T'.$boucle, $montantHT['prix'])
->setCellValue('U'.$boucle, $ac->getTotalHT())
->setCellValue('V'.$boucle, $pump)
->setCellValue('W'.$boucle, $ac->getArticle()->getStock());
//$spreadsheet->getActiveSheet()->getStyle('B'.$boucle)->getAlignment()->setWrapText(true);
$boucle++;
}
$boucle++;
$spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle, 'Poids total');
$spreadsheet->setActiveSheetIndex(0)->setCellValue('B'.$boucle, $poidsTotal);
$spreadsheet->setActiveSheetIndex(0)->setCellValue('G'.$boucle, 'Total HT');
$spreadsheet->setActiveSheetIndex(0)->setCellValue('H'.$boucle, $commande->getTotal());
$boucle++;
$spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle, 'Nombre de produits');
$spreadsheet->setActiveSheetIndex(0)->setCellValue('B'.$boucle, $nbProduits);
$spreadsheet->setActiveSheetIndex(0)->setCellValue('G'.$boucle, 'Total TTC');
$spreadsheet->setActiveSheetIndex(0)->setCellValue('H'.$boucle, $total_ttc);
$boucle++;
// Create your Office 2007 Excel (XLSX Format)
$writer = new Xlsx($spreadsheet);
// Create a Temporary file in the system
$fileName = $commande->getReference().'.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
// Create the excel file in the tmp directory of the system
$writer->save($temp_file);
// Return the excel file as an attachment
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
/**
* @Route("/export/xls/{id}", name="dtc_export_xls")
*/
public function excelExportAction(Request $request, Commande $commande, TaxeService $taxeService, ArticleService $articleService)
{
$spreadsheet = new Spreadsheet();
//$spreadsheet->getProperties()->setCreator("ERP DTC");
//->setLastModifiedBy("Giulio De Donato")
//->setTitle("Office 2005 XLSX Test Document")
//->setSubject("Office 2005 XLSX Test Document")
//->setDescription("Test document for Office 2005 XLSX, generated using PHP classes.")
//->setKeywords("office 2005 openxml php")
//->setCategory("Test result file");
$boucle = 1;
if (is_object($commande->getClient())) {
$spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle, 'Client');
$spreadsheet->setActiveSheetIndex(0)->setCellValue(
'B'.$boucle,
$commande->getClient()->getReference().' : '.$commande->getClient()->getPrenom().' '.$commande->getClient()->getNom()
);
$boucle++;
$boucle++;
}
$spreadsheet->setActiveSheetIndex(0)
->setCellValue('A'.$boucle, 'Ref')
->setCellValue('B'.$boucle, 'Libellé')
->setCellValue('C'.$boucle, 'Qtité')
->setCellValue('D'.$boucle, 'Prix HT')
->setCellValue('E'.$boucle, 'Remise')
->setCellValue('F'.$boucle, 'Remise suppl')
->setCellValue('G'.$boucle, 'Montant HT')
->setCellValue('H'.$boucle, 'Total HT');
$boucle++;
$poidsTotal = 0;
$nbProduits = 0;
if ($commande->getAvecTaxe()) {
$total_ttc = $commande->getTotalTtc();
} else {
$total_ttc = $commande->getTotal() + $commande->getTotalFraisPort();
}
foreach ($commande->getArticleCommande() as $ac) {
//echo "<div>RRR ". $ac->geId()."</div>";
$poidsTotal += $ac->getArticle()->getPoids() * $ac->getQuantite();
$nbProduits += $ac->getQuantite();
$remiseInit = "";
if (is_object($ac->getRemiseInitial())) {
$remiseInit = $ac->getRemiseInitial()->getMontant();
}
$prixFinal = $ac->getTotalHtV2() / $ac->getQuantite();
$totalHtFinal = $prixFinal * $ac->getQuantite();
$libelle = trim($ac->getLibelle())."\n".trim($ac->getLibelleSecondaire());
if ($ac->getArticle()->getDivers() == 1) {
$spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle, $ac->getArticle()->getReferenceClient());
} else {
$spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle, $ac->getArticle()->getReference());
}
$spreadsheet->setActiveSheetIndex(0)
->setCellValue('B'.$boucle, $libelle)
->setCellValue('C'.$boucle, $ac->getQuantite())
->setCellValue('D'.$boucle, $ac->getPrixBase())
->setCellValue('E'.$boucle, $ac->getRemise())
->setCellValue('F'.$boucle, $ac->getRemiseSupplementaire())
->setCellValue('G'.$boucle, $prixFinal)
->setCellValue('H'.$boucle, $totalHtFinal);
//$spreadsheet->getActiveSheet()->getStyle('B'.$boucle)->getAlignment()->setWrapText(true);
$boucle++;
}
$boucle++;
$spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle, 'Poids total');
$spreadsheet->setActiveSheetIndex(0)->setCellValue('B'.$boucle, $poidsTotal);
$spreadsheet->setActiveSheetIndex(0)->setCellValue('G'.$boucle, 'Total HT');
$spreadsheet->setActiveSheetIndex(0)->setCellValue('H'.$boucle, $commande->getTotal());
$boucle++;
$spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle, 'Nombre de produits');
$spreadsheet->setActiveSheetIndex(0)->setCellValue('B'.$boucle, $nbProduits);
$listeTaxes = $taxeService->listerTaxe();
$avecTaxe = $taxeService->recolterTva($commande);
foreach ($listeTaxes as $t) {
$totalTva = $articleService->getTotalTvaCommandeParTaux($commande, $t->getTaux());
if ($totalTva <= 0 or $avecTaxe == false) {
} else {
$spreadsheet->setActiveSheetIndex(0)->setCellValue('G'.$boucle, 'TVA '.$t->getTaux().'%');
$spreadsheet->setActiveSheetIndex(0)->setCellValue('H'.$boucle, $totalTva);
$boucle++;
}
}
if (is_object($commande->getTransporteur())) {
$spreadsheet->setActiveSheetIndex(0)->setCellValue('A'.$boucle, 'Transporteur');
$spreadsheet->setActiveSheetIndex(0)->setCellValue('B'.$boucle, $commande->getTransporteur()->getReference().' '.$commande->getTransporteur()->getLibelle());
}
if ($commande->getTotalFraisPort() > 0) {
$spreadsheet->setActiveSheetIndex(0)->setCellValue('G'.$boucle, 'Frais de port HT');
$spreadsheet->setActiveSheetIndex(0)->setCellValue('H'.$boucle, $commande->getTotalFraisPort());
$boucle++;
}
if ($commande->getFraisPortSupplementaire() > 0) {
$spreadsheet->setActiveSheetIndex(0)->setCellValue('G'.$boucle, 'Frais de port supplémentaire HT');
$spreadsheet->setActiveSheetIndex(0)->setCellValue('H'.$boucle, $commande->getFraisPortSupplementaire());
$boucle++;
}
if ($commande->getTotalFraisPort() > 0 or $commande->getFraisPortSupplementaire() > 0) {
$spreadsheet->setActiveSheetIndex(0)->setCellValue('G'.$boucle, 'TVA Frais de port');
$spreadsheet->setActiveSheetIndex(0)->setCellValue('H'.$boucle, $commande->getTotalTvaFraisPort());
$boucle++;
}
$spreadsheet->setActiveSheetIndex(0)->setCellValue('G'.$boucle, 'Total TTC');
$spreadsheet->setActiveSheetIndex(0)->setCellValue('H'.$boucle, $total_ttc);
$boucle++;
// Create your Office 2007 Excel (XLSX Format)
$writer = new Xlsx($spreadsheet);
// Create a Temporary file in the system
$fileName = $commande->getReference().'.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
// Create the excel file in the tmp directory of the system
$writer->save($temp_file);
// Return the excel file as an attachment
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
/**
* @Route("/export/{id}/zip", name="export__export_zip")
*/
public function zipExportAction(Commande $commande, Request $request, CommandeService $serviceCommande, EntityManagerInterface $em)
{
$retour = $serviceCommande->createZipFile($commande);
return $this->file($retour['zipFilePath'], $retour['fileName'], ResponseHeaderBag::DISPOSITION_INLINE);
$zip = new \ZipArchive();
$dir = '/uploads/ged/'.$commande->getDate()->format('Y/m/d/');
$dir = $serviceFO->createDirectoryPublic($dir);
$fileName = 'export_'.$commande->getReferenceClient().'.zip';
$zipFilePath = $dir.$fileName;
// Ouvrir le fichier ZIP existant
if ($zip->open($zipFilePath, \ZipArchive::CREATE | \ZipArchive::OVERWRITE) === TRUE) {
$files = [
$this->exportXls1Action($commande, true, $serviceFO),
$this->exportXls2Action($commande, true, $serviceFO),
$this->exportXls3Action($commande, true, $serviceFO),
];
foreach($files as $fileToAdd) {
if (file_exists($fileToAdd['path'])) {
$zip->addFile($fileToAdd['path'], $fileToAdd['filename']);
}
}
$zip->close();
$repo_fichier = $em->getRepository(Fichier::class);
$parent = $repo_fichier->findOneBy(["commande"=>$commande,"libelle"=>'Export']);
if(!is_object($parent)) {
$dossierCmd = $repo_fichier->findOneBy(["commande"=>$commande,"libelle"=>$commande->getReference()]);
$parent = new Fichier();
//$enfant2->setUtilisateur($user);
$parent->setType("dossier");
$parent->setRenomme(true);
$parent->setSupprimable(false);
$parent->setModifiable(false);
$parent->setCommande($commande);
if(is_object($dossierCmd)) $parent->setParent($dossierCmd);
$parent->setLibelle("Export");
$em->persist($parent);
//$em->flush();
}
$retourEnregistrerFichierGed = $serviceFO->enregistrerFichierGed($fileName, $commande->getDate(), '', [], 'zip', $parent, true);
return $this->file($zipFilePath, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
//echo "Les fichiers ont été ajoutés avec succès au fichier ZIP.";
} else {
//echo "Échec de l'ouverture du fichier ZIP.";
$this->addFlash('warning', "Échec de l'ouverture du fichier ZIP.");
return $this->redirectToRoute('dtc_commande_modifier', ['id' => $commande->getId()]);
}
}
/**
* @Route("/export/{id}/xls-1", name="export__export_xls_1")
*/
public function exportXls1Action(Commande $commande, $save = false, FOService $serviceFO)
{
$dir = '/uploads/ged/'.$commande->getDate()->format('Y/m/d/');
$dir = $serviceFO->createDirectoryPublic($dir);
$spreadsheet = new Spreadsheet();
//$spreadsheet->getProperties()->setCreator("ERP DTC");
//->setLastModifiedBy("Giulio De Donato")
//->setTitle("Office 2005 XLSX Test Document")
//->setSubject("Office 2005 XLSX Test Document")
//->setDescription("Test document for Office 2005 XLSX, generated using PHP classes.")
//->setKeywords("office 2005 openxml php")
//->setCategory("Test result file");
$boucle = 1;
$spreadsheet->setActiveSheetIndex(0);
$sheet = $spreadsheet->getActiveSheet();
$row = 1;
$colonnes = [
'magasin' => 'Nom du magasin',
'description' => 'Nom du support',
'reference' => 'IDCOM2U',
'largeur' => 'Largeur',
'hauteur' => 'Longueur',
'quantite' => 'Quantité',
'matiere' => 'Matière',
'recto/verso' => 'Recto/Verso',
'rainage' => 'Rainage',
'collage' => 'Collage',
'plastification' => 'Plastification',
'couture' => 'Couture',
'piqure' => 'Piqure',
'pliage' => 'Pliage',
'decoupe' => 'Découpe',
'accessoire' => 'Accessoire',
'totalHt' => 'PRIX TOTAL',
'destinatiare_nom' => 'Destinataire nom',
'donneur_ordre_nom' => 'Donneur d\'ordre nom',
'date_reception_souhaitee' => 'Date reception souhaitee'
];
$letters = range('A', 'Z');
$colonneIndex = 0;
foreach($colonnes as $k => $colonne){
$sheet->setCellValue($letters[$colonneIndex].$row, $colonne);
$colonneIndex++;
}
$donneesImportees = $commande->getDonneesImportees();
if(array_key_exists('lignes_commande', $donneesImportees) && count($donneesImportees['lignes_commande'])){
foreach($donneesImportees['lignes_commande'] as $ligne){
$row++;
$colonneIndex = 0;
foreach($colonnes as $k => $colonne){
if(array_key_exists($k, $ligne)){
$sheet->setCellValue($letters[$colonneIndex].$row, $ligne[$k]);
}
$colonneIndex++;
}
}
}
// Create your Office 2007 Excel (XLSX Format)
$writer = new Xlsx($spreadsheet);
if($save){
$filename = 'export_'.$commande->getReferenceClient().'_1.xlsx';
$temp_file = $dir.$filename;
$writer->save($temp_file);
return ['path' => $temp_file, 'filename' => $filename];
} else {
// Create a Temporary file in the system
$fileName = $commande->getReference().'_1.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
// Create the excel file in the tmp directory of the system
$writer->save($temp_file);
// Return the excel file as an attachment
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
}
/**
* @Route("/export/{id}/xls-2", name="export__export_xls_2")
*/
public function exportXls2Action(Commande $commande, $save = false, FOService $serviceFO)
{
$refClient = '';
if(is_object($commande->getClient())) $refClient = $commande->getClient()->getReference();
$dir = '/uploads/ged/'.$commande->getDate()->format('Y/m/d/');
$dir = $serviceFO->createDirectoryPublic($dir);
$spreadsheet = new Spreadsheet();
//$spreadsheet->getProperties()->setCreator("ERP DTC");
//->setLastModifiedBy("Giulio De Donato")
//->setTitle("Office 2005 XLSX Test Document")
//->setSubject("Office 2005 XLSX Test Document")
//->setDescription("Test document for Office 2005 XLSX, generated using PHP classes.")
//->setKeywords("office 2005 openxml php")
//->setCategory("Test result file");
$boucle = 1;
$spreadsheet->setActiveSheetIndex(0);
$sheet = $spreadsheet->getActiveSheet();
$row = 1;
$sheet->setCellValue('A1', 'Commentaires');
$row++;
$colonnes = ['referenceClient'=>'N° client', 'reference'=>'Standard', 'largeur'=>'largeur', 'hauteur'=>'hauteur', 'quantite'=>'Quantité','description'=>'Description', 'pdf_id'=>'ID PDF', 'matiere' => 'Nom de la matière'];
$letters = range('A', 'Z');
$colonneIndex = 0;
foreach($colonnes as $k => $colonne){
$sheet->setCellValue($letters[$colonneIndex].$row, $colonne);
$colonneIndex++;
}
$donneesImportees = $commande->getDonneesImportees();
if(array_key_exists('lignes_commande', $donneesImportees) && count($donneesImportees['lignes_commande'])){
foreach($donneesImportees['lignes_commande'] as $ligne){
$row++;
$colonneIndex = 0;
foreach($colonnes as $k => $colonne){
if(array_key_exists($k, $ligne)){
$sheet->setCellValue($letters[$colonneIndex].$row, $ligne[$k]);
}
$colonneIndex++;
}
$sheet->setCellValue('A'.$row, $refClient);
}
}
// Create your Office 2007 Excel (XLSX Format)
$writer = new Xlsx($spreadsheet);
if($save){
$filename = 'export_'.$commande->getReferenceClient().'_2.xlsx';
$temp_file = $dir.$filename;
$writer->save($temp_file);
return ['path' => $temp_file, 'filename' => $filename];
} else {
// Create a Temporary file in the system
$fileName = $commande->getReference().'_2.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
// Create the excel file in the tmp directory of the system
$writer->save($temp_file);
// Return the excel file as an attachment
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
}
/**
* @Route("/export/{id}/xls-2", name="export__export_xls_2")
*/
public function exportXls3Action(Commande $commande, $save = false, FOService $serviceFO)
{
$refClient = '';
if(is_object($commande->getClient())) $refClient = $commande->getClient()->getReference();
$dir = '/uploads/ged/'.$commande->getDate()->format('Y/m/d/');
$dir = $serviceFO->createDirectoryPublic($dir);
$spreadsheet = new Spreadsheet();
//$spreadsheet->getProperties()->setCreator("ERP DTC");
//->setLastModifiedBy("Giulio De Donato")
//->setTitle("Office 2005 XLSX Test Document")
//->setSubject("Office 2005 XLSX Test Document")
//->setDescription("Test document for Office 2005 XLSX, generated using PHP classes.")
//->setKeywords("office 2005 openxml php")
//->setCategory("Test result file");
$boucle = 1;
$spreadsheet->setActiveSheetIndex(0);
$sheet = $spreadsheet->getActiveSheet();
$row = 1;
$sheet->setCellValue('A1', 'Commentaires');
$row++;
$colonnes = ['referenceClient'=>'N° client', 'reference'=>'Standard', 'largeur'=>'largeur', 'hauteur'=>'hauteur', 'quantite'=>'Quantité','description'=>'Description', 'pdf_id'=>'ID PDF', 'matiere' => 'Nom de la matière'];
$letters = range('A', 'Z');
$colonneIndex = 0;
foreach($colonnes as $k => $colonne){
$sheet->setCellValue($letters[$colonneIndex].$row, $colonne);
$colonneIndex++;
}
$donneesImportees = $commande->getDonneesImportees();
if(array_key_exists('lignes_commande', $donneesImportees) && count($donneesImportees['lignes_commande'])){
$lines = [];
foreach($donneesImportees['lignes_commande'] as $ligne){
$keyRegroupement = $ligne['reference'];
if(array_key_exists($keyRegroupement, $lines)){
$lines[$keyRegroupement]['quantite'] += $ligne['quantite'];
} else {
$lines[$keyRegroupement] = $ligne;
}
}
foreach($lines as $ligne){
$row++;
$colonneIndex = 0;
foreach($colonnes as $k => $colonne){
if(array_key_exists($k, $ligne)){
$sheet->setCellValue($letters[$colonneIndex].$row, $ligne[$k]);
}
$colonneIndex++;
}
$sheet->setCellValue('A'.$row, $refClient);
}
}
// Create your Office 2007 Excel (XLSX Format)
$writer = new Xlsx($spreadsheet);
if($save){
$filename = 'export_'.$commande->getReferenceClient().'_3.xlsx';
$temp_file = $dir.$filename;
$writer->save($temp_file);
return ['path' => $temp_file, 'filename' => $filename];
} else {
// Create a Temporary file in the system
$fileName = $commande->getReference().'_3.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
// Create the excel file in the tmp directory of the system
$writer->save($temp_file);
// Return the excel file as an attachment
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
}
/**
* @Route("/vente/commande/pdf/{id}", name="dtc_commande_pdf")
*/
public function pdfCommandeAction(Request $request, Commande $commande, $retour = true, CommandeService $service)
{
/*
$societe = $em->getRepository('DTCFOBundle:Societe')->find(1);
$chemin_pdf = 'PDF/COMMANDES/CMDE-'.$commande->getReference().'.pdf';
if(file_exists($chemin_pdf)) unlink($chemin_pdf);
$footer = $this->renderView('FO/PDF/footer_pagination_pdf.html.twig', array('societe' => $societe));
$header = $this->renderView('FO/PDF/header_commande_pdf.html.twig', array('societe' => $societe,'commande' => $commande));
$snappy = $this->get('knp_snappy.pdf');
$snappy->setOption('header-html',$header);
$snappy->setOption('footer-html',$footer);
$snappy->setOption('margin-bottom',"10");
$snappy->generateFromHtml(
$this->renderView(
'GestionComerciale/Commande/template_pdf.html.twig',
array(
'commande' => $commande,
'societe' => $societe
)
),
$chemin_pdf
);
*
*/
$versionClient = $request->query->get('client');
$retour = $service->pdf($commande, [], $versionClient);
$chemin_pdf = $retour['chemin'];
if ($retour == true) {
return $this->render('FO/PDF/conteneur_pdf.html.twig', [
'objet' => $commande,
'chemin_pdf' => '/'.$chemin_pdf,
'visualiser' => 'visualiser',
]);
}
}
/**
* @Route("/vente/commande-reliquats/pdf/{id}", name="dtc_commande_reliquats_pdf")
*/
public function pdfCommandeReliquatsAction(Request $request, Commande $commande, EntityManagerInterface $em, Pdf $snappy)
{
$societe = $em->getRepository(Societe::class)->find(1);
$chemin_pdf = 'PDF/COMMANDES/CMDE-reliquats-'.$commande->getReference().'.pdf';
if (file_exists($chemin_pdf)) {
unlink($chemin_pdf);
}
$footer = $this->renderView('FO/PDF/footer_pagination_pdf.html.twig', ['societe' => $societe]);
$header = $this->renderView('FO/PDF/header_commande_pdf.html.twig', ['societe' => $societe, 'commande' => $commande]);
$snappy->setOption('header-html', $header);
$snappy->setOption('footer-html', $footer);
$snappy->setOption('margin-bottom', "10");
$snappy->generateFromHtml(
$this->renderView(
'GestionComerciale/Commande/template-reliquats-pdf.html.twig',
[
'commande' => $commande,
'societe' => $societe,
]
),
$chemin_pdf
);
return $this->render('FO/PDF/conteneur_pdf.html.twig', [
'objet' => $commande,
'chemin_pdf' => '/'.$chemin_pdf,
'visualiser' => 'visualiser',
]);
}
/**
* @Route("", name="")
*/
public function imprimerMultipleAction(Request $request, EntityManagerInterface $em)
{
$data = $request->get('dataTables');
$ids = $data['actions'];
$tableauPdf = [];
$date_Y = date("Y");
$date_M = date("m");
$date_D = date("d");
$date = $date_Y.'/'.$date_M.'/'.$date_D;
$pdfRelier = 'PDF/COMMANDES/'.$date / '/CMDE-'.date('d-m-Y').'.pdf';
//$ids = array("118","101","93");
for ($i = 0; $i < count($ids); $i++) {
$repo = $em->getRepository(Commande::class);
$bon = $repo->find($ids[$i]);
if (is_object($bon)) {
$this->pdfBonPreparationAction($bon, false);
$tableauPdf[] = $chemin_pdf = 'PDF/COMMANDES/CMDE-'.$bon->getReference().'.pdf';
}
}
$cmd = "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$pdfRelier ";
foreach ($tableauPdf as $file) {
$cmd .= $file." ";
}
$result = shell_exec($cmd);
return new JsonResponse(['target' => '_blank', 'url' => '/'.$pdfRelier, 'valide' => '1']);
}
/**
* @Route("/test/{id}", name="dtc_test")
*/
public function testAction(Request $request, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
//echo "<div>".$commande->getId()."</div>";
// ask the service for a Excel5
/*$repoRemise = $em->getRepository('DTCRemisesBundle:Remise');
$repoArticle = $em->getRepository('DTCArticlesBundle:Article');
$article = $repoArticle->find(1209622);
$a = array();
$a['article']=$article;
$a['libelle']=$article->getLibelle();
$a['libelleSecondaire']=$article->getLibelleSecondaire();
$a['commentaire']="";
$a['remise']="0";
$a['totalHt']=$article->getPrixVente();
$a['totalHtV2']=$article->getPrixVente();
$repoClient = $em->getRepository('DTCClientsBundle:Client');
$client = $repoClient->find(53);
$serviceArticle = $this->get('dtc.article');
$t = $serviceArticle->getRemiseCategorieClient($a,$client,$montantTotal='0',$prix='100');
print_r($t);
//{% set donneesRemiseCategorie = dtc_article.getRemiseCategorieClient(a,client,montantTotal,donneesPrix.prix) %}
return new Response('<div style="margin-top:30px;">Hello world!</div>');
*/
}
/**
* @Route("", name="")
*/
public function emailEnvoyerOldAction(Request $request, Commande $commande, TranslatorInterface $translator, EmailService $emailService)
{
$errors = $emailService->envoyerEmail($commande);
if ($errors == '') {
$this->addFlash(
'notice',
$translator->trans('Email envoyé avec succès !')
);
} else {
$this->addFlash(
'warning',
$errors
);
}
$rendu = $this->renderView('layout-errors.html.twig');
return new JsonResponse(['rendu' => $rendu, 'errors' => $errors]);
}
/**
* @Route("/vente/commande/{id}/email/envoyer", name="dtc_commande_email_envoyer")
*/
public function emailEnvoyerAction(Request $request, Commande $commande, EntityManagerInterface $em, TranslatorInterface $translator, CommandeService $service,
EmailService $emailService, FileUploader $fileUploader
) {
$titre_modal = $translator->trans("Nouvel e-mail");
$errors = '';
if ($request->isMethod('POST')) {
$post = $request->request->all();
$destinataires_mails = [];
$destinataires_mails = $request->request->get("destinataires");
$avecValidation = false;
if (array_key_exists('email_envoi_boolean', $post) && $post["email_envoi_boolean"] == "1") {
$avecValidation = true;
$destinataires_mails = $post["destinataires"];
$destinataires_mails_valide = [];
if (count($destinataires_mails) > 0) {
foreach ($destinataires_mails as $destinataire) {
$tableau_destinataire_explode = explode('|||', $destinataire);
if (filter_var($tableau_destinataire_explode[0], FILTER_VALIDATE_EMAIL)) {
$destinataires_mails_valide[] = $tableau_destinataire_explode;
}
}
}
} else {
$destinataires_mails_valide = [];
if (count($destinataires_mails) > 0) {
foreach ($destinataires_mails as $destinataire) {
$tableau_destinataire_explode = explode('|||', $destinataire);
$destinataires_mails_valide[] = $tableau_destinataire_explode[0];
}
}
}
$donnees = [
'titre' => $request->request->get('titre'),
'nomFichier' => $request->request->get('nomFichier'),
'cheminPDF' => $request->request->get('cheminPDF'),
'message' => $request->request->get('message'),
'destinataires' => $destinataires_mails_valide,
'images' => $request->request->get('images'),
'documents' => $request->request->get('documents'),
'validation' => $avecValidation,
];
if ($avecValidation) {
$errors = $emailService->envoyerEmailDevisValidation($commande, $donnees);
} else {
$errors = $emailService->envoyerEmail($commande, $donnees);
}
if ($errors == '') {
$this->addFlash('notice', $translator->trans('Email(s) envoyé(s) avec succès !'));
} else {
$this->addFlash('warning', $errors);
}
$url = $request->request->get('url');
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url, 'errors' => $errors]);
} else {
$fileUploader->removeFiles(['folder' => 'emails/tmp/'.$commande->getId()]);
$retour = $service->pdf($commande, [], 'true');
$emails = [];
//$emails = array($commande->getClient());
$emailsPD = null;
if (is_object($commande->getClient()) && is_object($commande->getClient()->getContacts())) {
if (is_object($commande->getContactLivraison()) && ! empty($commande->getContactLivraison()->getEmail())) {
$emailsPD[] = $commande->getContactLivraison();
}
foreach ($commande->getClient()->getContacts() as $contact) {
if ( ! empty($contact->getEmail())) {
if ($contact->getFacturationExpeditionDefaut() == true && is_int($commande->getTypeDocumentCommercial()) && in_array(
$commande->getTypeDocumentCommercial(),
[6, 7]
)) {
//$emailsPD[] = $contact;
$emailsPD = [$contact];
} /*
else if($contact->getDefaut()== true){
$emailsPD[] = $contact;
}
*/
else {
if (is_array($emails) && ! in_array($contact, $emails) && is_array($emailsPD) && ! in_array($contact, $emailsPD)) {
$emails[] = $contact;
}
}
}
}
}
/*
else {
foreach($commande->getClient()->getContacts() as $contact)
$emails[] = $contact;
}
*/
$repoParametrage = $em->getRepository(Parametrage::class);
$Parametrage = $repoParametrage->find(1);
$texteMailCommande = "";
$categorieEmail = '';
if (is_int($commande->getTypeDocumentCommercial())) {
if ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::DEVIS) {
$texteMailCommande = $Parametrage->getTexteMailDevis();
$categorieEmail = 13;
} elseif ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::COMMANDE) {
$texteMailCommande = $Parametrage->getTexteMailCommande();
$categorieEmail = 14;
} elseif ($commande->getTypeDocumentCommercial() == TypeDocumentCommercial::BL) {
$texteMailCommande = $Parametrage->getTexteMailBl();
$categorieEmail = 15;
} elseif (in_array($commande->getTypeDocumentCommercial(), [TypeDocumentCommercial::FACTURE, TypeDocumentCommercial::AVOIR])) {
$texteMailCommande = $Parametrage->getTexteMailFacture();
$categorieEmail = 16;
}
}
$modelesEmail = [];
if ( ! empty($categorieEmail)) {
$categorieEmailObjet = $em->getRepository(Categorie::class)->find($categorieEmail);
if (is_object($categorieEmailObjet)) {
$modelesEmail = $em->getRepository(Modele::class)->findBy([
'sousCategorie' => $categorieEmailObjet,
'statut' => true,
]);
}
}
if (count($modelesEmail) == 0) {
$modelesEmail = $em->getRepository(Modele::class)->findBy(['statut' => true]);
}
$modelesEmailRendu = [];
foreach ($modelesEmail as $modeleEmail) {
$sujet = $service->replaceTag(
$modeleEmail->getSujet(),
['commande' => $commande]
);
$message = $service->replaceTag(
$modeleEmail->getMessage(),
['commande' => $commande]
);
$modelesEmailRendu[$modeleEmail->getSousCategorie()->getCategorieParent()->getId()][$modeleEmail->getSousCategorie()->getId()][] = [
'modeleEmail' => $modeleEmail,
'sujet' => $sujet,
'message' => $message,
];
}
$rendu = $this->renderView('GestionComerciale/Devis/email.html.twig', [
'errors' => $errors,
'commande' => $commande,
'nomFichier' => $retour['nom_fichier'],
'type' => $retour['type'],
'cheminPDF' => $retour['chemin'],
'url' => $retour['url'],
'emails' => $emails,
'emailsPD' => $emailsPD,
'texteMailCommande' => $texteMailCommande,
'modelesEmail' => $modelesEmailRendu,
]);
return new JsonResponse(
['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal, "width" => 1000]
);
}
}
/**
* @Route("/commande/statut/rechercher", name="dtc_statut_recherche")
*/
public function RechercherStatutAction(Request $request, EntityManagerInterface $em, PaginatorInterface $paginator)
{
$q = $request->query->get('q');
$repo = $em->getRepository(StatutCommande::class);
$results = $repo->getRechercheStatut($q);
$pagination = $paginator->paginate(
$results, /* query NOT result */
$request->query->getInt('page', 1)/*page number*/,
10/*limit per page*/
);
$pagination_results = $pagination->getItems();
$option_placeholde = ["libelle" => "Sélectionnez", "id" => ""];
if ($request->query->getInt('page', 1) == 1) {
array_unshift($pagination_results, $option_placeholde);
}
$pagination->setItems($pagination_results);
$serializer = SerializerBuilder::create()->build();
return JsonResponse::fromJsonString($serializer->serialize($pagination, 'json'));
}
/**
* @Route("/commande/historique/{commande}", name="dtc_commande_historique")
*/
public function historiqueAction(Request $request, Commande $commande, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$titre_modal = $translator->trans("Historique du document");
$commandes = [];
if (is_object($commande->getCommande())) {
if ($commande->getMultiBl()) {
foreach ($commande->getBls() as $bl) {
$commandes[] = $bl->getCommande()->getId();
}
} else {
$commandes[] = $commande->getCommande()->getId();
}
$commandesTmp = $em->getRepository(Commande::class)->findBy([
'commande' => $commandes,
]);
$commandes = array_merge($commandes, $commandesTmp);
} else {
$commandes = $em->getRepository(Commande::class)->findBy([
'commande' => $commande,
]);
$commandes[] = $commande;
}
$historiques = $em->getRepository(HistoriqueCommande::class)->findBy([
'commande' => $commandes,
], ['date' => 'DESC', 'id' => 'DESC']);
$rendu = $this->renderView('GestionComerciale/Commande/historique.html.twig', [
'historiques' => $historiques,
]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal, 'width' => 900]);
}
/**
* @Route("/vente/commande/change-statut/{id}/{action}", name="dtc_commande_change_statut")
*/
public function changerStatutAction(Request $request, Commande $commande, $action, EntityManagerInterface $em, CommandeService $commandeService)
{
$user = $this->getUser();
if ($user->getType()->getId() != "1") {
return new JsonResponse(['data' => '1']);
}
if ( ! empty($action)) {
$donneesHistorique = [];
$donneesHistorique["message"] = "";
if ($action == 'adresseValideeManuellement') {
if ($commande->getAdresseValideeManuellement() == 1) {
$commande->setAdresseValideeManuellement(0);
$commandeService->creerHistorique($commande, 21, $donneesHistorique);
} else {
$commande->setAdresseValideeManuellement(1);
$commandeService->creerHistorique($commande, 20, $donneesHistorique);
}
} elseif ($action == 'abloquer') {
if ($commande->getABloquer() == 1) {
$commande->setABloquer(0);
$commandeService->creerHistorique($commande, 19, $donneesHistorique);
} else {
$commande->setABloquer(1);
$commandeService->creerHistorique($commande, 18, $donneesHistorique);
}
}
$em->persist($commande);
$em->flush();
}
$headers = [
'Content-Type' => 'application/json',
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'POST',
];
return new JsonResponse(['data' => '1']);
}
/**
* @Route("/vente/commande/accepter-market-place/{id}", name="dtc_commande_accepter_market_place")
*/
public function accepterMarketPlaceAction(Request $request, Commande $commande, EntityManagerInterface $em, CommandeService $commandeService)
{
$user = $this->getUser();
$retour_api = "";
$changer_statut_commande = false;
$url_api = "";
if (is_object($commande->getCompteMarketPlace()) && is_object($commande->getCompteMarketPlace()->getMarketPlace())) {
$market_place_id = $commande->getCompteMarketPlace()->getMarketPlace()->getId();
// Cdiscount
if ($market_place_id == 3) {
$domaine = $this->getParameter('domaine_cron');
$cle_xml = $this->getParameter('cle_xml');
$url_api = $domaine."/cdiscount-api/samples/Order/AccepterOrder.php?marketPlace=".$commande->getCompteMarketPlace()->getId()."&cle=".urlencode(
$cle_xml
)."&id=".$commande->getId();
//echo $url_api;
$donneesHistorique = ["message" => ""];
$ch = curl_init($url_api);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
$xml_acceptation = @simplexml_load_string($result);
$changer_statut_commande = false;
if (isset($xml_acceptation->orders->order)) {
foreach ($xml_acceptation->orders->order as $order) {
$refCmdeMarketPlace = (string)$order->OrderNumber;
if ($refCmdeMarketPlace == $commande->getReferenceMarketPlace()) {
$changer_statut_commande = true;
}
}
}
if (isset($xml_acceptation->erreur) and $xml_acceptation->erreur != "") {
$erreur_chaine = (string)$xml_acceptation->erreur;
$donneesHistorique["message"] .= $erreur_chaine;
}
if ($changer_statut_commande) {
$statut_commande_en_attente_obj = $em->getRepository(StatutCommande::class)->find(2);
$commande->setStatutCommande($statut_commande_en_attente_obj);
$donneesHistorique["message"] .= " Changement de statut de la commande : ".$statut_commande_en_attente_obj->getLibelle();
$em->persist($commande);
$em->flush();
$commandeService->creerHistorique($commande, 15, $donneesHistorique);
$retour_api = $donneesHistorique["message"];
}
$retour_api = $donneesHistorique["message"];
} else {
// Conforama
if ($market_place_id == 10) {
$url_api = "https://conforama-prod.mirakl.net/api/orders/".$commande->getIdImport()."/accept";
} // Darty
elseif ($market_place_id == 11) {
$url_api = "https://drt-prod.mirakl.net/api/orders/".$commande->getIdImport()."/accept";
} // Fnac
elseif ($market_place_id == 12) {
$url_api = "https://fnac-prod.mirakl.net/api/orders/".$commande->getIdImport()."/accept";
} // But
elseif ($market_place_id == 13) {
$url_api = "https://but-prod.mirakl.net/api/orders/".$commande->getIdImport()."/accept";
///api/orders/{order_id}/accept
}
if ($url_api != "") {
//echo $url_api;
$cle_client = $commande->getCompteMarketPlace()->getCle();
$data = ["order_lines" => []];
foreach ($commande->getArticleCommande() as $ac) {
$temp_id_line = $ac->getIdImport();
$temp_id_line = str_replace($commande->getCompteMarketPlace()->getId().'-'.$commande->getId().'-', "", $temp_id_line);
$data["order_lines"][] = ["accepted" => true, "id" => $temp_id_line];
}
//print_r($data);
//$data = array('username'=>'dog','password'=>'tall');
$data_json = json_encode($data);
//print_r($data_json);
$headers = [];
//$headers[] = "Content-Type: application/x-www-form-urlencoded";
$headers[] = "Content-Type: application/json";
$headers[] = "Content-Length: ".strlen($data_json);
$headers[] = "Authorization: ".$cle_client;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url_api);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$retour = json_decode($response, true);
$donneesHistorique = ["message" => ""];
if (array_key_exists('message', $retour)) {
$donneesHistorique["message"] = $retour["message"];
}
if (array_key_exists('status', $retour)) {
$donneesHistorique["message"] .= " Status:".$retour["status"];
}
if ( ! is_array($retour) or ! array_key_exists("status", $retour)) {
$changer_statut_commande = true;
}
if ($changer_statut_commande) {
$statut_commande_en_attente_obj = $em->getRepository(StatutCommande::class)->find(2);
$commande->setStatutCommande($statut_commande_en_attente_obj);
$donneesHistorique["message"] .= " Changement de statut de la commande : ".$statut_commande_en_attente_obj->getLibelle();
$em->persist($commande);
$em->flush();
}
$commandeService->creerHistorique($commande, 15, $donneesHistorique);
$retour_api = $donneesHistorique["message"];
}
}
}
$headers = [
'Content-Type' => 'application/json',
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'POST',
];
return new JsonResponse(['data' => '1', 'retour' => $retour_api, 'url_api' => $url_api]);
}
/**
* @Route("/vente/modifier/adresse/{id}", name="dtc_document_commercial_modifier_adresse_modal")
*/
public function modifierAdresseModalAction(Request $request, Commande $commande, EntityManagerInterface $em, CommandeService $commandeService, TranslatorInterface $translator,
ValidatorInterface $validator
) {
$titre_modal = $translator->trans("Adresse d'expédition ");
$user = $this->getUser();
$get = $request->query->all();
$form = $this->createForm(CommandeAdresseType::class, $commande);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$em->persist($commande);
$em->flush();
$donneesHistorique = [];
$donneesHistorique["message"] = "";
$commandeService->creerHistorique($commande, 22, $donneesHistorique);
$url = $this->generateUrl('dtc_commande_liste', []);
if (array_key_exists('table', $get) && $get["table"] != "") {
return new Response(
json_encode(['rendu' => '', 'valide' => '1', 'url' => $url, 'type' => 'recharger_datatable', 'id_datatable' => $get["table"]]),
200,
['Content-Type' => 'application/json']
);
} else {
$this->addFlash('notice', $translator->trans('Adresse modifiée avec succès !'));
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
}
} else {
$errors = $validator->validate($commande);
$rendu = $this->renderView(
'GestionComerciale/Commande/modifier_adresse_modal.html.twig',
['form' => $form->createView(), 'errors' => $errors, 'id' => $commande->getId(), 'type' => '', 'commande' => $commande]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
$rendu = $this->renderView(
'GestionComerciale/Commande/modifier_adresse_modal.html.twig',
['form' => $form->createView(), 'id' => $commande->getId(), 'type' => '', 'errors' => $errors, 'commande' => $commande]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("/commande/accepter/cron.xml", name="dtc_commande_a_accepter_cron_xml")
*/
public function AfficherCommandeAAccepterXmlAction(Request $request, EntityManagerInterface $em)
{
$param = $request->query->all();
//print_r($param);
$cle_xml = "fJ43paMv79nN7wxg6xLP7aTJfW9nRB77Q3FK294phO";
$cle_xml = $this->getParameter('cle_xml');
$compteMarketPlace = "";
$get = $request->query->all();
//print_r($get);
if (array_key_exists('compteMarketPlace', $get)) {
$compteMarketPlace = $get['compteMarketPlace'];
}
//$compteMarketPlace = $this->getParameter('compteMarketPlace');
//echo "test ".$compteMarketPlace;
if ( ! array_key_exists("cle", $param) or $param["cle"] != $cle_xml) {
throw new AccessDeniedException('This user does not have access to this section.');
}
$repo_commande = $em->getRepository(Commande::class);
$id = $request->query->get('id');
if ($id != "") {
$commandes = $repo_commande->findBy(["id" => $id, "statutCommande" => "39"]);
} else {
if ($compteMarketPlace != "") {
$commandes = $repo_commande->findBy(["compteMarketPlace" => $compteMarketPlace, "statutCommande" => "39"]);
} else {
$commandes = $repo_commande->findBy(["statutCommande" => "39"], null, 7500, null);
}
//199.99 €
}
$xml = '<?xml version="1.0" encoding="UTF-8"?>';
$xml .= "<orders>";
if (count($commandes) > 0) {
foreach ($commandes as $c) {
$xml .= "<order>";
$xml .= "<id>".$c->getId()."</id>";
$xml .= "<date>".$c->getDate()->format("Y-m-d H:i:s")."</date>";
$xml .= "<reference>".$c->getReferenceMarketPlace()."</reference>";
$xml .= "<id_import>".$c->getidImport()."</id_import>";
if (is_object($c->getStatutCommandeMarketPlace())) {
$xml .= "<statut_erp><![CDATA[".trim($c->getStatutCommande()->getId())."]]></statut_erp>";
} else {
$xml .= "<statut_erp></statut_erp>";
}
if (is_object($c->getStatutCommandeMarketPlace())) {
$xml .= "<statut_market_place><![CDATA[".trim($c->getStatutCommandeMarketPlace()->getLibelle())."]]></statut_market_place>";
} else {
$xml .= "<statut_market_place></statut_market_place>";
}
$transporteur = "";
$transporteur_id = "";
$url_tracking = "";
if (is_object($c->getTransporteur())) {
$transporteur = $c->getTransporteur()->getLibelle();
$transporteur_id = $c->getTransporteur()->getId();
$url_tracking = $c->getTransporteur()->getTracking();
}
$xml .= "<transporteur>".trim($transporteur)."</transporteur>";
$xml .= "<transporteur_id>".$transporteur_id."</transporteur_id>";
$xml .= "<numeroSuivi><![CDATA[".trim($c->getNumeroSuivi())."]]></numeroSuivi>";
$xml .= "<url_tracking>".$url_tracking."</url_tracking>";
if (is_object($c->getModeExpedition())) {
$xml .= "<mode_expedition_id>".$c->getModeExpedition()->getId()."</mode_expedition_id>";
} else {
$xml .= "<mode_expedition_id></mode_expedition_id>";
}
$xml .= "<compteMarketPlace>";
$xml .= "<id>".$c->getCompteMarketPlace()->getId()."</id>";
$xml .= "<libelle>".$c->getCompteMarketPlace()->getLibelle()."</libelle>";
//$xml .="<identifiant>".$c->getCompteMarketPlace()->getIdentifiant()."</identifiant>";
//$xml .="<pass>".$c->getCompteMarketPlace()->getPass()."</pass>";
//$xml .="<cle>".$c->getCompteMarketPlace()->getCle()."</cle>";
//$xml .="<secret>".$c->getCompteMarketPlace()->getCle()."</secret>";
$xml .= "<marketPlace>".$c->getCompteMarketPlace()->getMarketPlace()->getLibelle()."</marketPlace>";
$xml .= "</compteMarketPlace>";
$xml .= "<items>";
foreach ($c->getArticleCommande() as $ac) {
$xml .= "<item>";
$xml .= "<libelle><![CDATA[".$ac->getLibelle()."]]></libelle>";
$xml .= "<quantite><![CDATA[".$ac->getQuantite()."]]></quantite>";
$xml .= "<id_import><![CDATA[".$ac->getidImport()."]]></id_import>";
$xml .= "<id_article_erp><![CDATA[".$ac->getArticle()->getId()."]]></id_article_erp>";
$xml .= "<id_article_commande_erp><![CDATA[".$ac->getId()."]]></id_article_commande_erp>";
$sellerProductId = "";
if ($ac->getSellerProductId() != '') {
$sellerProductId = $ac->getSellerProductId();
} elseif (is_object($ac->getArticleMarketPlace())) {
$sellerProductId = $ac->getArticleMarketPlace()->getSku();
}
$xml .= "<seller_product_id><![CDATA[".$sellerProductId."]]></seller_product_id>";
$xml .= "</item>";
}
$xml .= "</items>";
$xml .= "</order>";
}
}
$xml .= "</orders>";
$response = new Response($xml);
//$response->headers->set('Content-Type', 'application/xml; charset=utf-8');
$response->headers->add(['Content-Type' => 'application/xml']);
return $response;
}
/**
* @Route("/commande/expedie/cron.xml", name="dtc_commande_a_expedier_cron_xml")
*/
public function AfficherCommandeAExpedierXmlAction(Request $request, CommandeService $commandeService, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$param = $request->query->all();
//print_r($param);
$cle_xml = "fJ43paMv79nN7wxg6xLP7aTJfW9nRB77Q3FK294phO";
$cle_xml = $this->getParameter('cle_xml');
$article_facilite_paiement = $this->getParameter('article_facilite_paiement');
$compteMarketPlace = "";
$get = $request->query->all();
//print_r($get);
if (array_key_exists('compteMarketPlace', $get)) {
$compteMarketPlace = $get['compteMarketPlace'];
}
//$compteMarketPlace = $this->getParameter('compteMarketPlace');
//echo "test ".$compteMarketPlace;
if ( ! array_key_exists("cle", $param) or $param["cle"] != $cle_xml) {
throw new AccessDeniedException('This user does not have access to this section.');
}
$repo_commande = $em->getRepository(Commande::class);
$id = $request->query->get('id');
if ($id != "") {
$commandes = $repo_commande->findBy(["id" => $id]);
} else {
if ($compteMarketPlace != "") {
$commandes = $repo_commande->findBy(["compteMarketPlace" => $compteMarketPlace, "statutCommande" => "36"]);
} else {
$commandes = $repo_commande->findBy(["statutCommande" => "36"], null, 7500, null);
}
//$commandes = $repo_commande->findBy(array("id"=>"3005","compteMarketPlace"=>$compteMarketPlace,"statutCommande"=>"36"));
//199.99 €
}
$xml = '<?xml version="1.0" encoding="UTF-8"?>';
$xml .= "<orders>";
if (count($commandes) > 0) {
foreach ($commandes as $c) {
$xml .= "<order>";
$xml .= "<id>".$c->getId()."</id>";
$xml .= "<date>".$c->getDate()->format("Y-m-d H:i:s")."</date>";
$xml .= "<reference>".$c->getReferenceMarketPlace()."</reference>";
$xml .= "<id_import>".$c->getidImport()."</id_import>";
if (is_object($c->getStatutCommandeMarketPlace())) {
$xml .= "<statut_erp><![CDATA[".trim($c->getStatutCommande()->getId())."]]></statut_erp>";
} else {
$xml .= "<statut_erp></statut_erp>";
}
if (is_object($c->getStatutCommandeMarketPlace())) {
$xml .= "<statut_market_place><![CDATA[".trim($c->getStatutCommandeMarketPlace()->getLibelle())."]]></statut_market_place>";
} else {
$xml .= "<statut_market_place></statut_market_place>";
}
$modeLivraisonAmazon = "";
$transporteur_amazon = "";
$transporteur_cdiscount = "";
$transporteur = "";
$transporteur_id = "";
$url_tracking = "";
if (is_object($c->getTransporteur())) {
$transporteur_amazon = $c->getTransporteur()->getTransporteurAmazon();
$modeLivraisonAmazon = $c->getTransporteur()->getModeLivraisonAmazon();
$transporteur_cdiscount = $c->getTransporteur()->getTransporteurCdiscount();
$transporteur = $c->getTransporteur()->getLibelle();
$transporteur_id = $c->getTransporteur()->getId();
$url_tracking = $c->getTransporteur()->getTracking();
}
$xml .= "<transporteur>".trim($transporteur)."</transporteur>";
$xml .= "<transporteur_id>".$transporteur_id."</transporteur_id>";
$xml .= "<transporteurCdiscount>".$transporteur_cdiscount."</transporteurCdiscount>";
$xml .= "<transporteurAmazon>".$transporteur_amazon."</transporteurAmazon>";
$xml .= "<modeLivraisonAmazon>".$modeLivraisonAmazon."</modeLivraisonAmazon>";
$xml .= "<numeroSuiviAll>";
$numeroSuivGlobal = $commandeService->getNumeroSuiviCommande($c);
if (count($c->getCommandeNumeroSuivi()) > 0) {
foreach ($c->getCommandeNumeroSuivi() as $num) {
$xml .= "<numeroSuivi><![CDATA[".trim($num->getNumeroSuivi())."]]></numeroSuivi>";
$numeroSuivGlobal = trim($num->getNumeroSuivi());
}
}
$xml .= "</numeroSuiviAll>";
$xml .= "<numeroSuivi><![CDATA[".$numeroSuivGlobal."]]></numeroSuivi>";
$xml .= "<url_tracking>".$url_tracking."</url_tracking>";
if (is_object($c->getModeExpedition())) {
$xml .= "<mode_expedition_id>".$c->getModeExpedition()->getId()."</mode_expedition_id>";
} else {
$xml .= "<mode_expedition_id></mode_expedition_id>";
}
$xml .= "<compteMarketPlace>";
$xml .= "<id>".$c->getCompteMarketPlace()->getId()."</id>";
$xml .= "<libelle>".$c->getCompteMarketPlace()->getLibelle()."</libelle>";
//$xml .="<identifiant>".$c->getCompteMarketPlace()->getIdentifiant()."</identifiant>";
//$xml .="<pass>".$c->getCompteMarketPlace()->getPass()."</pass>";
//$xml .="<cle>".$c->getCompteMarketPlace()->getCle()."</cle>";
//$xml .="<secret>".$c->getCompteMarketPlace()->getCle()."</secret>";
$xml .= "<marketPlace>".$c->getCompteMarketPlace()->getMarketPlace()->getLibelle()."</marketPlace>";
$xml .= "</compteMarketPlace>";
$xml .= "<items>";
foreach ($c->getArticleCommande() as $ac) {
if ($ac->getArticle()->getId() != $article_facilite_paiement) {
$xml .= "<item>";
$xml .= "<libelle><![CDATA[".$ac->getLibelle()."]]></libelle>";
$xml .= "<quantite><![CDATA[".$ac->getQuantite()."]]></quantite>";
$xml .= "<id_import><![CDATA[".$ac->getidImport()."]]></id_import>";
$xml .= "<id_article_erp><![CDATA[".$ac->getArticle()->getId()."]]></id_article_erp>";
$xml .= "<id_article_commande_erp><![CDATA[".$ac->getId()."]]></id_article_commande_erp>";
$sellerProductId = "";
if ($ac->getSellerProductId() != '') {
$sellerProductId = $ac->getSellerProductId();
} elseif (is_object($ac->getArticleMarketPlace())) {
$sellerProductId = $ac->getArticleMarketPlace()->getSku();
}
$xml .= "<seller_product_id><![CDATA[".$sellerProductId."]]></seller_product_id>";
$xml .= "</item>";
}
}
$xml .= "</items>";
$xml .= "</order>";
}
}
$xml .= "</orders>";
$response = new Response($xml);
//$response->headers->set('Content-Type', 'application/xml; charset=utf-8');
$response->headers->add(['Content-Type' => 'application/xml']);
return $response;
}
/**
* @Route("/vente/commande/transporteur/modifier/{id}", name="noogaa_modifer_transporteur")
*/
public function modifierTransporteurAction(Request $request, Commande $commande, CommandeService $commandeService, EntityManagerInterface $em, TranslatorInterface $translator,
ValidatorInterface $validator
) {
$titre_modal = $translator->trans("Modifier le transporteur sur le document");
$form = $this->createForm(CommandeTransporteurType::class, $commande);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$em->persist($commande);
$em->flush();
$commandeService->creerHistorique($commande, 'dtc_gestioncomercialebundle_commande_transporteur');
//$rendu = $this->renderView('layout-errors.html.twig');
$rendu = '';
$url = '';
$lp = $request->query->get('lp');
$page_origine = $request->query->get('page');
if ( ! empty($page_origine) && $page_origine == "anomalies") {
$url = $this->generateUrl('dtc_commande_anomalies_liste', []);
} //redirection vers expedition colissimo
elseif (is_object($commande->getTransporteur()) && in_array($commande->getTransporteur()->getId(), [1])) {
$url = $this->generateUrl('dtc_bon_preparation_simplifie_expedition_delivengo_action', ['lp' => $lp, 'id' => $commande->getId()]);
} elseif (is_object($commande->getTransporteur())
&&
(
$commande->getTransporteur()->getId() == 3
or
$commande->getTransporteur()->getId() == 6
or
$commande->getTransporteur()->getId() == 12
or
$commande->getTransporteur()->getId() == 14
)
) {
$url = $this->generateUrl('dtc_bon_preparation_simplifie_expedition_colissimo_action', ['lp' => $lp, 'id' => $commande->getId()]);
} elseif (is_object($commande->getTransporteur()) && $commande->getTransporteur()->getId() == 5) {
$url = $this->generateUrl('dtc_bon_preparation_simplifie_expedition_gls_action', ['lp' => $lp, 'id' => $commande->getId()]);
} //redirection vers expedition chronopost
elseif (
//Chronopost
is_object($commande->getTransporteur()) && $commande->getTransporteur()->getId() == 4
or
//Chrono13
is_object($commande->getTransporteur()) && $commande->getTransporteur()->getId() == 8
or
//ChronoClassic
is_object($commande->getTransporteur()) && $commande->getTransporteur()->getId() == 9
or
//ChronoExpress
is_object($commande->getTransporteur()) && $commande->getTransporteur()->getId() == 10
or
//ChronoPremium
is_object($commande->getTransporteur()) && $commande->getTransporteur()->getId() == 11
) {
$url = $this->generateUrl('dtc_bon_preparation_simplifie_expedition_chronopost_action', ['lp' => $lp, 'id' => $commande->getId()]);
} //redirection vers expedition tnt
elseif (is_object($commande->getTransporteur()) && ! empty($commande->getTransporteur()->getServiceCode())) {
$url = $this->generateUrl('dtc_bon_preparation_simplifie_expedition_tnt_action', ['lp' => $lp, 'id' => $commande->getId()]);
}
$transporteurId = '';
if (is_object($commande->getTransporteur())) {
$transporteurId = $commande->getTransporteur()->getId();
}
return new JsonResponse(
['rendu' => $rendu, 'valide' => '1', 'url' => $url, 'type' => 'callbackModifierTransporteur', 'transporteurId' => $transporteurId]
);
} else {
$errors = $validator->validate($commande);
$rendu = $this->renderView('GestionComerciale/Commande/modifier-transporteur.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
$rendu = $this->renderView('GestionComerciale/Commande/modifier-transporteur.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("/commande/recherche", name="dtc_commande_recherche")
* @Route("/document-commercial/recherche", name="dtc_document_vente_recherche")
*/
public function rechercheAction(Request $request, EntityManagerInterface $em, PaginatorInterface $paginator)
{
$q = $request->query->get('q');
$commandeFournisseur = $request->query->get('commandeFournisseur');
$articles = [];
if ( ! empty($commandeFournisseur)) {
$objet = $em->getRepository(CommandeFournisseur::class)->find($commandeFournisseur);
if (is_object($objet)) {
foreach ($objet->getArticleCommande() as $ac) {
if ( ! in_array($ac->getArticle()->getId(), $articles)) {
$articles[] = $ac->getArticle()->getId();
}
}
}
}
$repo = $em->getRepository(Commande::class);
//$results = $repo->getRechercheCommande($q, 25, array('articles'=>$articles));
$results = $em->getRepository(ArticleCommande::class)->getCommandePourCommandeFournisseur($articles);
$pagination = $paginator->paginate(
$results, /* query NOT result */
$request->query->getInt('page', 1)/*page number*/,
10/*limit per page*/
);
$pagination_results = $pagination->getItems();
$option_placeholde = ["libelle" => "Sélectionnez", "id" => 0];
if ($request->query->getInt('page', 1) == 1) {
array_unshift($pagination_results, $option_placeholde);
}
$pagination->setItems($pagination_results);
return new JsonResponse(
$pagination,
);
}
/**
* @Route("/commande/of/charger-tableau/{id}", name="dtc_commande_of_charger_tableau")
*/
public function chargerTableauAction(Request $request, Commande $commande)
{
$rendu = $this->renderView('GestionComerciale/Fabrication/charger_tableau.html.twig', ["commande" => $commande]);
return new JsonResponse(['rendu' => $rendu]);
}
/**
* @Route("/commandes/ofs/{id}", name="dtc_commande_ofs_liste")
*/
public function listerOfsAction(Request $request, $id = "0", $type = "a", EntityManagerInterface $em, ColonneTableauService $serviceColonneTableau, Datatable $datatable, TranslatorInterface $translator)
{
$repo_objet = $em->getRepository(Commande::class);
$objet = $repo_objet->find($id);
$param = $request->query->all();
$tableau_class_cellule = [];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id text-center", "targets" => [0], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [1], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id text-right", "targets" => [2], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id text-right", "targets" => [3], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id text-right", "targets" => [4], "visible" => true, "orderable" => true];
$tableau_class_cellule[] = ["orderable" => false, "className" => "colonne_id", "targets" => [5], "visible" => true];
$tableau_class_cellule = [];
$this->datatableOfs($objet, $type, $em, $datatable, $translator);
return $this->render(
'GestionComerciale/Fabrication/lister_of_commande.html.twig',
['tableauClassColonne' => $tableau_class_cellule, "id" => $id, "type" => $type, 'parametres' => $param]
);
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableOfs($objet, $type = "", EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
$datatable->setDatatableId('dta-ofs')->setEntity(Fabrication::class, "x");
$parameters = ['objet' => $objet];
$where = "c.id = :objet ";
$datatable
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Référence") => 'x.reference',
$translator->trans("Statut") => 's.libelle',
$translator->trans("Réf article") => 'a.reference',
$translator->trans("Libellé") => 'a.libelle',
$translator->trans("Réf multiple") => 'ofm.reference',
$translator->trans("Statut OFM") => 'sofm.libelle',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.articleCommandeCommandeClient', 'ac', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('ac.article', 'a', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('ac.commande', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.fabricationMultiple', 'ofm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.statutFabrication', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('ofm.statutFabricationMultiple', 'sofm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setWhere(
$where,
$parameters
)
->setRenderers(
[
1 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_fabrication_modifier',
],
],
7 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_fabrication_modifier',
//'supprimer_route' => 'dtc_facture_supprimer',
//'pdf_route' => 'dtc_facture_pdf',
'id' => $objet->getId(),
'type' => $type,
'entite' => 'fabrication',
'objet' => Commande::class,
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)//->setSearchFields(array(1,2))
;
return $datatable;
}
/**
* @Route("/commandes/ofs/grid/{id}", name="dtc_commande_ofs_liste_grid")
*/
public function gridOfsAction(Request $request, $id = "", $type = "", EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
$repo_objet = $em->getRepository(Commande::class);
$objet = $repo_objet->find($id);
return $this->datatableOfs($objet, $type, $em, $datatable, $translator)->execute();
}
/**
* @Route("/export-commandes/zip", name="export__export_commandes_zip")
*/
public function zipExportCommandesAction(Request $request, CommandeService $serviceCommande, EntityManagerInterface $em)
{
$data = $request->get('dataTables');
$ids = $data['actions'];
$retour = $serviceCommande->createZipFileCommandes($ids);
//return $this->file($retour['zipFilePath'], $retour['fileName'], ResponseHeaderBag::DISPOSITION_INLINE);
return new JsonResponse(['url'=>$retour['url'],'target'=>'_blank']);
}
}