src/Controller/CarrelloController.php line 813
<?php
namespace App\Controller;
use App\Entity\Anagrafiche;
use App\Entity\AnagraficheIndirizzi;
use App\Entity\Articoli;
use App\Entity\AssociazioneSpedizioniClienti;
use App\Entity\Carrello;
use App\Entity\CouponDettaglio;
use App\Entity\CouponDettaglioUtilizzo;
use App\Entity\Destinazioni;
use App\Entity\FiltroVisualizzazioneArticoliClienti;
use App\Entity\MailSecondarieUtenti;
use App\Entity\MappaCategorieArticoli;
use App\Entity\ModalitaPagamento;
use App\Entity\ModalitaSpedizione;
use App\Entity\Ordini;
use App\Entity\Pagamenti;
use App\Entity\RigheCarrello;
use App\Entity\User;
use App\Entity\UserCampiCustomTestata;
use App\Entity\UserCampiCustomValori;
use App\Model\Carrello\CreaRigaCarrelloValoriOpzionali;
use App\Model\Carrello\FunzioniCarrello;
use App\Model\Carrello\RitornoConversioneCarrelloInOrdine;
use App\Model\Carrello\RitornoGenericoCarrello;
use App\Model\Carrello\Validator;
use App\Model\ContenitoreCategoriePerFiltri;
use App\Model\Costanti;
use App\Model\Entita\AlberoCategorie;
use App\Model\Entita\AltriDatiUtente;
use App\Model\GestioneUtenti;
use App\Model\Mailer;
use App\Model\RecuperoDati;
use App\Model\Translating\Translating;
use App\Repository\AssociazioneSpedizioniClientiRepository;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Mapping\Entity;
use Psr\Log\LoggerInterface;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Twig\Environment;
/**
* Class CarrelloController
* @package App\Controller
*/
class CarrelloController extends AbstractController
{
/** @var TokenStorageInterface */
private $token;
/** @var ServiziController */
private $servizi;
/** @var ReturnImpostazioniServiceController */
private $imp;
/** @var Translating */
private $translating;
/** @var Environment */
private $twig;
/** @var Mailer */
private $mailer;
/** @var SessionInterface */
private $session;
/** @var FormFactoryInterface */
private $formFactory;
/** @var LoggerInterface */
private $logger;
/** @var GestioneUtenti */
private $gestioneUtenti;
/**
* CarrelloController constructor.
* @param TokenStorageInterface $token
* @param ServiziController $servizi
* @param ReturnImpostazioniServiceController $imp
* @param Translating $translating
* @param Environment $twig
* @param Mailer $mailer
* @param SessionInterface $session
* @param LoggerInterface $logger
* @param GestioneUtenti $gestioneUtenti
*/
public function __construct(TokenStorageInterface $token, ServiziController $servizi, ReturnImpostazioniServiceController $imp, Translating $translating, Environment $twig, Mailer $mailer, RequestStack $requestStack, FormFactoryInterface $formFactory, LoggerInterface $logger, GestioneUtenti $gestioneUtenti)
{
$this->token = $token;
$this->servizi = $servizi;
$this->imp = $imp;
$this->translating = $translating;
$this->twig = $twig;
$this->mailer = $mailer;
$this->session = $requestStack->getSession();
$this->formFactory = $formFactory;
$this->logger = $logger;
$this->gestioneUtenti = $gestioneUtenti;
}
/**
* @Route("/cart/empty", name="carrello_svuota_carrello")
*/
public function svuotaCarrelloAjaxAction(Request $request)
{
$user = $this->servizi->OttieniUtenteCorrente();
$secret = "";
if(!$user)
$secret = $request->cookies->get('secret_user');
$repo = $this->servizi->doctrine->getRepository(Carrello::class);
$altriDati = AltriDatiUtente::CreaDaUtente($user);
if ($user) {
if ($this->isGranted("ROLE_ADMIN") || $this->isGranted("ROLE_AGENTE") || $this->isGranted("ROLE_COMMERCIALE")) {
if ($altriDati && $altriDati->codice != ''){
$anagraficaTrovata = $this->servizi->ritornaAnagraficaShopSelezionataDaCookieIdentificativo($altriDati->codice, $this->servizi->OttieniUtenteCorrente());
if ($anagraficaTrovata) {
$clienteSelezionatoAgente = $anagraficaTrovata;
}
$carrello = $repo->findOneBy(array('agente' => $this->servizi->OttieniUtenteCorrente(), 'anagrafica' => $anagraficaTrovata, 'tipoOrdine' => $altriDati->tipoOrdine != '' ? $altriDati->tipoOrdine : null));
}else{
$carrello = $repo->findOneBy(array('cliente' => $user, 'tipoOrdine' => $altriDati->tipoOrdine != '' ? $altriDati->tipoOrdine : null));
}
}else{
$carrello = $repo->findOneBy(array('cliente' => $user, 'tipoOrdine' => $altriDati->tipoOrdine != '' ? $altriDati->tipoOrdine : null));
}
}
else
$carrello = $repo->findOneBy(array('secret' => $secret));
$em = $this->servizi->doctrine->getManager();
$em->remove($carrello);
$em->flush();
$this->addFlash('notice', 'Carrello svuotato con successo!');
return $this->redirectToRoute('carrello');
}
/**
* @Route("/cart/addFromExcel", name="carrello_aggiungi_da_excel", options={"expose"=true})
*/
public function aggiungiCodiciDaExcelAction(Request $request)
{
$funzioniCarrello = new FunzioniCarrello($this->servizi->doctrine, $this->imp, $this->servizi);
$recuperaDati = new RecuperoDati($this->servizi->doctrine, $this->imp, $this->servizi);
$secret = "";
/** @var User|null $agente */
$agente = null;
/** @var Anagrafiche|null $anagrafica */
$anagrafica = null;
$codiceCliente = "";
/** @var \App\Model\Entita\Carrello $carrello */
$carrello = null;
ini_set('max_execution_time', 180);
$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);
$em = $this->servizi->doctrine->getManager();
$user = $this->servizi->OttieniUtenteCorrente();
$errori = array();
/** @var RitornoGenericoCarrello[] $ritorniGenericiCarrello */
$ritorniGenericiCarrello = array();
$batch_size = 100;
$count_righe = 1;
$row = 0;
$now = new \DateTime();
$altriDati = AltriDatiUtente::CreaDaUtente($user);
if (!$user)
$secret = $request->cookies->get('secret_user');
else {
$codiceCliente = $user->getCodiceCliente();
if ($this->isGranted("ROLE_ADMIN") || $this->isGranted("ROLE_AGENTE") || $this->isGranted("ROLE_COMMERCIALE")) {
$agente = $this->servizi->OttieniUtenteCorrente();
if ($altriDati && $altriDati->codice != '') {
$anagraficaTrovata = $this->servizi->ritornaAnagraficaShopSelezionataDaCookieIdentificativo($altriDati->codice, $this->servizi->OttieniUtenteCorrente());
if ($anagraficaTrovata) {
$codiceCliente = $anagraficaTrovata->getCodice();
$anagrafica = $anagraficaTrovata;
}
}
}
}
/** @var $carrello \App\Model\Entita\Carrello */
$carrello = $recuperaDati->recuperaDettagliCarrello($secret, $user, $request->getLocale(), $codiceCliente, $anagrafica, $agente, true, $altriDati->tipoOrdine);
$split_linee = explode("\n", $request->get('lista_da_importare'));
foreach ($split_linee as $riga) {
if ($row == $batch_size) {
$row = 0;
$em->flush();
$em->clear();
}
try {
//CODICE ARTICOLO - QUANTITA - MARCA
$colonne = explode("\t", $riga);
if ($colonne[0] != "") {
$codiceArticolo = $colonne[0];
$quantita = str_replace(",", ".", $colonne[1]);
$marca = null;
if (count($colonne) >= 3)
$marca = $colonne[2];
$articolo = $this->servizi->doctrine->getRepository(Articoli::class)->findOneBy(array('codice' => $codiceArticolo));
if(!$articolo){
array_push($errori, "Errore riga: " . $count_righe . " articolo non trovato! Codice: " . $codiceArticolo . ' - Marca: ' . $marca);
continue;
}
/** @var MappaCategorieArticoli $mappa */
$mappa = $this->servizi->ritornaMappaCategoriaArticoliSeInserita($articolo, null, null, null, null, $marca ? $marca : null, null);
if (!$mappa) {
array_push($errori, "Errore riga: " . $count_righe . " mappa categoria articolo non trovato! Codice: " . $codiceArticolo . ' - Marca: ' . $marca);
continue;
}
if($quantita <= 0){
array_push($errori, "Errore riga: " . $count_righe . " La quantità deve essere maggiore di 0! Codice: " . $codiceArticolo . ' - Marca: ' . $marca);
continue;
}
$ritornoGenericoCarrello = $funzioniCarrello->CreaRigaCarrello(
$mappa->getId(),
'',
'',
$quantita,
$user,
$secret,
$agente,
$anagrafica,
new CreaRigaCarrelloValoriOpzionali(),
$request->getLocale(),
$this->servizi->doctrine->getManager()
);
if(!$ritornoGenericoCarrello->esito){
array_push($errori, "Errore riga: " . $count_righe . " Codice: " . $codiceArticolo . " - Marca: " . $marca . " -- Errore: " . $ritornoGenericoCarrello->RitornaStringaCompostaMessaggiSemplificati());
}
array_push($ritorniGenericiCarrello, $ritornoGenericoCarrello);
}
}
catch (\Exception $ex){
array_push($errori, "Errore riga: " . $count_righe . " Codice: " . $codiceArticolo . " - Marca: " . $marca . " -- Errore: Generico");
$this->servizi->ScriviRegistroAttivita($request->getClientIp(), "", false, $ex->getTraceAsString(), $user);
}
$count_righe++;
}
$em->flush();
return new JsonResponse(array(
'errori' => $errori
));
}
/**
* @Route("/agente/spostaCarrello/{idCarrelloOrigine}/{idAnagraficaDestinazione}", name="agente_sposta_carrello", options={"expose"=true})
*/
public function agenteSpostaCarrello(Request $request, $idCarrelloOrigine, $idAnagraficaDestinazione)
{
$ritorno = array(
'successo' => 'SI',
'messaggio' => ''
);
$carrello = $this->servizi->doctrine->getRepository(Carrello::class)->find($idCarrelloOrigine);
if($carrello){
$anagraficaDestinazione = $this->servizi->doctrine->getRepository(Anagrafiche::class)->find($idAnagraficaDestinazione);
if($anagraficaDestinazione) {
if (!$this->isGranted("ROLE_ADMIN") && $this->isGranted("ROLE_AGENTE")) {
//Verifico che l'agente sia autorizzato a gestire questo carrello
if ($carrello->getAgente() != $this->servizi->OttieniUtenteCorrente() && $carrello->getCliente() != $this->servizi->OttieniUtenteCorrente()) {
$ritorno['successo'] = 'NO';
$ritorno['messaggio'] = "Autorizzazione negata!";
return new JsonResponse($ritorno);
}
if(!in_array($anagraficaDestinazione->getCodiceAgente(), $this->servizi->ritornaArrayCodiciAssociatiAgenteFornitoreUtente($this->servizi->OttieniUtenteCorrente()))){
$ritorno['successo'] = 'NO';
$ritorno['messaggio'] = "Autorizzazione negata!";
return new JsonResponse($ritorno);
}
}
$funzioniCarrello = new FunzioniCarrello($this->servizi->doctrine, $this->imp, $this->servizi);
$spostamentoCarrello = $funzioniCarrello->SpostaERicalcolaCarrello($carrello, $this->servizi->OttieniUtenteCorrente(), $anagraficaDestinazione, $this->servizi->OttieniUtenteCorrente(), $request->getLocale());
if($spostamentoCarrello->esito){
$ritorno['messaggio'] = 'Carrello spostato correttamente!';
return new JsonResponse($ritorno);
}else{
$ritorno['successo'] = 'NO';
$ritorno['messaggio'] = $spostamentoCarrello->RitornaStringaCompostaMessaggiSemplificati();
return new JsonResponse($ritorno);
}
}else{
$ritorno['successo'] = 'NO';
$ritorno['messaggio'] = "Anagrafica con ID: " . $idAnagraficaDestinazione . ' non trovata!';
return new JsonResponse($ritorno);
}
}else{
$ritorno['successo'] = 'NO';
$ritorno['messaggio'] = "Carrello con ID: " . $idCarrelloOrigine . ' non trovato!';
return new JsonResponse($ritorno);
}
}
/**
* @Route("/cart/dettagliJson", name="carrello_dettagli_json", options={"expose"=true})
*/
public function dettagliCarrelloAjaxJson(Request $request)
{
$user = $this->servizi->OttieniUtenteCorrente();
$secret = "";
/** @var User $agente */
$agente = null;
/** @var Anagrafiche $anagrafica */
$anagrafica = null;
$altriDati = AltriDatiUtente::CreaDaUtente($user);
if(!$user)
$secret = $request->cookies->get('secret_user');
else {
if ($this->isGranted("ROLE_ADMIN") || $this->isGranted("ROLE_AGENTE") || $this->isGranted("ROLE_COMMERCIALE")) {
$agente = $this->servizi->OttieniUtenteCorrente();
if ($altriDati && $altriDati->codice != ''){
$anagraficaTrovata = $this->servizi->ritornaAnagraficaShopSelezionataDaCookieIdentificativo($altriDati->codice, $this->servizi->OttieniUtenteCorrente());
if ($anagraficaTrovata) {
$anagrafica = $anagraficaTrovata;
}
}
}
}
$repo = $this->servizi->doctrine->getRepository(RigheCarrello::class);
/** @var Carrello|null $carrello */
$carrello = $this->servizi->RecuperaCarrello($secret, $agente, $anagrafica, $user);
$ritorno = array(
'imponibile' => $carrello ? $carrello->getTotale() : 0,
'imposta' => $carrello ? $carrello->getTotaleImposta() : 0,
'totale' => $carrello ? $carrello->getTotale() + $carrello->getTotaleImposta() : 0,
);
return new JsonResponse($ritorno);
}
/**
* @Route("/cart/count", name="carrello_conta_articoli", options={"expose"=true})
*/
public function contaArticoliCarrelloAjaxAction(Request $request)
{
$user = $this->servizi->OttieniUtenteCorrente();
$secret = "";
/** @var User $agente */
$agente = null;
/** @var Anagrafiche $anagrafica */
$anagrafica = null;
$altriDati = AltriDatiUtente::CreaDaUtente($user);
if(!$user)
$secret = $request->cookies->get('secret_user');
else {
if ($this->isGranted("ROLE_ADMIN") || $this->isGranted("ROLE_AGENTE") || $this->isGranted("ROLE_COMMERCIALE")) {
$agente = $this->servizi->OttieniUtenteCorrente();
if ($altriDati && $altriDati->codice != ''){
$anagraficaTrovata = $this->servizi->ritornaAnagraficaShopSelezionataDaCookieIdentificativo($altriDati->codice, $this->servizi->OttieniUtenteCorrente());
if ($anagraficaTrovata) {
$anagrafica = $anagraficaTrovata;
}
}
}
}
$repo = $this->servizi->doctrine->getRepository(RigheCarrello::class);
if ($user) {
$queryBuilder = $repo->createQueryBuilder('righe_carrello')->leftJoin('righe_carrello.carrello', 'carrello')->select('SUM(righe_carrello.quantita), carrello.id');
if ($agente && $anagrafica){
$queryBuilder = $queryBuilder->where('carrello.agente = :ag')->setParameter('ag', $agente)
->andWhere('carrello.anagrafica = :ana')->setParameter('ana', $anagrafica);
} else{
$queryBuilder = $queryBuilder->where('carrello.cliente = :cliente')->setParameter('cliente', $user)
->andWhere('carrello.anagrafica IS NULL');
}
if($altriDati && $altriDati->tipoOrdine != ''){
$queryBuilder = $queryBuilder->andWhere('carrello.tipoOrdine = :tipo')->setParameter('tipo', $altriDati->tipoOrdine);
}
}
else{
$queryBuilder = $repo->createQueryBuilder('righe_carrello')->leftJoin('righe_carrello.carrello', 'carrello')->select('SUM(righe_carrello.quantita), carrello.id')
->where('carrello.secret = :secret')->setParameter('secret', $secret);
}
$riga = $queryBuilder->groupBy('carrello.id')->getQuery()->getResult();
$ritorno = array(
'count' => 0,
'idCarrello' => 0
);
if(count($riga) > 0) {
$riga = $riga[0];
$ritorno = array(
'count' => round($riga["1"], 0),
'idCarrello' => $riga["id"]
);
}
return new JsonResponse($ritorno);
}
/**
* @Route("/cart/deleteRow/{idRiga}/{ajax}", name="carrello_elimina_riga", defaults={"ajax" = 0}, options={"expose"=true})
*/
public function eliminaRigaiCarrelloAjaxAction(Request $request, $idRiga, $ajax = 0)
{
$user = $this->servizi->OttieniUtenteCorrente();
$secret = "";
/** @var User|null $agente */
$agente = null;
/** @var Anagrafiche|null $anagrafica */
$anagrafica = null;
$altriDati = AltriDatiUtente::CreaDaUtente($user);
if(!$user)
$secret = $request->cookies->get('secret_user');
else {
if ($this->isGranted("ROLE_ADMIN") || $this->isGranted("ROLE_AGENTE") || $this->isGranted("ROLE_COMMERCIALE")) {
$agente = $this->servizi->OttieniUtenteCorrente();
if ($altriDati && $altriDati->codice != ''){
$anagraficaTrovata = $this->servizi->ritornaAnagraficaShopSelezionataDaCookieIdentificativo($altriDati->codice, $this->servizi->OttieniUtenteCorrente());
if ($anagraficaTrovata) {
$anagrafica = $anagraficaTrovata;
}
}
}
}
$repo = $this->servizi->doctrine->getRepository(RigheCarrello::class);
if ($user) {
/** @var $queryBuilder RigheCarrello */
$queryBuilder = $repo->createQueryBuilder('righe_carrello')->leftJoin('righe_carrello.carrello', 'carrello');
if ($agente && $anagrafica){
$queryBuilder = $queryBuilder->where('carrello.agente = :ag')->setParameter('ag', $agente)
->andWhere('carrello.anagrafica = :ana')->setParameter('ana', $anagrafica)
->andWhere('righe_carrello.id = :idRiga')->setParameter('idRiga', $idRiga);
} else{
$queryBuilder = $queryBuilder->where('carrello.cliente = :cliente')->setParameter('cliente', $user)
->andWhere('righe_carrello.id = :idRiga')->setParameter('idRiga', $idRiga)
->andWhere('carrello.anagrafica IS NULL');
}
if($altriDati && $altriDati->tipoOrdine != ''){
$queryBuilder = $queryBuilder->andWhere('carrello.tipoOrdine = :tipo')->setParameter('tipo', $altriDati->tipoOrdine);
}
}
else{
/** @var $queryBuilder RigheCarrello */
$queryBuilder = $repo->createQueryBuilder('righe_carrello')->leftJoin('righe_carrello.carrello', 'carrello')
->where('carrello.secret = :secret')->setParameter('secret', $secret)
->andWhere('righe_carrello.id = :idRiga')->setParameter('idRiga', $idRiga);
}
$funzioniCarrello = new FunzioniCarrello($this->servizi->doctrine, $this->imp, $this->servizi);
$ritornoGenericoCarrello = $funzioniCarrello->ModificaOEliminaRiga($queryBuilder->getQuery()->getSingleResult(), true);
if ($ajax)
{
return new Response("");
}
if ($ritornoGenericoCarrello->esito){
$this->addFlash(
'notice',
'Riga eliminata'
);
}else{
$this->addFlash(
'error',
$ritornoGenericoCarrello->RitornaStringaCompostaMessaggiSemplificati()
);
}
return $this->redirectToRoute('carrello');
}
/**
* @Route("/admin/carrello/elimina/{id}", name="elimina_carrello")
*/
public function deleteAction(Request $request, $id)
{
$em = $this->servizi->doctrine->getManager();
$prom = $em->getRepository(Carrello::class)->find($id);
if ($prom) {
$sql = "SET FOREIGN_KEY_CHECKS=0;
DELETE FROM righe_carrello WHERE carrello_id = ?;
DELETE FROM carrello WHERE id = ?;
SET FOREIGN_KEY_CHECKS=1";
$query = explode(';', $sql);
foreach ($query as $item)
{
$conn = $this->servizi->doctrine->getConnection();
$stmt = $conn->prepare($item);
$stmt->bindValue(1, $id);
$stmt->execute();
}
$em->remove($prom);
$em->flush();
$this->addFlash(
'notice',
'Carrello eliminato'
);
return $this->redirectToRoute('lista_carrelli');
}
else{
$this->addFlash(
'error',
"Carrello con ID: " . $id . " inesistente!"
);
return $this->redirect($this->generateUrl('lista_carrelli'));
}
}
/**
* @Route("/cart/editRowNote/{idRiga}/{aziendale}", name="carrello_modifica_nota_riga", defaults={"aziendale" = "0"}, options={"expose"=true})
*/
public function modificaNotaRigaCarrelloAjaxAction(Request $request, $idRiga, $aziendale = '0')
{
$user = $this->servizi->OttieniUtenteCorrente();
/** @var User|null $agente */
$agente = null;
/** @var Anagrafiche|null $anagrafica */
$anagrafica = null;
$altriDati = AltriDatiUtente::CreaDaUtente($user);
$secret = "";
if(!$user)
$secret = $request->cookies->get('secret_user');
else {
if ($this->isGranted("ROLE_ADMIN") || $this->isGranted("ROLE_AGENTE") || $this->isGranted("ROLE_COMMERCIALE")) {
$agente = $this->servizi->OttieniUtenteCorrente();
if ($altriDati && $altriDati->codice != ''){
$anagraficaTrovata = $this->servizi->ritornaAnagraficaShopSelezionataDaCookieIdentificativo($altriDati->codice, $this->servizi->OttieniUtenteCorrente());
if ($anagraficaTrovata) {
$anagrafica = $anagraficaTrovata;
}
}
}
}
$repo = $this->servizi->doctrine->getRepository(RigheCarrello::class);
/** @var $queryBuilder RigheCarrello*/
if ($user) {
$queryBuilder = $repo->createQueryBuilder('righe_carrello')->leftJoin('righe_carrello.carrello', 'carrello');
if ($agente && $anagrafica){
$queryBuilder = $queryBuilder->where('carrello.agente = :ag')->setParameter('ag', $agente)
->andWhere('carrello.anagrafica = :ana')->setParameter('ana', $anagrafica)
->andWhere('righe_carrello.id = :idRiga')->setParameter('idRiga', $idRiga);
} else {
$queryBuilder = $queryBuilder->where('carrello.cliente = :cliente')->setParameter('cliente', $user)
->andWhere('righe_carrello.id = :idRiga')->setParameter('idRiga', $idRiga)
->andWhere('carrello.anagrafica IS NULL');
}
if($altriDati && $altriDati->tipoOrdine != ''){
$queryBuilder = $queryBuilder->andWhere('carrello.tipoOrdine = :tipo')->setParameter('tipo', $altriDati->tipoOrdine);
}
$queryBuilder = $queryBuilder->getQuery()->getResult();
}
else{
$queryBuilder = $repo->createQueryBuilder('righe_carrello')->leftJoin('righe_carrello.carrello', 'carrello')
->where('carrello.secret = :secret')->setParameter('secret', $secret)
->andWhere('righe_carrello.id = :idRiga')->setParameter('idRiga', $idRiga)->getQuery()->getResult();
}
$data = $request->get('data');
if (count($queryBuilder) > 0){
$queryBuilder = $queryBuilder[0];
$consentiModificaNota = true;
if ($queryBuilder->getTipologiaPreimpostata())
{
if (!$queryBuilder->getTipologiaPreimpostata()->getConsentiModificaNota())
$consentiModificaNota = false;
}
if ($consentiModificaNota) {
if($aziendale != '1') {
$queryBuilder->setNota($data['nota']);
} else {
$queryBuilder->setNotaAziendale($data['nota']);
}
$em = $this->servizi->doctrine->getManager();
$em->persist($queryBuilder);
$em->flush();
}
}
return new Response("");
}
/**
* @Route("/cart/editDataConsegna/{idRiga}", name="carrello_modifica_data_consegna_riga", options={"expose"=true})
*/
public function modificaDataConsegnaRigaCarrelloAjaxAction(Request $request, $idRiga)
{
$user = $this->servizi->OttieniUtenteCorrente();
/** @var User|null $agente */
$agente = null;
/** @var Anagrafiche|null $anagrafica */
$anagrafica = null;
$altriDati = AltriDatiUtente::CreaDaUtente($user);
$secret = "";
if(!$user)
$secret = $request->cookies->get('secret_user');
else {
if ($this->isGranted("ROLE_ADMIN") || $this->isGranted("ROLE_AGENTE") || $this->isGranted("ROLE_COMMERCIALE")) {
$agente = $this->servizi->OttieniUtenteCorrente();
if ($altriDati && $altriDati->codice != ''){
$anagraficaTrovata = $this->servizi->ritornaAnagraficaShopSelezionataDaCookieIdentificativo($altriDati->codice, $this->servizi->OttieniUtenteCorrente());
if ($anagraficaTrovata) {
$anagrafica = $anagraficaTrovata;
}
}
}
}
$repo = $this->servizi->doctrine->getRepository(RigheCarrello::class);
/** @var $queryBuilder RigheCarrello*/
if ($user) {
$queryBuilder = $repo->createQueryBuilder('righe_carrello')->leftJoin('righe_carrello.carrello', 'carrello');
if ($agente && $anagrafica){
$queryBuilder = $queryBuilder->where('carrello.agente = :ag')->setParameter('ag', $agente)
->andWhere('carrello.anagrafica = :ana')->setParameter('ana', $anagrafica)
->andWhere('righe_carrello.id = :idRiga')->setParameter('idRiga', $idRiga);
} else{
$queryBuilder = $queryBuilder->where('carrello.cliente = :cliente')->setParameter('cliente', $user)
->andWhere('righe_carrello.id = :idRiga')->setParameter('idRiga', $idRiga)
->andWhere('carrello.anagrafica = :ana')->setParameter('ana', null);
}
if($altriDati && $altriDati->tipoOrdine != ''){
$queryBuilder = $queryBuilder->andWhere('carrello.tipoOrdine = :tipo')->setParameter('tipo', $altriDati->tipoOrdine);
}
$queryBuilder = $queryBuilder->getQuery()->getResult();
}
else{
$queryBuilder = $repo->createQueryBuilder('righe_carrello')->leftJoin('righe_carrello.carrello', 'carrello')
->where('carrello.secret = :secret')->setParameter('secret', $secret)
->andWhere('righe_carrello.id = :idRiga')->setParameter('idRiga', $idRiga)->getQuery()->getResult();
}
$data = $request->get('data');
if (count($queryBuilder) > 0) {
$queryBuilder = $queryBuilder[0];
$queryBuilder->setDataConsegna($data['data-consegna'] != '' ? \DateTime::createFromFormat("d/m/Y", $data['data-consegna']) : null);
$em = $this->servizi->doctrine->getManager();
$em->persist($queryBuilder);
$em->flush();
}
return new Response("");
}
/**
* @Route("/cart/editRowQuantity/{idRiga}", name="carrello_modifica_qta_riga", options={"expose"=true})
*/
public function modificaQtaRigaCarrelloAjaxAction(Request $request, $idRiga)
{
$user = $this->servizi->OttieniUtenteCorrente();
$secret = "";
/** @var User|null $agente */
$agente = null;
/** @var Anagrafiche|null $anagrafica */
$anagrafica = null;
$altriDati = AltriDatiUtente::CreaDaUtente($user);
if(!$user)
$secret = $request->cookies->get('secret_user');
else {
if ($this->isGranted("ROLE_ADMIN") || $this->isGranted("ROLE_AGENTE") || $this->isGranted("ROLE_COMMERCIALE")) {
$agente = $this->servizi->OttieniUtenteCorrente();
if ($altriDati && $altriDati->codice != ''){
$anagraficaTrovata = $this->servizi->ritornaAnagraficaShopSelezionataDaCookieIdentificativo($altriDati->codice, $this->servizi->OttieniUtenteCorrente());
if ($anagraficaTrovata) {
$anagrafica = $anagraficaTrovata;
}
}
}
}
$repo = $this->servizi->doctrine->getRepository(RigheCarrello::class);
$funzioniCarrello = new FunzioniCarrello($this->servizi->doctrine, $this->imp, $this->servizi);
/** @var $queryBuilder RigheCarrello*/
if ($user) {
$queryBuilder = $repo->createQueryBuilder('righe_carrello')->leftJoin('righe_carrello.carrello', 'carrello');
if ($agente && $anagrafica){
$queryBuilder = $queryBuilder->where('carrello.agente = :ag')->setParameter('ag', $agente)
->andWhere('carrello.anagrafica = :ana')->setParameter('ana', $anagrafica)
->andWhere('righe_carrello.id = :idRiga')->setParameter('idRiga', $idRiga);
}
else if ($agente){
$queryBuilder = $queryBuilder
->where('carrello.agente = :ag')->setParameter('ag', $agente)
->andWhere('carrello.cliente = :cliente')->setParameter('cliente', $user)
->andWhere('carrello.anagrafica IS NULL')
->andWhere('righe_carrello.id = :idRiga')->setParameter('idRiga', $idRiga);
}
else{
$queryBuilder = $queryBuilder->where('carrello.cliente = :cliente')->setParameter('cliente', $user)
->andWhere('righe_carrello.id = :idRiga')->setParameter('idRiga', $idRiga)
->andWhere('carrello.anagrafica IS NULL');
}
if($altriDati && $altriDati->tipoOrdine != ''){
$queryBuilder = $queryBuilder->andWhere('carrello.tipoOrdine = :tipo')->setParameter('tipo', $altriDati->tipoOrdine);
}
$queryBuilder = $queryBuilder->getQuery()->getSingleResult();
}
else{
$queryBuilder = $repo->createQueryBuilder('righe_carrello')->leftJoin('righe_carrello.carrello', 'carrello')
->where('carrello.secret = :secret')->setParameter('secret', $secret)
->andWhere('righe_carrello.id = :idRiga')->setParameter('idRiga', $idRiga)->getQuery()->getSingleResult();
}
$data = $request->get('data');
$qtaMod = $data['quantita'];
if ($queryBuilder) {
$queryBuilder->setQuantita($qtaMod);
if ($queryBuilder->getTipologiaPreimpostata()) {
$qtaMod = $qtaMod * $queryBuilder->getTipologiaPreimpostata()->getFattoreMoltiplicazione();
$queryBuilder->setQuantita($qtaMod);
if ($queryBuilder->getTipologiaPreimpostata()->getInserisciQtaAutomatica())
$queryBuilder->setNota($data['quantita'] . " PZ " . $queryBuilder->getTipologiaPreimpostata()->getNotaEsportazioneRiga());
else
$queryBuilder->setNota($queryBuilder->getTipologiaPreimpostata()->getNotaEsportazioneRiga());
}
$queryBuilder->setTotaleRiga($queryBuilder->getNettoCad() * $queryBuilder->getQuantita());
$queryBuilder->setTotaleRigaLordo($queryBuilder->getLordoCad() * $queryBuilder->getQuantita());
$queryBuilder->setTotaleImposta($this->servizi->calcolaImpostaSuImporto($queryBuilder->getTotaleRiga(), $queryBuilder->getAliquotaIva()));
$ritorno = $funzioniCarrello->ModificaOEliminaRiga($queryBuilder, false, false);
$errore = "";
if (!$ritorno->esito){
foreach ($ritorno->messaggiSemplificati as $msg){
$errore .= ($msg . "\n");
}
}
$carrAggiornato = $this->servizi->doctrine->getRepository(Carrello::class)->find($queryBuilder->getCarrello()->getId());
return new JsonResponse(array(
'importoCarrello' => round($carrAggiornato->getTotale(), 2),
'impostaCarrello' => round($carrAggiornato->getTotaleImposta(), 2),
'totaleCarrello' => round($carrAggiornato->getTotale() + $carrAggiornato->getTotaleImposta(), 2),
'errore' => $errore
));
}
else{
return new JsonResponse(array(
'importoCarrello' => '0',
'impostaCarrello' => '0',
'totaleCarrello' => '0',
'errore' => "PERMESSO_NEGATO"
));
}
}
/**
* @Route("/cart", name="carrello")
*/
public function mostraCarrello(Request $request)
{
/** @var User $user */
$user = $this->servizi->OttieniUtenteCorrente();
$recuperaDati = new RecuperoDati($this->servizi->doctrine, $this->imp, $this->servizi);
$secret = "";
/** @var User|null $agente */
$agente = null;
/** @var Anagrafiche|null $anagrafica */
$anagrafica = null;
$codiceCliente = "";
/** @var \App\Model\Entita\Carrello $carrello */
$carrello = null;
$traduci = $this->translating;
$traduci->CaricaTraduzioniDaFamiglie(array("carrello", "mail_nuovo_ordine"), $request->getLocale());
$filtroComune = $this->imp->ritornaImpostazioneDaNome('FiltroVisualizzazioneArticoloPerShopComune');
// FILTRO VISUALIZZAZIONE ARTICOLI CLIENTI
$filtroRiferimento = null;
if ($user){
if ($user->getFiltroVisualizzazioneArticoliClienti()) {
if ($user->getFiltroVisualizzazioneArticoliClienti()->getElencoCategorie() != '')
$filtroRiferimento = $user->getFiltroVisualizzazioneArticoliClienti();
}
}else if ($filtroComune != ''){
$ffl = $this->servizi->doctrine->getRepository(FiltroVisualizzazioneArticoliClienti::class)->find($filtroComune);
if ($ffl && $ffl->getElencoCategorie() != '')
$filtroRiferimento = $ffl;
}
$filtro = new ContenitoreCategoriePerFiltri();
/** @var $categorie AlberoCategorie[] */
$listaCategorie = $recuperaDati->recuperaAlberoCategorie($filtro, $request->getLocale(), $filtroRiferimento);
$listaCategorieChiaviParent = array();
foreach ($listaCategorie as $lc){
if($lc->parent){
$_lc_id = $lc->parent->id;
if (key_exists($_lc_id, $listaCategorieChiaviParent)){
array_push($listaCategorieChiaviParent[$_lc_id], $lc);
}else{
$listaCategorieChiaviParent[$_lc_id] = array($lc);
}
}
}
$altriDati = AltriDatiUtente::CreaDaUtente($user);
if(!$user)
$secret = $request->cookies->get('secret_user');
else {
$codiceCliente = $user->getCodiceCliente();
if ($this->isGranted("ROLE_ADMIN") || $this->isGranted("ROLE_AGENTE") || $this->isGranted("ROLE_COMMERCIALE")) {$agente = $this->servizi->OttieniUtenteCorrente();
if ($altriDati && $altriDati->codice != ''){
$anagraficaTrovata = $this->servizi->ritornaAnagraficaShopSelezionataDaCookieIdentificativo($altriDati->codice, $this->servizi->OttieniUtenteCorrente());
if ($anagraficaTrovata) {
$codiceCliente = $anagraficaTrovata->getCodice();
$anagrafica = $anagraficaTrovata;
}
}
}
}
/** @var $carrello \App\Model\Entita\Carrello */
$carrello = $recuperaDati->recuperaDettagliCarrello($secret, $user, $request->getLocale(), $codiceCliente, $anagrafica, $agente, true, $altriDati ? $altriDati->tipoOrdine : null);
/** @var $destinazioni Destinazioni[] */
$destinazioni = $this->servizi->doctrine->getRepository(Destinazioni::class)->findBy(array('azienda' => $user));
/** @var $modalitaPagamento ModalitaPagamento[] */
$modalitaPagamento = $this->servizi->doctrine->getRepository(ModalitaPagamento::class)->findAll();
/** @var $associazioneSpedizioneConsegna AssociazioneSpedizioniClienti[] */
$associazioneSpedizioneConsegna = $this->servizi->doctrine->getRepository(AssociazioneSpedizioniClienti::class)->findBy(array('azienda' => $user));
/** @var $modalitaSpedizione ModalitaSpedizione[] */
$modalitaSpedizione = $this->servizi->doctrine->getRepository(ModalitaSpedizione::class)->findAll();
if(!$carrello || $carrello->id == '' || count($carrello->righe) <= 0 ){
$this->addFlash(
'error',
$traduci->OttieniElementoDizionario('carrello_errore_vuoto', 'carrello')->valoreUscita
);
return $this->redirectToRoute('home_prodotti');
}
$abilitaGestioneCoupon = $this->imp->ritornaImpostazioneDaNome("AbilitaUtilizzoCoupon");
$parametriLayout = array(
Costanti::T_CARRELLO => $carrello,
Costanti::T_RIGHE_CARRELLO => $carrello->righe,
'destinazioni' => $destinazioni,
'anagrafica' => $anagrafica,
'modalitaPagamento' => $modalitaPagamento,
'associazioneSpedizioneConsegna' => $associazioneSpedizioneConsegna,
'modalitaSpedizione' => $modalitaSpedizione,
Costanti::T_LISTA_CATEGORIE => $listaCategorie,
Costanti::T_LISTA_CATEGORIE_CHIAVI_PARENT => $listaCategorieChiaviParent,
Costanti::ID_MODALITA_PAGAMENTO_SELEZIONATA => ($carrello->modalitaPagamento ? $carrello->modalitaPagamento->id : ''),
Costanti::ID_MODALITA_SPEDIZIONE_SELEZIONATA => ($carrello->modalitaSpedizione ? $carrello->modalitaSpedizione->id : ''),
Costanti::MPSC_RADICE_FORM => null
);
if (!$user || $user->getUtenteComune() ){
$formSpedizionePagamento = $this->formFactory->createNamedBuilder(Costanti::MPSC_RADICE_FORM)
->add(Costanti::IO_MODALITA_SPEDIZIONE, EntityType::class, array('required' => false, 'class' => 'App\Entity\ModalitaSpedizione', 'choice_label' => function ($modalita) {
return $modalita->getTestoDescrittivo();
}, 'label' => $traduci->OttieniElementoDizionario("carrello_modalita_spedizione", "carrello")->valoreUscita, 'attr' => array('class' => "form-control input-sm", 'style' => 'padding-left:5px;padding-right:5px;')))
->add(Costanti::IO_MODALITA_PAGAMENTO, EntityType::class, array('required' => false, 'class' => 'App\Entity\ModalitaPagamento', 'choice_label' => function ($modalita) {
return $modalita->getTestoDescrittivo();
}, 'label' => $traduci->OttieniElementoDizionario("carrello_modalita_pagamento", "carrello")->valoreUscita, 'attr' => array('class' => "form-control input-sm", 'style' => 'padding-left:5px;padding-right:5px;')))
->add(Costanti::MPSC_AGGIORNA_ORDINE, SubmitType::class, array('label' => $traduci->OttieniElementoDizionario("carrello_aggiorna", "carrello")->valoreUscita, 'attr' => array('class' => 'form-inline btn btn-sm btn-success', 'style' => 'margin-top:5px;', 'autocomplete' => 'off')))
->getForm();
$formSpedizionePagamento->handleRequest($request);
if($formSpedizionePagamento->isSubmitted() && $formSpedizionePagamento->isValid()) {
$crl = $this->servizi->RecuperaCarrello($secret, $agente, $anagrafica, $user);
if($formSpedizionePagamento[Costanti::IO_MODALITA_SPEDIZIONE]->getData()){
$crl->setModalitaSpedizione($formSpedizionePagamento[Costanti::IO_MODALITA_SPEDIZIONE]->getData());
}
if($formSpedizionePagamento[Costanti::IO_MODALITA_PAGAMENTO]->getData()){
$crl->setModalitaPagamento($formSpedizionePagamento[Costanti::IO_MODALITA_PAGAMENTO]->getData());
}
$em = $this->servizi->doctrine->getManager();
$em->persist($crl);
$em->flush();
$funzioniCarrello = new FunzioniCarrello($this->servizi->doctrine, $this->imp, $this->servizi);
$funzioniCarrello->AggiornaTotaleCarrello($crl->getId());
$carrello = $recuperaDati->recuperaDettagliCarrello($secret, $user, $request->getLocale(), $codiceCliente, $anagrafica, $agente);
$parametriLayout[Costanti::T_CARRELLO] = $carrello;
$parametriLayout[Costanti::ID_MODALITA_PAGAMENTO_SELEZIONATA] = ($carrello->modalitaPagamento ? $carrello->modalitaPagamento->id : '');
$parametriLayout[Costanti::ID_MODALITA_SPEDIZIONE_SELEZIONATA] = ($carrello->modalitaSpedizione ? $carrello->modalitaSpedizione->id : '');
}
$parametriLayout[Costanti::MPSC_RADICE_FORM] = $formSpedizionePagamento->createView();
}
if ($abilitaGestioneCoupon == '1') {
$couponForm = $this->formFactory->createNamedBuilder(Costanti::CC_RADICE_FORM)
->add(Costanti::CC_CODICE_COUPON, TextType::class, array('required' => true, 'label' => "Codice coupon", 'attr' => array('class' => "form-control input-sm", 'autocomplete' => 'off', 'style' => 'padding-left:5px;padding-right:5px;')))
->add(Costanti::CC_APPLICA, SubmitType::class, array('label' => "Applica", 'attr' => array('class' => 'form-inline btn btn-sm btn-success', 'style' => 'margin-top:5px;')))
->getForm();
$couponForm->handleRequest($request);
if($couponForm->isSubmitted() && $couponForm->isValid()){
/** @var $coupon CouponDettaglio */
$coupon = $this->servizi->doctrine->getRepository(CouponDettaglio::class)->findOneBy(array('codice' => $couponForm[Costanti::CC_CODICE_COUPON]->getData()));
if ($coupon) {
$ritornoValiditaCoupon = $this->servizi->verificaValiditaCoupon($coupon, $carrello);
if ($ritornoValiditaCoupon->esito) {
$em = $this->servizi->doctrine->getManager();
$crl = $carrello->RitornaEntitaDoctrine($this->servizi->doctrine);
$utilizzoCoupon = new CouponDettaglioUtilizzo();
$utilizzoCoupon->setDettaglioCoupon($coupon);
$utilizzoCoupon->setDataUtilizzo(new \DateTime());
$utilizzoCoupon->setAgentUtilizzatore($request->headers->get('User-Agent'));
$utilizzoCoupon->setLocaleUtilizzatore($request->getLocale());
$utilizzoCoupon->setIpUtilizzatore($request->getClientIp());
$utilizzoCoupon->setOrdine(null);
$utilizzoCoupon->setDataModifica(new \DateTime());
$utilizzoCoupon->setDataCreazione(new \DateTime());
$utilizzoCoupon->setUtenteModifica($this->servizi->OttieniUtenteCorrente());
$em->persist($utilizzoCoupon);
$crl->setCouponDettaglioUtilizzo($utilizzoCoupon);
$em->persist($crl);
$em->flush();
$fnzCarrello = new FunzioniCarrello($this->servizi->doctrine, $this->imp, $this->servizi);
$fnzCarrello->AggiornaTotaleCarrello($crl->getId());
$this->addFlash(
'notice',
'Coupon registrato!'
);
} else {
$this->addFlash(
'error',
$ritornoValiditaCoupon->messaggio
);
}
} else {
$this->addFlash(
'error',
'Coupon con codice ' . $couponForm[Costanti::CC_CODICE_COUPON]->getData() . " inesistente"
);
}
}
$parametriLayout[Costanti::CC_RADICE_FORM] = $couponForm->createView();
}
return $this->render('ZZ_front_end/carrello/carrello.html.twig', $parametriLayout);
}
/**
* @Route("/shopCM/cart/add/{codice}", name="shopcm_carrello_aggiungi", requirements={"codice"=".+"})
*/
public function aggiungiCarrelloActionShopComune(Request $request, $codice){
$qta = $request->get('qta');
$idMappa = $request->get('id-mappa');
$idVariante = $request->get('id-variante');
$idListaTipologiaPreimpostata = $request->get('id-lista-tipologia-preimpostata', '');
$traduci = $this->translating;
$traduci->CaricaTraduzioniDaFamiglia('carrello', $request->getLocale());
if ($qta > 0 && ($idMappa != '' || $idVariante != '')){
if ($idVariante != '' && $idMappa == ''){
$variante = $this->servizi->doctrine->getRepository(Varianti::class)->find($idVariante);
if ($variante){
$idMappa = $variante->getMappa()->getId();
}
}
$lista = array(
array(
'idMappaArticoli' => $idMappa,
'idVariante' => $idVariante,
'qta' => $qta,
'idListaTipologiePreimpostate' => $idListaTipologiaPreimpostata
)
);
$request->attributes->set('lista', $lista);
/** @var RitornoGenericoCarrello[] $ritorno */
$ritorno = $this->aggiungiCarrelloAction($request, true);
if (count($ritorno) > 0){
$primo = $ritorno[0];
if ($primo->esito){
$this->addFlash(
'notice',
$traduci->OttieniElementoDizionario('carrello_articolo_aggiunto', 'carrello')->valoreUscita
);
}else{
$this->addFlash(
'error',
$primo->RitornaStringaCompostaMessaggiSemplificati()
);
}
}
}else{
$this->addFlash(
'error',
"Parametri mancanti!"
);
$this->logger->error("Parametri mancanti alla chiamata: '" . $request->getBaseUrl() . $request->getQueryString() . "' . Parametri necessari: qta - id-mappa - id-variante");
}
return $this->redirect($this->servizi->getRefererRoute($request));
}
/**
* @Route("/shopCM/cart/multipleAdd", name="shopcm_carrello_aggiungi_multiplo")
*/
public function aggiungiCarrelloShopCmMultiplo(Request $request){
$traduci = $this->translating;
$traduci->CaricaTraduzioniDaFamiglia('carrello', $request->getLocale());
$field = $request->request->all();
foreach (array_keys($field) as $key) {
$item = $field[$key];
//Ipotesi campo <input name="form-ord_idVar" value="">
if (strpos($key, 'form-ord') !== false) { //Verifico se la variabile fa parte di quelle da analizzare
$idVariante = (explode('_', $key))[1];
$qta = $item;
if ($qta > 0 && $idVariante != '') {
$variante = $this->servizi->doctrine->getRepository(Varianti::class)->find($idVariante);
if ($variante) {
$idMappa = $variante->getMappa()->getId();
}
$lista = array(
array(
'idMappaArticoli' => $idMappa,
'idVariante' => $idVariante,
'qta' => $qta,
'idListaTipologiePreimpostate' => ''
)
);
$request->attributes->set('lista', $lista);
/** @var RitornoGenericoCarrello[] $ritorno */
$ritorno = $this->aggiungiCarrelloAction($request, true);
if (count($ritorno) > 0) {
$primo = $ritorno[0];
if ($primo->esito) {
$this->addFlash(
'notice',
$traduci->OttieniElementoDizionario('carrello_articolo_aggiunto', 'carrello')->valoreUscita
);
} else {
$this->addFlash(
'error',
$primo->RitornaStringaCompostaMessaggiSemplificati()
);
}
}
}
}
}
return $this->redirect($this->servizi->getRefererRoute($request));
}
/**
* @Route("/cart/fast/add/{codice}/{qta}", name="carrello_fast_aggiungi", defaults={"qta"="1"})
*/
public function aggiungiFastCarrelloAction(Request $request, $codice, $qta = 1)
{
/** @var MappaCategorieArticoli|null $mappa */
$mappa = null;
$ris = $this->servizi->doctrine->getRepository(MappaCategorieArticoli::class)->createQueryBuilder('mappa')
->leftJoin('mappa.articolo', 'articolo')
->where('articolo.codice = :cod')->setParameter('cod', $codice)
->setMaxResults(1)
->getQuery()->getResult();
if(count($ris) > 0)
{
/** @var MappaCategorieArticoli $mappa */
$mappa = $ris[0];
$arr = [
[
'idMappaArticoli' => $mappa->getId(),
'idVariante' => '',
'idListaTipologiePreimpostate' => '',
'qta' => $qta
]
];
$request->attributes->set('lista', $arr);
/** @var RitornoGenericoCarrello[] $ritorniCarrrello */
$ritorniCarrrello = $this->aggiungiCarrelloAction($request, true);
$procedi = true;
$mess = '';
foreach ($ritorniCarrrello as $item){
if($procedi && !$item->esito){
$procedi = false;
$mess = implode(' ', $item->messaggiSemplificati);
}
}
if($procedi) {
$this->addFlash('info', 'Articolo con codice: ' . $codice . ' aggiunto al carrello!');
}else{
$this->addFlash('error', 'Errore aggiunta articolo con codice: ' . $codice . ': ' . $mess);
}
return $this->redirectToRoute('carrello');
}else{
$this->addFlash('error', 'Articolo con codice: ' . $codice . ' non trovato!');
return $this->redirectToRoute('homepage');
}
}
/**
* @Route("/cart/add", name="carrello_aggiungi", options={"expose"=true})
*/
public function aggiungiCarrelloAction(Request $request, $ritornoArray = false)
{
$lista = $request->get('lista');
$user = $this->servizi->OttieniUtenteCorrente();
$anagraficaTrovata = null;
$agente = null;
$secret = "";
$altriDati = AltriDatiUtente::CreaDaUtente($user);
if(!$user)
$secret = $request->cookies->get('secret_user');
else{
if ($this->isGranted("ROLE_ADMIN") || $this->isGranted("ROLE_AGENTE") || $this->isGranted("ROLE_COMMERCIALE")){
$agente = $this->servizi->OttieniUtenteCorrente();
if ($altriDati && $altriDati->codice != ''){
$anagraficaTrovata = $this->servizi->ritornaAnagraficaShopSelezionataDaCookieIdentificativo($altriDati->codice, $this->servizi->OttieniUtenteCorrente());
if ($anagraficaTrovata){
$clienteSelezionatoAgente = $anagraficaTrovata;
}
}
}
}
/** @var $ritornoGenericoCarrello RitornoGenericoCarrello[] */
$ritorniGenericiCarrello = array();
foreach ($lista as $item){
$funzioniCarrello = new FunzioniCarrello($this->servizi->doctrine, $this->imp, $this->servizi);
$em = $this->servizi->doctrine->getManager();
$ritornoGenericoCarrello = $funzioniCarrello->CreaRigaCarrello(
$item["idMappaArticoli"],
$item["idVariante"],
$item["idListaTipologiePreimpostate"],
$item["qta"],
$user,
$secret,
$agente,
$anagraficaTrovata,
new CreaRigaCarrelloValoriOpzionali(),
$request->getLocale(),
$em
);
$em->clear();
array_push($ritorniGenericiCarrello, $ritornoGenericoCarrello);
}
if ($ritornoArray){
return $ritorniGenericiCarrello;
}else {
return new JsonResponse($ritorniGenericiCarrello);
}
}
/**
* @Route("/cart/checkout", name="carrello_finalizza")
*/
public function finalizzaCarrello(Request $request){
/** @var $user User */
$user = $this->servizi->OttieniUtenteCorrente();
$arrayChiaviControllo = array();
$recuperaDati = new RecuperoDati($this->servizi->doctrine, $this->imp, $this->servizi);
/** @var Anagrafiche|null $anagrafica */
$anagrafica = null;
/** @var User|null $agente */
$agente = null;
$codiceCliente = "";
/** @var Carrello|null $carrello */
$carrello = null;
$this->imp->caricaCacheImpostazioniDaNomi(array('PermettiModificaSpedizioneAgenti', 'PermettiModificaPagamentoAgenti'));
$consentiAgentiModificaSpedizione = $this->imp->ritornaImpostazioneDaNome('PermettiModificaSpedizioneAgenti');
$consentiAgentiModificaPagamento = $this->imp->ritornaImpostazioneDaNome('PermettiModificaPagamentoAgenti');
$dataConsegnaObbligatoria = $this->imp->ritornaImpostazioneDaNome('OrdiniWebDataConsegnaObbligatoria');
$filtro = new ContenitoreCategoriePerFiltri();
/** @var $categorie AlberoCategorie[] */
$listaCategorie = $recuperaDati->recuperaAlberoCategorie($filtro, $request->getLocale());
$listaCategorieChiaviParent = array();
foreach ($listaCategorie as $lc){
if($lc->parent){
$_lc_id = $lc->parent->id;
if (key_exists($_lc_id, $listaCategorieChiaviParent)){
array_push($listaCategorieChiaviParent[$_lc_id], $lc);
}else{
$listaCategorieChiaviParent[$_lc_id] = array($lc);
}
}
}
$traduci = $this->translating;
$traduci->CaricaTraduzioniDaFamiglia("carrello", $request->getLocale(), false);
$secret = "";
$altriDati = AltriDatiUtente::CreaDaUtente($user);
if(!$user)
$secret = $request->cookies->get('secret_user');
else {
$codiceCliente = $user->getCodiceCliente();
if ($this->isGranted("ROLE_ADMIN") || $this->isGranted("ROLE_AGENTE") || $this->isGranted("ROLE_COMMERCIALE")) {$agente = $this->servizi->OttieniUtenteCorrente();
if ($altriDati && $altriDati->codice != ''){
$anagraficaTrovata = $this->servizi->ritornaAnagraficaShopSelezionataDaCookieIdentificativo($altriDati->codice, $this->servizi->OttieniUtenteCorrente());
if ($anagraficaTrovata) {
$codiceCliente = $anagraficaTrovata->getCodice();
$anagrafica = $anagraficaTrovata;
}
}
}
}
/** @var $carrello \App\Model\Entita\Carrello */
$carrelloEntita = $recuperaDati->recuperaDettagliCarrello($secret, $user, $request->getLocale(), $codiceCliente, $anagrafica, $agente, true, $altriDati ? $altriDati->tipoOrdine : null);
$carrello = null;
if($carrelloEntita != null && $carrelloEntita->id != '')
$carrello = $this->servizi->doctrine->getRepository(Carrello::class)->find($carrelloEntita->id);
if(!$carrello || count($carrello->getRighe()) <= 0 ){
$this->addFlash(
'error',
$traduci->OttieniElementoDizionario('carrello_errore_vuoto', 'carrello')->valoreUscita
);
return $this->redirectToRoute('home_prodotti');
}
$validazioneCarrello = Validator::ValidaCarrello($carrello, $this->servizi->doctrine, $this->imp, $this->servizi, $this->servizi->OttieniUtenteCorrente());
if($validazioneCarrello->bloccante){
$this->addFlash(
'error',
join('<br>', $validazioneCarrello->messaggiSemplificatiPerUtente)
);
return $this->redirectToRoute('carrello');
}
/** @var UserCampiCustomTestata[] $campiCustomUser */
$campiCustomUser = $this->servizi->doctrine->getRepository(UserCampiCustomTestata::class)->findBy(array('luogoVisualizzazione' => 'registrazioneUtente'));
$chiaviCampiCustom = array();
foreach ($campiCustomUser as $tst) {
$chiaviCampiCustom = array_merge($this->servizi->RitornaChiaviUserCampiCustom($tst), $chiaviCampiCustom);
}
$formBuilder = $this->createFormBuilder();
if (!$user){
foreach ($campiCustomUser as $itm){
$formBuilder = $this->servizi->AggiungiChildAFormUserCampiCustom($itm, $formBuilder);
}
$formBuilder = $formBuilder
->add(Costanti::IO_RIFERIMENTO_ORDINE, TextType::class, array('required' => false, 'label' => $traduci->OttieniElementoDizionario("carrello_riferimento_ordine", "carrello")->valoreUscita, 'attr' => array('class' => "form-control input-sm", 'style' => 'padding-left:5px;padding-right:5px;')))
->add(Costanti::IO_MODALITA_SPEDIZIONE, EntityType::class, array('required' => true, 'class' => 'App\Entity\ModalitaSpedizione', 'choice_label' => function ($modalita) {
return $modalita->getTestoDescrittivo();
}, 'label' => $traduci->OttieniElementoDizionario("carrello_modalita_spedizione", "carrello")->valoreUscita, 'attr' => array('class' => "form-control input-sm", 'style' => 'padding-left:5px;padding-right:5px;')))
->add(Costanti::IO_MODALITA_PAGAMENTO, EntityType::class, array('required' => true, 'class' => 'App\Entity\ModalitaPagamento', 'choice_label' => function ($modalita) {
return $modalita->getTestoDescrittivo();
}, 'label' => $traduci->OttieniElementoDizionario("carrello_modalita_pagamento", "carrello")->valoreUscita, 'attr' => array('class' => "form-control input-sm", 'style' => 'padding-left:5px;padding-right:5px;')))
->add(Costanti::IO_NOTE, TextareaType::class, array('required' => false, 'label' => $traduci->OttieniElementoDizionario("carrello_note", "carrello")->valoreUscita, 'attr' => array('class' => "form-control", 'rows' => '6', 'style' => 'padding-left:5px;padding-right:5px;')))
->add('applica', SubmitType::class, array('label' => $traduci->OttieniElementoDizionario("carrello_completa_btn", "carrello")->valoreUscita, 'attr' => array('class' => 'form-inline btn btn-large btn-success', 'style' => 'margin-top:2em;float:right;')));
$this->servizi->RitornaFormCompletoRegistrazioneUtente($formBuilder, $request->getLocale());
} else {
$formBuilder = $formBuilder
->add(Costanti::IO_DATA_SPEDIZIONE_RITIRO, TextType::class, array('required' => ($dataConsegnaObbligatoria == '1' ? true : false), 'label' => $traduci->OttieniElementoDizionario("carrello_data_spedizione_ritiro_richiesta", "carrello")->valoreUscita, 'attr' => array('class' => "form-control input-sm input-data", 'autocomplete' => 'off', 'style' => 'padding-left:5px;padding-right:5px;')))
->add(Costanti::IO_RIFERIMENTO_ORDINE, TextType::class, array('required' => false, 'label' => $traduci->OttieniElementoDizionario("carrello_riferimento_ordine", "carrello")->valoreUscita, 'attr' => array('class' => "form-control input-sm", 'style' => 'padding-left:5px;padding-right:5px;')));
if ($user->getUtenteComune() || $anagrafica) {
if($consentiAgentiModificaSpedizione || $user->getUtenteComune()) {
$formBuilder = $formBuilder
->add(Costanti::IO_MODALITA_SPEDIZIONE, EntityType::class, array('required' => true, 'class' => 'App\Entity\ModalitaSpedizione', 'choice_label' => function ($modalita) {
return $modalita->getTestoDescrittivo();
}, 'label' => $traduci->OttieniElementoDizionario("carrello_modalita_spedizione", "carrello")->valoreUscita, 'attr' => array('class' => "form-control input-sm", 'style' => 'padding-left:5px;padding-right:5px;')));
}
if ($anagrafica){
if($consentiAgentiModificaPagamento) {
$formBuilder->add(Costanti::IO_PAGAMENTO, EntityType::class, array('required' => true, 'class' => 'App\Entity\Pagamenti', 'choice_label' => function ($pagamento) {
return $pagamento->getNome();
}, 'label' => $traduci->OttieniElementoDizionario("carrello_modalita_pagamento", "carrello")->valoreUscita, 'attr' => array('class' => "form-control input-sm", 'style' => 'padding-left:5px;padding-right:5px;')));
$arrayChiaviControllo = array_merge($arrayChiaviControllo, array('pagamento'));
}
$formBuilder = $formBuilder->add(Costanti::IO_NOTE_AZIENDALI, TextareaType::class, array('required' => false, 'label' => $traduci->OttieniElementoDizionario("carrello_note_aziendali", "carrello")->valoreUscita, 'attr' => array('class' => "form-control", 'rows' => '6', 'style' => 'padding-left:5px;padding-right:5px;')));
}else {
$formBuilder->add(Costanti::IO_MODALITA_PAGAMENTO, EntityType::class, array('required' => true, 'class' => 'App\Entity\ModalitaPagamento', 'choice_label' => function ($modalita) {
return $modalita->getTestoDescrittivo();
}, 'label' => $traduci->OttieniElementoDizionario("carrello_modalita_pagamento", "carrello")->valoreUscita, 'attr' => array('class' => "form-control input-sm", 'style' => 'padding-left:5px;padding-right:5px;')));
$arrayChiaviControllo = array_merge($arrayChiaviControllo, array('modalitaPagamento'));
}
$arrayChiaviControllo = array_merge($arrayChiaviControllo, array('modalitaSpedizione'));
} else {
$formBuilder = $formBuilder
->add(Costanti::IO_SPEDIZIONE_CONSEGNA, EntityType::class, array('required' => true, 'class' => 'App\Entity\AssociazioneSpedizioniClienti', 'query_builder' => function (EntityRepository $er) use ($user) {
return $er->createQueryBuilder('u')
->where('u.azienda = :azienda')
->leftJoin('u.spedizione', 'sped')
->leftJoin('u.consegna', 'cons')->setParameter('azienda', $user->getId());
}, 'choice_label' => function ($sped) {
return $sped->getSpedizione()->getDescrizione() . ' - ' . $sped->getConsegna()->getDescrizione();
}, 'label' => $traduci->OttieniElementoDizionario("carrello_modalita_spedizione", "carrello")->valoreUscita, 'attr' => array('class' => "form-control input-sm", 'style' => 'padding-left:5px;padding-right:5px;')));
$arrayChiaviControllo = array_merge($arrayChiaviControllo, array('spedizioneConsegna'));
}
$formBuilder = $formBuilder
->add(Costanti::IO_NOTE, TextareaType::class, array('required' => false, 'label' => $traduci->OttieniElementoDizionario("carrello_note", "carrello")->valoreUscita, 'attr' => array('class' => "form-control", 'rows' => '6', 'style' => 'padding-left:5px;padding-right:5px;')));
if ($carrello && $carrello->getAnagrafica())
{
/** @var AnagraficheIndirizzi[] $destinazioni */
$formBuilder = $formBuilder->add(Costanti::IO_DESTINAZIONI, EntityType::class, array('required' => false, 'class' => 'App\Entity\AnagraficheIndirizzi', 'label' => $traduci->OttieniElementoDizionario("carrello_destinazioni", "carrello")->valoreUscita, 'query_builder' => function (EntityRepository $er) use ($carrello) {
return $er->createQueryBuilder('destinazioni')->where('destinazioni.codice = :cod')->setParameter('cod', $carrello->getAnagrafica()->getCodice());
}, 'placeholder' => '', 'choice_label' => function ($destinazione, $key, $value) {
/** @var AnagraficheIndirizzi $destinazione */
return "(" . $destinazione->getTipoIndirizzo() . ") "
. $destinazione->getRagioneSociale() . " "
. $destinazione->getIndirizzo() . " - "
. $destinazione->getCitta() . " (" . $destinazione->getProvincia() . ") " . $destinazione->getCap() . " - "
. $destinazione->getNazione();
}, 'attr' => array('class' => "form-control input-sm", 'style' => 'padding-left:5px;padding-right:5px;')));
}else{
$formBuilder = $formBuilder->add(Costanti::IO_DESTINAZIONI, EntityType::class, array('required' => false, 'class' => 'App\Entity\Destinazioni', 'label' => $traduci->OttieniElementoDizionario("carrello_destinazioni", "carrello")->valoreUscita, 'query_builder' => function (EntityRepository $er) use ($user) {
return $er->createQueryBuilder('destinazioni')->where('destinazioni.azienda = :azie')->setParameter('azie', $user);
}, 'placeholder' => '' , 'choice_label' => function ($destinazione, $key, $value) {
/** @var Destinazioni $destinazione */
return "(" . $destinazione->getDenominazioneDestinazioneDiversa() . ") "
. $destinazione->getRagioneSociale() . " "
. $destinazione->getIndirizzo() . " - "
. $destinazione->getCitta() . " (" . $destinazione->getProvincia() . ") " . $destinazione->getCap() . " - "
. $destinazione->getStato();
}, 'attr' => array('class' => "form-control input-sm", 'style' => 'padding-left:5px;padding-right:5px;')));
}
$formBuilder = $formBuilder->add(Costanti::IO_INVIO_ORDINE, SubmitType::class, array('label' => $traduci->OttieniElementoDizionario("carrello_completa_btn", "carrello")->valoreUscita, 'attr' => array('class' => 'form-inline btn btn-large btn-success', 'style' => 'margin-top:2em;float:right;')));
}
$formBuilder = $formBuilder->getForm();
$formBuilder->handleRequest($request);
/** @var User $utenteOrdine */
$utenteOrdine = $this->servizi->OttieniUtenteCorrente();
/** @var Destinazioni|AnagraficheIndirizzi $destinazioneOrdine */
$destinazioneOrdine = null;
/** @var ModalitaSpedizione $modalitaSpedizioneOrdine */
$modalitaSpedizioneOrdine = null;
/** @var ModalitaPagamento $modalitaPagamentoOrdine */
$modalitaPagamentoOrdine = null;
/** @var AssociazioneSpedizioniClienti $spedizioneConsegnaOrdine */
$spedizioneConsegnaOrdine = null;
/** @var Pagamenti $pagamentoAzienda */
$pagamentoAzienda = null;
/** @var \DateTime $dataSpedizioneOrdine */
$dataSpedizioneOrdine = new \DateTime();
$errori_validazione = array();
$noteAziendali = '';
$problemaUtenteGiaEsistente = false;
if ($formBuilder->isSubmitted() && $formBuilder->isValid()) {
foreach ($formBuilder as $key => $value) {
if ($formBuilder[$key]->getData() == "" && (in_array($key, $arrayChiaviControllo))) {
array_push($errori_validazione, $key);
}
}
if (count($errori_validazione) <= 0) {
$gestioneUtenti = $this->gestioneUtenti;
if (!$user) {
$utenteGiaEsistente = $this->servizi->doctrine->getRepository(User::class)->findOneBy(array(
'username' => strtolower($formBuilder[Costanti::RU_USERNAME]->getData())
));
if(!$utenteGiaEsistente){
$utenteGiaEsistente = $this->servizi->doctrine->getRepository(User::class)->findOneBy(array(
'email' => strtolower($formBuilder[Costanti::RU_INDIRIZZO_MAIL]->getData())
));
}
if (!$utenteGiaEsistente) {
$privato = $formBuilder[Costanti::RU_AZIENDA_O_PRIVATO]->getData() == "privato" ? true : false;
$ragioneSociale = $formBuilder[Costanti::RU_RAGIONE_SOCIALE]->getData();
if ($privato) {
$ragioneSociale = $formBuilder[Costanti::RU_NOME]->getData() . ' ' . $formBuilder[Costanti::RU_COGNOME]->getData();
}
$nuovoUtente = $gestioneUtenti->CreaUtente(
$ragioneSociale,
$formBuilder[Costanti::RU_NOME]->getData(),
$formBuilder[Costanti::RU_COGNOME]->getData(),
$formBuilder[Costanti::RU_INDIRIZZO_MAIL]->getData(),
$formBuilder[Costanti::RU_INDIRIZZO]->getData(),
$formBuilder[Costanti::RU_CITTA]->getData(),
$formBuilder[Costanti::RU_CAP]->getData(),
$formBuilder[Costanti::RU_PROVINCIA]->getData(),
($formBuilder[Costanti::RU_STATO]->getData())->getDescrizione(),
$formBuilder[Costanti::RU_TELEFONO]->getData(),
$formBuilder[Costanti::RU_CODICE_FISCALE]->getData(),
$formBuilder[Costanti::RU_PARTITA_IVA]->getData(),
$formBuilder[Costanti::RU_PASSWORD]->getData(),
$formBuilder[Costanti::RU_USERNAME]->getData(),
$formBuilder[Costanti::RU_INDIRIZZO_PEC]->getData(),
$formBuilder[Costanti::RU_CODICE_DESTINATARIO_FATTURAZIONE_ELETTRONICA]->getData(),
$privato,
'',
null,
true
);
//Verifico se ci sono dei campi custom da inserire nel db
if (count($chiaviCampiCustom) > 0) {
$em = $this->servizi->doctrine->getManager();
foreach ($chiaviCampiCustom as $cmpCst) {
$dettaglioCampoCustom = $this->servizi->RitornaDettaglioUserCampiCustom($cmpCst);
$campo = $dettaglioCampoCustom->getCampo();
if ($campo) {
if ($formBuilder[$cmpCst]->getData() != '') {
$campoCustom = new UserCampiCustomValori();
$campoCustom->setDataCreazione(new \DateTime());
$campoCustom->setDataModifica(new \DateTime());
$campoCustom->setUser($nuovoUtente);
$campoCustom->setTestata($dettaglioCampoCustom->getTestata());
$campoCustom->setCampo($dettaglioCampoCustom->getCampo());
$campoCustom->setUtenteModifica($this->servizi->OttieniUtenteCorrente());
$campoCustom->setTipoDato($dettaglioCampoCustom->getCampo()->getTipoDato());
$campoCustom->setTestoVisualizzato($dettaglioCampoCustom->getCampo()->getTestoVisualizzato());
$campoCustom->setValore($formBuilder[$cmpCst]->getData());
$em->persist($campoCustom);
}
}
}
$em->flush();
}
$utenteOrdine = $nuovoUtente; //Setto l'utente dell'ordine con l'utente appena creato
//effettuo automaticamente il login per il nuovo utente creato
$token = new UsernamePasswordToken($nuovoUtente, 'main', $nuovoUtente->getRoles());
$this->token->setToken($token);
$this->session->set('_security_main', serialize($token));
/** @var $destinazione Destinazioni */
$destinazione = null;
//Aggiungo la destinazione base
$destinazione = $gestioneUtenti->CreaDestinazione($nuovoUtente, $nuovoUtente->getRagioneSociale(), $nuovoUtente->getIndirizzo(), $nuovoUtente->getCitta(), $nuovoUtente->getProvincia(),
$nuovoUtente->getCap(), $nuovoUtente->getTelefono(), $nuovoUtente->getNazione(), $nuovoUtente->getEmail());
if ($formBuilder[Costanti::RU_DESTINAZIONE_DIVERSA]->getData() == true) {
$destinazione = $gestioneUtenti->CreaDestinazione($nuovoUtente, $formBuilder[Costanti::RU_DD_RAGIONE_SOCIALE]->getData(), $formBuilder[Costanti::RU_DD_INDIRIZZO]->getData(), $formBuilder[Costanti::RU_DD_CITTA]->getData(),
$formBuilder[Costanti::RU_DD_PROVINCIA]->getData(), $formBuilder[Costanti::RU_DD_CAP]->getData(), $formBuilder[Costanti::RU_DD_TELEFONO]->getData(), ($formBuilder[Costanti::RU_DD_STATO]->getData() ? $formBuilder[Costanti::RU_DD_STATO]->getData()->getDescrizione() : ''),
$formBuilder[Costanti::RU_DD_INDIRIZZO_MAIL]->getData(), $formBuilder[Costanti::RU_DD_CITTA]->getData());
}
$destinazioneOrdine = $destinazione;
$modalitaPagamentoOrdine = $formBuilder[Costanti::IO_MODALITA_PAGAMENTO]->getData();
$modalitaSpedizioneOrdine = $formBuilder[Costanti::IO_MODALITA_SPEDIZIONE]->getData();
} else {
$problemaUtenteGiaEsistente = true;
}
} else {
if ($utenteOrdine->getUtenteComune() || $anagrafica) {
$noteAziendali = $formBuilder[Costanti::IO_NOTE_AZIENDALI]->getData();
if ($consentiAgentiModificaSpedizione)
$modalitaSpedizioneOrdine = $formBuilder[Costanti::IO_MODALITA_SPEDIZIONE]->getData();
if ($anagrafica) {
if ($consentiAgentiModificaPagamento)
$pagamentoAzienda = $formBuilder[Costanti::IO_PAGAMENTO]->getData();
} else {
$modalitaPagamentoOrdine = $formBuilder[Costanti::IO_MODALITA_PAGAMENTO]->getData();
}
} else {
$spedizioneConsegnaOrdine = $formBuilder[Costanti::IO_SPEDIZIONE_CONSEGNA]->getData();
}
$dataSpedizioneOrdine = \DateTime::createFromFormat("d/m/Y", $formBuilder[Costanti::IO_DATA_SPEDIZIONE_RITIRO]->getData());
$destinazioneOrdine = $formBuilder[Costanti::IO_DESTINAZIONI]->getData();
}
if (!$problemaUtenteGiaEsistente) {
$noteOrdine = $formBuilder[Costanti::IO_NOTE]->getData();
$riferimentoOrdine = $formBuilder[Costanti::IO_RIFERIMENTO_ORDINE]->getData();
$funzioniCarrello = new FunzioniCarrello($this->servizi->doctrine, $this->imp, $this->servizi);
/** @var RitornoConversioneCarrelloInOrdine $ritornoConversioneCarrelloOrdine */
$ritornoConversioneCarrelloOrdine = $funzioniCarrello->ConvertiCarrelloInOrdine($utenteOrdine, $carrello, $destinazioneOrdine, $modalitaSpedizioneOrdine, $modalitaPagamentoOrdine,
$spedizioneConsegnaOrdine, $dataSpedizioneOrdine, $riferimentoOrdine, $noteOrdine, $pagamentoAzienda, $request, $noteAziendali);
$ordine = $ritornoConversioneCarrelloOrdine->ordine;
$noteInvioOrdine = "";
foreach ($ritornoConversioneCarrelloOrdine->listaMessaggiConversione as $str) {
$noteInvioOrdine .= $str;
}
$inviaConfermaOrdine = $this->imp->ritornaImpostazioneDaNome("InviaConfermaOrdineCliente");
$nomeShop = $this->imp->ritornaImpostazioneDaNome("NomeShop");
$inviaConfermaAgente = $this->imp->ritornaImpostazioneDaNome('InviaConfermaOrdineAgente');
$translator = $traduci;
$translator->CaricaTraduzioniDaFamiglia("mail_nuovo_ordine", $request->getLocale());
$header = $translator->OttieniElementoDizionario("mail_nuovo_ordine_header", "mail_nuovo_ordine")->valoreUscita;
if ($inviaConfermaOrdine == 1) {
$inviaCopiaConfermaASede = $this->imp->ritornaImpostazioneDaNome("InviaCopiaConfermaOrdineClienteSede");
$mailFrom = $this->imp->ritornaImpostazioneDaNome("IndirizzoMailFromInvioComunicazioni");
$mailer = new Mailer($this->imp, $this->twig, $this->servizi);
$listaMailSecondarie = $this->servizi->doctrine->getRepository(MailSecondarieUtenti::class)->findBy(array('azienda' => $user, 'inviaConfermaOrdine' => true));
$adresses = array();
foreach ($listaMailSecondarie as $ms) {
array_push($adresses, $ms->getIndirizzoMail());
}
if($ordine->getAnagrafica()){
$elencoAltreMail = explode(';', $ordine->getAnagrafica()->getIndirizziMail());
foreach ($elencoAltreMail as $ml){
if(!in_array($ml, $adresses)){
array_push($adresses, $ml);
}
}
}
$ordineFormattato = $ordine;
if ($ordine instanceof Ordini) {
$ordineFormattato = $recuperaDati->recuperaDettagliOrdine($ordine->getId(), $ordine->getUtente(), $request->getLocale());
}
$mailToPrima = $anagrafica && count($adresses) ? $adresses[0] : $utenteOrdine->getEmail();
array_shift($adresses);
//INVIO MAIL A CLIENTE
$mailer->SendMail(
$header . " " . $nomeShop,
$this->renderView(
'email/ordini/nuovo_ordine.html.twig',
array(
'ordine_inviato_azienda' => false,
'ordine' => $ordineFormattato,
'utente' => $user,
'noteInvioOrdine' => $noteInvioOrdine,
)
),
$mailToPrima,
$adresses,
$mailFrom,
"text/html",
false,
$this->servizi->OttieniUtenteCorrente());
if ($inviaCopiaConfermaASede == 1 || $inviaConfermaAgente == 1) {
$cc = array();
//Compongo l'header
$header2 = 'Nuovo ordine cliente WEB - ';
if($ordine->getAnagrafica()){
$header2 .= ($ordine->getAnagrafica()->getCodice() . " - " . $ordine->getAnagrafica()->getRagioneSociale());
}else if ($ordine->getAzienda()){
$header2 .= ($ordine->getAzienda()->getCodiceCliente() . " - " . $ordine->getAzienda()->getRagioneSociale());
}
if($inviaCopiaConfermaASede == 1) {
//INVIO MAIL AZIENDA.
$mailer->SendMail(
$header2,
$this->renderView(
'email/ordini/nuovo_ordine.html.twig',
array(
'ordine_inviato_azienda' => true,
'ordine' => $ordineFormattato,
'user' => $user,
'utente' => $user,
'noteInvioOrdine' => $noteInvioOrdine,
)
),
$mailFrom,
$cc,
$mailFrom,
"text/html",
false,
$this->servizi->OttieniUtenteCorrente());
}
if ($inviaConfermaAgente == 1){
$cc = array();
$mailAgente = "";
if($ordine->getAgente() && $ordine->getAgente()->getEmail() != '')
$mailAgente = $ordine->getAgente()->getEmail();
//INVIO MAIL AZIENDA.
$mailer->SendMail(
$header2,
$this->renderView(
'email/ordini/nuovo_ordine.html.twig',
array(
'ordine_inviato_azienda' => true,
'ordine' => $ordineFormattato,
'user' => $user,
'utente' => $user,
'noteInvioOrdine' => $noteInvioOrdine,
)
),
$mailAgente,
$cc,
$mailFrom,
"text/html",
false,
$this->servizi->OttieniUtenteCorrente());
}
}
}
if ($modalitaPagamentoOrdine && $modalitaPagamentoOrdine->getServizioPagamentoAutomatico() != '') {
return $this->redirectToRoute('checkout_ordine', array('id_ordine' => $ordine->getId()));
} else {
$this->addFlash(
'notice',
$traduci->OttieniElementoDizionario('carrello_ordine_inserito', 'carrello')->valoreUscita
);
return $this->redirectToRoute('dettagli_storico', array('id' => $ordine->getId()));
}
} else {
$this->addFlash(
'error',
$traduci->OttieniElementoDizionario('carrello_errore_mail_o_user_in_uso', 'carrello')->valoreUscita
);
}
}
}
/** @var $destinazioni Destinazioni[] */
$destinazioni = $this->servizi->doctrine->getRepository(Destinazioni::class)->findBy(array('azienda' => $user));
return $this->render('ZZ_front_end/carrello/carrello_finalizza.html.twig', array(
Costanti::T_CARRELLO => $carrelloEntita,
Costanti::T_RIGHE_CARRELLO => $carrelloEntita->righe,
'carrelloEntita' => $carrelloEntita,
'completato' => false,
'checkout' => 1,
'anagrafica' => $anagrafica,
'user' => $user,
Costanti::IO_DESTINAZIONI => $destinazioni,
Costanti::IO_RADICE_FORM => $formBuilder->createView(),
'errori_validazione' => $errori_validazione,
'campiCustomUser' => $chiaviCampiCustom,
Costanti::T_LISTA_CATEGORIE => $listaCategorie,
Costanti::T_LISTA_CATEGORIE_CHIAVI_PARENT => $listaCategorieChiaviParent,
'consentiModificaPagamento' => $consentiAgentiModificaPagamento,
'consentiModificaSpedizione' => $consentiAgentiModificaSpedizione,
Costanti::ID_MODALITA_PAGAMENTO_SELEZIONATA => ($carrello->getModalitaPagamento() ? $carrello->getModalitaPagamento()->getId() : ''),
Costanti::ID_MODALITA_SPEDIZIONE_SELEZIONATA => ($carrello->getModalitaSpedizione() ? $carrello->getModalitaSpedizione()->getId() : '')
));
}
}