<?php
/*
* This file is part of the Sylius package.
*
* (c) Paweł Jędrzejewski
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace App\Controller;
use App\Entity\Order\Order;
use App\Service\SynapsService;
use FOS\RestBundle\View\View;
use Sylius\Bundle\ResourceBundle\Controller\RequestConfiguration;
use Sylius\Bundle\ResourceBundle\Controller\ResourceController;
use Sylius\Component\Order\Context\CartContextInterface;
use Sylius\Component\Order\Model\OrderInterface;
use Sylius\Component\Order\Repository\OrderRepositoryInterface;
use Sylius\Component\Order\SyliusCartEvents;
use Sylius\Component\Resource\ResourceActions;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
use Symfony\Component\Finder\Finder;
use Symfony\Component\Finder\SplFileInfo;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\HttpException;
use App\Repository\GiftcardRepository;
use App\Entity\Giftcard;
use Sylius\Bundle\OrderBundle\Controller\OrderController as OrderControllerBase;
use Sylius\Component\Channel\Context\ChannelContextInterface;
use Sylius\Component\Core\Model\ChannelInterface;
use Sylius\Component\Locale\Context\LocaleContextInterface;
use Spipu\Html2Pdf\Html2Pdf;
use Spipu\Html2Pdf\Exception\Html2PdfException;
use Spipu\Html2Pdf\Exception\ExceptionFormatter;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Twig\Environment;
use App\Service\FideliumService;
use Sylius\Component\Core\Model\AdjustmentInterface;
class OrderController extends OrderControllerBase
{
public function summaryAction(Request $request): Response
{
$configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
$cart = $this->getCurrentCart();
//$cart->getTotalWithOutAdjustments ();
//$adj = $cart->getFideliumAdjustments();
if (null !== $cart->getId()) {
$cart = $this->getOrderRepository()->findCartById($cart->getId());
}
if (!$configuration->isHtmlRequest()) {
return $this->viewHandler->handle($configuration, View::create($cart));
}
$fideliumCard = false;
$listBoxFidelium = false;
$orderpoints = "";
$customer = $cart->getCustomer();
if (isset($customer) && !empty($customer->getFideliumcard()))
{
$orderpoints = $cart->getFideliumpoints();
$cardnumber = $customer->getFideliumcard();
$fs = new FideliumService ($cardnumber);
$fideliumCard = $fs->getInfosCard();
$listBoxFidelium = $fs->getListBoxFidelium ();
}
if (isset($customer))
$is_logged_in = true;
else
$is_logged_in = false;
$form = $this->resourceFormFactory->create($configuration, $cart);
return $this->render(
$configuration->getTemplate('summary.html'),
[
'is_logged_in' => $is_logged_in,
'customer' => $customer,
'fideliumCard' => $fideliumCard,
'listBoxFidelium' => $listBoxFidelium,
'orderpoint' => $orderpoints,
'cart' => $cart,
'form' => $form->createView(),
]
);
}
public function widgetAction(Request $request): Response
{
$configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
$cart = $this->getCurrentCart();
$fideliumCard = false;
$listBoxFidelium = false;
$orderpoints = "";
$customer = $cart->getCustomer();
if (isset($customer) && !empty($customer->getFideliumcard()))
{
$orderpoints = $cart->getFideliumpoints();
$cardnumber = $customer->getFideliumcard();
$fs = new FideliumService ($cardnumber);
$fideliumCard = $fs->getInfosCard();
$listBoxFidelium = $fs->getListBoxFidelium ();
}
if (isset($customer) && !empty($customer->getFideliumcard()))
{
$orderpoints = $cart->getFideliumpoints();
$cardnumber = $customer->getFideliumcard();
$fs = new FideliumService ($cardnumber);
$fideliumCard = $fs->getInfosCard();
$listBoxFidelium = $fs->getListBoxFidelium ();
}
if (!$configuration->isHtmlRequest()) {
//return $this->viewHandler->handle($configuration, View::create($cart));
}
return $this->render(
$configuration->getTemplate('summary.html'),
[
'fideliumCard' => $fideliumCard,
'listBoxFidelium' => $listBoxFidelium,
'orderpoint' => $orderpoints,
'cart' => $cart,
]
);
}
public function saveAction(Request $request): Response
{
$configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
$this->isGrantedOr403($configuration, ResourceActions::UPDATE);
$resource = $this->getCurrentCart();
$form = $this->resourceFormFactory->create($configuration, $resource);
//TODO
/*
foreach ($resource->getAdjustments(AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT) as $adjustment) {
if ($adjustment->getLabel() == "Fidelium") {
$resource->removeAdjustment($adjustment);
}
} */
if ($resource->hasGiftCards()) {
}
if ( $request->get("fideliumupdate") != "")
{
$fideliumpoints = $request->get("fidelium");
if (is_numeric($fideliumpoints))
{
$customer = $resource->getCustomer();
$cardnumber = $customer->getFideliumcard();
$fs = new FideliumService ($cardnumber);
if ($fs->IsValidePoints ($fideliumpoints))
{
$resource->setFideliumpoints((int)$fideliumpoints);
}
else
$resource->setFideliumpoints(0);
}
else
$resource->setFideliumpoints(0);
}
if ( array_key_exists("promotionCoupon", $request->get("sylius_cart") ))
{
$promotioncode = $request->get("sylius_cart")["promotionCoupon"];
if ($promotioncode != "")
{
$giftCardRepository = $this->getDoctrine()->getRepository(Giftcard::class);
$giftCard = $giftCardRepository->findOneByCode($promotioncode);
//$giftCard = $giftCardRepository->findOneByCode("9E4BEDC2F78E2BAC");
if ($giftCard)
{
$resource->addGiftCard($giftCard);
$this->manager->persist($giftCard);
$this->manager->flush();
}
}
}
if (in_array($request->getMethod(), ['POST', 'PUT', 'PATCH'], true) && $form->handleRequest($request)->isValid()) {
$resource = $form->getData();
$event = $this->eventDispatcher->dispatchPreEvent(ResourceActions::UPDATE, $configuration, $resource);
if ($event->isStopped() && !$configuration->isHtmlRequest()) {
throw new HttpException($event->getErrorCode(), $event->getMessage());
}
if ($event->isStopped()) {
$this->flashHelper->addFlashFromEvent($configuration, $event);
return $this->redirectHandler->redirectToResource($configuration, $resource);
}
if ($configuration->hasStateMachine()) {
$this->stateMachine->apply($configuration, $resource);
}
$this->eventDispatcher->dispatchPostEvent(ResourceActions::UPDATE, $configuration, $resource);
$this->getEventDispatcher()->dispatch(new GenericEvent($resource), SyliusCartEvents::CART_CHANGE);
$this->manager->flush();
if (!$configuration->isHtmlRequest()) {
return $this->viewHandler->handle($configuration, View::create(null, Response::HTTP_NO_CONTENT));
}
$this->flashHelper->addSuccessFlash($configuration, ResourceActions::UPDATE, $resource);
return $this->redirectHandler->redirectToResource($configuration, $resource);
}
if (!$configuration->isHtmlRequest()) {
return $this->viewHandler->handle($configuration, View::create($form, Response::HTTP_BAD_REQUEST));
}
return $this->render(
$configuration->getTemplate(ResourceActions::UPDATE . '.html'),
[
'configuration' => $configuration,
$this->metadata->getName() => $resource,
'form' => $form->createView(),
'cart' => $resource,
]
);
}
/*public function clearAction(Request $request): Response
{
$configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
$this->isGrantedOr403($configuration, ResourceActions::DELETE);
$resource = $this->getCurrentCart();
if ($configuration->isCsrfProtectionEnabled() && !$this->isCsrfTokenValid((string) $resource->getId(), $request->get('_csrf_token'))) {
throw new HttpException(Response::HTTP_FORBIDDEN, 'Invalid csrf token.');
}
$event = $this->eventDispatcher->dispatchPreEvent(ResourceActions::DELETE, $configuration, $resource);
if ($event->isStopped() && !$configuration->isHtmlRequest()) {
throw new HttpException($event->getErrorCode(), $event->getMessage());
}
if ($event->isStopped()) {
$this->flashHelper->addFlashFromEvent($configuration, $event);
return $this->redirectHandler->redirectToIndex($configuration, $resource);
}
$this->repository->remove($resource);
$this->eventDispatcher->dispatchPostEvent(ResourceActions::DELETE, $configuration, $resource);
if (!$configuration->isHtmlRequest()) {
return $this->viewHandler->handle($configuration, View::create(null, Response::HTTP_NO_CONTENT));
}
$this->flashHelper->addSuccessFlash($configuration, ResourceActions::DELETE, $resource);
return $this->redirectHandler->redirectToIndex($configuration, $resource);
}
protected function redirectToCartSummary(RequestConfiguration $configuration): Response
{
if (null === $configuration->getParameters()->get('redirect')) {
return $this->redirectHandler->redirectToRoute($configuration, $this->getCartSummaryRoute());
}
return $this->redirectHandler->redirectToRoute($configuration, $configuration->getParameters()->get('redirect'));
}
protected function getCartSummaryRoute(): string
{
return 'sylius_cart_summary';
}
protected function getCurrentCart(): OrderInterface
{
return $this->getContext()->getCart();
}
protected function getContext(): CartContextInterface
{
return $this->get('sylius.context.cart');
}
protected function getOrderRepository(): OrderRepositoryInterface
{
return $this->get('sylius.repository.order');
}
protected function getEventDispatcher(): EventDispatcherInterface
{
return $this->container->get('event_dispatcher');
}*/
public function thankYouAction(Request $request): Response
{
$configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
$orderId = $request->getSession()->get('sylius_order_id', null);
if (null === $orderId) {
$options = $configuration->getParameters()->get('after_failure');
return $this->redirectHandler->redirectToRoute(
$configuration,
$options['route'] ?? 'sylius_shop_homepage',
$options['parameters'] ?? []
);
}
$request->getSession()->remove('sylius_order_id');
$order = $this->repository->find($orderId);
//Assert::notNull($order);
return $this->render(
$configuration->getParameters()->get('template'),
[
'order' => $order,
]
);
}
private function totalWeight($order)
{
$totawweights = 0;
foreach ($order->GetItems() as $item){
$weight = $item->getVariant()->getWeight();
if (isset($weight) && !empty($weight) && is_numeric($weight) )
$totawweights = $totawweights + ($weight * $item->getQuantity());
}
if ($totawweights !=0)
$totawweights = $totawweights;
return $totawweights;
}
public function getExpeditionDate ($date)
{
$wdate = clone $date;
//Date de commande
$days = (int)$date->format('w');
if ($days == 1) $dateenvoie = $wdate->add(new \DateInterval('P1D')); // +1 lundi --> mardi
elseif ($days == 2) $dateenvoie = $wdate->add(new \DateInterval('P2D')); // +2 mardi --> jeudi
elseif ($days == 3) $dateenvoie = $wdate->add(new \DateInterval('P1D')); // +1 mercredi --> jeudi
elseif ($days == 4) $dateenvoie = $wdate->add(new \DateInterval('P5D')); // +5 jeudi --> mardi
elseif ($days == 5) $dateenvoie = $wdate->add(new \DateInterval('P4D')); // +4 vendredi --> mardi
elseif ($days == 6) $dateenvoie = $wdate->add(new \DateInterval('P3D')); // +3 samedi --> mardi
elseif ($days == 7) $dateenvoie = $wdate->add(new \DateInterval('P2D')); // +2 dimanche --> mardi
return $dateenvoie->format('d-m-Y');
}
//Calcul :
//Si date de la commande = lundi, mardi ou mercredi avant midi alors date = vendredi suivant.
//Si date de commande = mercredi après 12h00 (midi), jeudi, vendredi, samedi ou dimanche alors date = mercredi suivant.
public function getExpeditionDate2 ($date)
{
$wdate = clone $date;
//Date de commande
$days = (int)$date->format('w');
$hour = (int)$date->format('H');
if ($days == 1) $dateenvoie = $wdate->add(new \DateInterval('P4D')); // +4 lundi --> vendredi
elseif ($days == 2) $dateenvoie = $wdate->add(new \DateInterval('P3D')); // +3 mardi --> vendredi
elseif ($days == 3 and $hour < 12) $dateenvoie = $wdate->add(new \DateInterval('P2D')); // +3 mercredi --> vendredi
elseif ($days == 3) $dateenvoie = $wdate->add(new \DateInterval('P7D')); // +7 mercredi --> mercredi
elseif ($days == 4) $dateenvoie = $wdate->add(new \DateInterval('P6D')); // +6 jeudi --> mercredi
elseif ($days == 5) $dateenvoie = $wdate->add(new \DateInterval('P5D')); // +5 vendredi --> mercredi
elseif ($days == 6) $dateenvoie = $wdate->add(new \DateInterval('P4D')); // +4 samedi --> mercredi
elseif ($days == 7) $dateenvoie = $wdate->add(new \DateInterval('P3D')); // +3 dimanche --> mercredi
return $dateenvoie->format('d-m-Y');
}
public function ordersExport (Request $request =null)
{
$criteria = $request->get('criteria');
$orderRepository = $this->getOrderRepository();
$orders = $orderRepository->exportOrderPaid ($criteria);
$elem = array();
$lines = array();
$separator = ";";
foreach ($orders as $order){
$lastShipment = $order->getShipments()->last();
$shippingmethod = $lastShipment->getMethod()->getCode();
$shippingmethodname = $lastShipment->getMethod()->getName();
$boutique = "";
if ($shippingmethod == "collect")
{
$boutique = $lastShipment->getBoutiqueId();
}
$shippingAddresse = $order->getShippingAddress();
$customer = $order->getCustomer();
$email = $customer->getEmail();
$cie = $shippingAddresse->getCompany();
if (isset($cie) && !empty($cie))
$shippingName = $shippingAddresse->getCompany(); //Société destinataire
else
$shippingName = $shippingAddresse->getLastName() . " " . $shippingAddresse->getFirstName() ; //Société destinataire
$shippingPhone = $customer->getPhoneNumber();
$customerPhone = $shippingAddresse->getPhoneNumber();
if (isset($shippingPhone) && !empty($shippingPhone))
$phoneNumber = $shippingPhone;
elseif (isset($customerPhone) && !empty($customerPhone))
$phoneNumber = $customerPhone;
$date = $order->getCheckoutCompletedAt();
$total_livraison = $order->getAdjustmentsTotalRecursively(AdjustmentInterface::SHIPPING_ADJUSTMENT);
$total_remise = $order->getAdjustmentsTotalRecursively(AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT);
foreach ($order->getAdjustmentsRecursively(AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT) as $adjustment)
{
}
foreach ( $order->getItems() as $item)
{
$variant = $item->getVariant();
$elem = array();
$elem["Numero de la commande"] = $order->getNumber();
$elem["Date de la commande"] = $order->getCheckoutCompletedAt()->format('d-m-Y H:i');
//Date de départ des caves
if ($shippingmethod == "chronofresh")
$departcave = $this->getExpeditionDate2 ($date);
else
$departcave = "";
$elem["Date de depart des caves"] = $departcave;
$elem["Article CODE"] = $variant->getCode();
//$elem["Nom du produit"] = $item->getVariantName();
$elem["Nom du produit"] = $item->getProductName();
$shortname = $variant->getShortname();
if (isset($shortname) && $shortname != "")
$elem["Conditionnement"] = $variant->getShortname();
else
$elem["Conditionnement"] = $variant->getName();
$elem["Quantite commandee"] = $item->getQuantity();
//$taxs = $item->getAdjustmentsTotalRecursively(AdjustmentInterface::TAX_ADJUSTMENT);
$tva = 0;
foreach ( $item->getUnits() as $unit)
{
$taxes = $unit->getAdjustments(AdjustmentInterface::TAX_ADJUSTMENT);
foreach ( $taxes as $tax)
{
$tva = $tva + $tax->getAmount();
}
}
$elem["Montant HT"] = $this->formatMoney ($item->getTotal() - $tva);
$elem["Montant TVA"] = $this->formatMoney ($tva);
$elem["Montant TTC"] = $this->formatMoney ($item->getTotal());
//$elem["Total livraison"] = $this->formatMoney ($total_livraison);
//$elem["Total remise"] = $this->formatMoney ($total_remise);
if ($order->getState() == "cancelled")
$elem["Statut"] = $order->getState();
else
$elem["Statut"] = "";
$elem["Expedition"] = $shippingmethodname;
$elem["boutique"] = $boutique;
$elem["client"] = $email;
$elem["numero_facture"] = $order->getInvoiceNumber();
$elem["Dateretrait"] = $lastShipment->getDateretrait();
$elem["Heureretrait"] = $lastShipment->getHeureretrait();
$lines[] = implode($separator, $elem);
}
}
$header = implode($separator, array_keys ($elem));
$filename = "commande-". date('dmyHm') . ".csv";
$content = $header . "\r\n". implode("\r\n", $lines);
$response = new Response($content, Response::HTTP_OK, ['Content-Type' => 'text/csv']);
$response->setPublic();
$response->setMaxAge(0);
$response->headers->add([
'Content-Disposition' => $response->headers->makeDisposition('attachment', $filename),
]);
return $response;
}
public function formatMoney ($value)
{
if (isset($value))
{
$value = $value / 100;
return number_format($value, 2, ",", " ");
}
}
public function chronofreshExport ()
{
$orderRepository = $this->getOrderRepository();
$orders = $orderRepository->exportForChronoFresh ();
$lines = array();
$separator = ";";
//Société destinataire Ou NOM et PRENOM
foreach ($orders as $order){
$lastShipment = $order->getShipments()->last();
$method = $lastShipment->getMethod()->getCode();
if ($method != "chronofresh")
$continue;
$shippingAddresse = $order->getShippingAddress();
$customer = $order->getCustomer();
$email = $customer->getEmail();
$cie = $shippingAddresse->getCompany();
if (isset($cie) && !empty($cie))
$shippingName = $shippingAddresse->getCompany(); //Société destinataire
else
$shippingName = $shippingAddresse->getLastName() . " " . $shippingAddresse->getFirstName() ; //Société destinataire
$shippingPhone = $customer->getPhoneNumber();
$customerPhone = $shippingAddresse->getPhoneNumber();
if (isset($shippingPhone) && !empty($shippingPhone))
$phoneNumber = $shippingPhone;
elseif (isset($customerPhone) && !empty($customerPhone))
$phoneNumber = $customerPhone;
# - indiquer "2R" dans la colonne "Produit" (col O) à la place de Food.
# - indiquer une DLC (col DLC ou AG) avec minimum égale à la date d'envoi + 5 jours
# Je vous conseille également de figer les champs "Compte" (col P) et "Sous-compte" (col Q) que vous pouvez laisser vider si le client n'utilise pas de sous compte spécifique.
$Date = date('Y-m-d');
$dlc = date('d/m/y', strtotime($Date. ' + 14 days'));
$elem[0] = $customer->getId(); //Référence destinataire
$elem[1] = $shippingName; //Société destinataire
$elem[2] = $shippingAddresse->getLastName(); //Nom destinataire
$elem[3] = $shippingAddresse->getFirstName(); //Prénom destinataire
$elem[4] = $shippingAddresse->getStreet(); //Adresse destinataire
$elem[5] = ""; //Adresse 2 destinataire
$elem[6] = ""; //Code porte destinataire
$elem[7] = $shippingAddresse->getPostcode(); //Code postal destinataire
$elem[8] = $shippingAddresse->getCity(); //Ville destinataire
$elem[9] = $shippingAddresse->getCountryCode(); //Code pays destinataire Code pays ISO, si vide FR
$elem[10] = $phoneNumber; //Téléphone destinataire
$elem[11] = $email; //E-Mail destinataire
$elem[12] = $order->getNumber(); //Référence 1
$elem[13] = ""; //Code barre client
$elem[14] = "2R"; //Produit
$elem[15] = "16217950"; //Numéro de compte
$elem[16] = "001"; //Numéro de sous compte
$elem[17] = ""; //Assurance
$elem[18] = ""; //Valeur en douane
$elem[19] = "M"; //Type de colis
$elem[20] = ""; //Description
$elem[21] = ""; //Livraison Samedi
$elem[22] = ""; //ID Chrono Relais Obligatoire si Produit Chrono Relais
$elem[23] = $this->totalWeight($order); //Poids
$elem[24] = ""; //Largeur
$elem[25] = ""; //Longueur
$elem[26] = ""; //Hauteur
$elem[27] = "O"; //Alerter destinataire
$elem[28] = "1"; //Nombre de colis
$date = $order->getCheckoutCompletedAt();
$dateenvoie = $this->getExpeditionDate ($date);
$elem[29] = $dateenvoie; // vide autorisé //Date d’envoi
$elem[30] = ""; //Inutilisé
$elem[31] = ""; //Alerter expéditeur
$elem[32] = $dlc; "JJ/MM/AAAA"; //DLC // Obligatoire si Produit FOOD
$elem[33] = ""; //Début du créneau Voir avec votre contact informatique Chronopost JJMMAAHHmm
$elem[34] = ""; //Fin du créneau Voir avec votre contact informatique Chronopost JJMMAAHHmm
$elem[35] = ""; //Niveau tarifaire Voir avec votre contact informatique Chronopost
$elem[36] = ""; //Code service Voir avec votre contact informatique Chronopost
$lines[] = implode($separator, $elem);
}
$filename = "chronofresh-". date('dmyHm') . ".csv";
$content = implode("\r\n", $lines);
$response = new Response($content, Response::HTTP_OK, ['Content-Type' => 'text/csv']);
$response->setPublic();
$response->setMaxAge(0);
$response->headers->add([
'Content-Disposition' => $response->headers->makeDisposition('attachment', $filename),
]);
return $response;
}
public function CancelAction (Request $request, string $id, SenderInterface $emailSender)
{
$configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
$order = $this->getOrderRepository()->findOneById($id);
//Email pour l'admin
$emailSender->send(
'nouvelle_commande',
$emailsAdmin,
['order' => $order, 'boutique' => $boutique, 'channel' => $channel, 'shopillingData' => $shopillingData, 'localeCode' => $localeCode],
);
return $this->redirectHandler->redirectToRoute(
$configuration,
$options['route'] ?? 'sylius_shop_homepage',
$options['parameters'] ?? []
);
return $this->redirectToRoute('app_admin_boutique', [], 301);
}
public function CloseAction (Request $request, string $id)
{
$configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
$order = $this->getOrderRepository()->findOneById($id);
foreach ($order->getShipments() as $shipment) {
$stateMachine = $this->stateMachineFactory->get($shipment, ShipmentTransitions::GRAPH);
if ($stateMachine->can(ShipmentTransitions::TRANSITION_SHIP)) {
$stateMachine->apply(ShipmentTransitions::TRANSITION_SHIP);
}
}
return $this->redirectToRoute('homepage', [], 301);
}
public function DownloadInvoiceAction(Request $request, string $id): Response
{
$synaps = $this->get('app.service.synaps');
$configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
/** @var Order $order */
$order = $this->getOrderRepository()->find($id);
$locale = $request->getLocale();
$localeCode = $request->getDefaultLocale();
$channel = $order->getChannel();
if ($channel->getCode() === 'Mons') {
$invoice = $synaps->fetchInvoice($order);
if (!$invoice) {
throw new NotFoundHttpException('La facture n\'est pas disponible actuellement. Veuillez réessayer plus tard.');
}
$response = new Response($invoice->getContents(), Response::HTTP_OK, ['Content-Type' => 'application/pdf']);
$response->headers->add([
'Content-Disposition' => $response->headers->makeDisposition('attachment', 'Facture-'.$order->getNumber().'.pdf'),
]);
return $response;
} else {
$footer = "";
$wfooter = $channel->getFooterInvoice();
if (isset($wfooter))
$footer = nl2br($wfooter);
$shippingmethods = $order->getShipments();
$boutique = false;
$shopillingData = $channel->getShopbillingData();
foreach ($shippingmethods as $shipping) {
$shippingmethod = $shipping->getMethod()->getCode();
if ($shippingmethod == "collect") {
$boutique = $shipping->getBoutiqueId();
}
}
if ($boutique) {
$wfooter = $boutique->getFooterInvoice();
if (isset($wfooter))
$footer = nl2br($wfooter);
$emailboutique = $boutique->getEmailCommande();
if (isset($emailboutique) && !empty($emailboutique)) {
$emailsAdmin[] = $emailboutique;
}
}
$contents = $this->render('@SyliusShop/facture.html.twig', ['order' => $order, 'footer' => $footer, 'boutique' => $boutique, 'shopillingData' => $shopillingData, 'channel' => $channel, 'localeCode' => $localeCode]);
$filename = "MONS-" . $order->getNumber() . ".pdf";
$html2pdf = new Html2Pdf('P', 'A4', 'fr', true, 'UTF-8', array(6, 6, 6, 6));
//$html2pdf = new Html2Pdf('P', 'A4', 'fr', true, 'UTF-8', array(15, 5, 15, 5));
$html2pdf->pdf->SetDisplayMode('fullpage');
$html2pdf->writeHTML($contents);
$pdfContent = $html2pdf->output($filename, 'D');
return null;
// $response = new Response($pdfContent->content(), Response::HTTP_OK, ['Content-Type' => 'application/pdf']);
//$response->headers->add([
// 'Content-Disposition' => $response->headers->makeDisposition('attachment', $pdfContent->filename()),
//]);
//return $response;
}
}
}