src/Controller/EsportazioniController.php line 431

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Anagrafiche;
  4. use App\Entity\EsportazioniDiSistema;
  5. use App\Entity\MailSecondarieUtenti;
  6. use App\Entity\ModificaNoteAnagrafiche;
  7. use App\Entity\Nazioni;
  8. use App\Entity\Offerte;
  9. use App\Entity\OfferteAllegati;
  10. use App\Entity\OfferteRegistroEventi;
  11. use App\Entity\OfferteRighe;
  12. use App\Entity\Ordini;
  13. use App\Entity\OrdiniRighe;
  14. use App\Entity\User;
  15. use App\Model\Entita\Ordine;
  16. use App\Model\EsportazioniDiSistema\EseguiEsportazioneDiSistema;
  17. use App\Model\EsportazioniDiSistema\RigheOrdineEsportare;
  18. use App\Model\Mailer;
  19. use App\Model\Translating\Translating;
  20. use Psr\Log\LoggerInterface;
  21. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  22. use Symfony\Component\HttpFoundation\JsonResponse;
  23. use Symfony\Component\Routing\Annotation\Route;
  24. use Symfony\Component\HttpFoundation\Request;
  25. use Symfony\Component\HttpFoundation\Response;
  26. /**
  27.  *
  28.  */
  29. class EsportazioniController extends AbstractController
  30. {
  31.     /** @var ReturnImpostazioniServiceController */
  32.     private $imp;
  33.     /** @var ServiziController */
  34.     private $servizi;
  35.     /** @var Mailer */
  36.     private $mailer;
  37.     /** @var LoggerInterface */
  38.     private $logger;
  39.     /** @var Translating */
  40.     private $translating;
  41.     /**
  42.      * EsportazioniController constructor.
  43.      * @param ReturnImpostazioniServiceController $imp
  44.      * @param ServiziController $servizi
  45.      * @param Mailer $mailer
  46.      * @param LoggerInterface $logger
  47.      * @param Translating $translating
  48.      */
  49.     public function __construct(ReturnImpostazioniServiceController $impServiziController $serviziMailer $mailerLoggerInterface $loggerTranslating $translating)
  50.     {
  51.         $this->imp $imp;
  52.         $this->servizi $servizi;
  53.         $this->mailer $mailer;
  54.         $this->logger $logger;
  55.         $this->translating $translating;
  56.     }
  57.     /**
  58.      * @param $ip string
  59.      * @param $debug string
  60.      * @param $esito boolean
  61.      * @param $messaggio string
  62.      * @param $utente User
  63.      */
  64.     function ScriviRegistroAttivita($em$ip$debug$esito$messaggio$utente)
  65.     {
  66.         $this->servizi->ScriviRegistroAttivita($ip$debug$esito$messaggio$utente);
  67.     }
  68.     /** @return bool */
  69.     function verificaSeStatoUE($stato)
  70.     {
  71.         $nazione $this->servizi->doctrine->getRepository(Nazioni::class)->findOneBy(array('siglaIso' => $stato));
  72.         if ($nazione) {
  73.             if ($nazione->getPaeseCee())
  74.                 return true;
  75.             else
  76.                 return false;
  77.         }else{
  78.             $this->ScriviRegistroAttivita(null""""false"Sigla iso nazione non trovata. Sigla: " $nazionenull);
  79.             return false;
  80.         }
  81.     }
  82.     /**
  83.      * @Route("/esportaOrdiniJson", name="esporta_ordini_json")
  84.      */
  85.     public function esportaOrdiniJsonAction(Request $request)
  86.     {
  87.         if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {
  88.             $inviaMail $this->imp->ritornaImpostazioneDaNome("InviaMailOrdineEsportato");
  89.             $from $this->imp->ritornaImpostazioneDaNome("IndirizzoMailFromInvioComunicazioni");
  90.             $nomeShop $this->imp->ritornaImpostazioneDaNome("NomeShop");
  91.             $esportaSoloScontiValidi $this->imp->ritornaImpostazioneDaNome("EliminaScontiAZero");
  92.             ini_set('max_execution_time'900);
  93.             ini_set('memory_limit', -1);
  94.             $start microtime(true);
  95.             $this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);
  96.             $em $this->servizi->doctrine->getManager();
  97.             $ritorno = array('ERRORE' => '''Dati' => array());
  98.             $this->ScriviRegistroAttivita($em$request->getClientIp(), ""true'Chiamata effettuata a /esportaOrdiniJson --- Inizio l\' esportazione degli ordini'null);
  99.             $esportazioneDiSistema $this->servizi->doctrine->getRepository(EsportazioniDiSistema::class)->findOneBy(array('tipo' => 'ordini''attivo' => true));
  100.             if($esportazioneDiSistema){
  101.                 $this->ScriviRegistroAttivita($em$request->getClientIp(), ''true'Rilevata Esportazione di sistema: ' $esportazioneDiSistema->getId() . '-' $esportazioneDiSistema->getNome(), $this->servizi->OttieniUtenteCorrente());
  102.                 $eseguiEsportazioneDiSistema = new EseguiEsportazioneDiSistema($this->servizi$esportazioneDiSistema$request->getLocale(), $this->logger);
  103.                 $eseguiEsportazioneDiSistema->Avvia(true);
  104.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ""true'Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>'null);
  105.                 return new Response('Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>');
  106.             }
  107.             try {
  108.                 $ordini $this->servizi->doctrine->getRepository(Ordini::class)->findBy(array('esportato' => false));
  109.                 $elencoOrdiniJson = array();
  110.                 /** @var $item Ordini*/
  111.                 foreach ($ordini as $item) {
  112.                     $codiceCliente '';
  113.                     $codiceSpedizione '';
  114.                     $codiceConsegna '';
  115.                     //Dati azienda
  116.                     $ragSoc ''$indirizzo ''$codiceFisc ''$partitaIVa ''$citta ''$provincia ''$cap ''$stato ''$telefono ''$indirizzoMail ''$sdi ''$pec ''$codiceDestinazione ''$codiceAgente '';
  117.                     //Destinazione
  118.                     $destRagSoc ''$destIndirizzo ''$destCitta ''$destProvincia ''$destCap ''$destNazione '';
  119.                     if ($item->getAnagrafica()){
  120.                         $codiceCliente $item->getAnagrafica()->getCodice();
  121.                         if ($item->getModalitaSpedizioneUtenteComune()){
  122.                             $codiceConsegna $item->getModalitaSpedizioneUtenteComune()->getCodiceEsportazionePorto();
  123.                             $codiceSpedizione $item->getModalitaSpedizioneUtenteComune()->getCodiceEsportazione();
  124.                         }
  125.                         if ($item->getAnagraficaIndirizzoDiverso()){
  126.                             $destRagSoc $item->getAnagraficaIndirizzoDiverso()->getRagioneSociale();
  127.                             $destIndirizzo $item->getAnagraficaIndirizzoDiverso()->getIndirizzo();
  128.                             $destCitta $item->getAnagraficaIndirizzoDiverso()->getCitta();
  129.                             $destProvincia $item->getAnagraficaIndirizzoDiverso()->getProvincia();
  130.                             $destCap $item->getAnagraficaIndirizzoDiverso()->getCap();
  131.                             $destNazione $item->getAnagraficaIndirizzoDiverso()->getNazione();
  132.                             $codiceDestinazione $item->getAnagraficaIndirizzoDiverso()->getTipoIndirizzo();
  133.                         }
  134.                         $ragSoc $item->getAnagrafica()->getRagioneSociale();
  135.                         $indirizzo $item->getAnagrafica()->getIndirizzo();
  136.                         $codiceFisc $item->getAnagrafica()->getCodiceFiscale();
  137.                         $partitaIVa $item->getAnagrafica()->getPartitaIva();
  138.                         $citta $item->getAnagrafica()->getComune();
  139.                         $provincia $item->getAnagrafica()->getProvincia();
  140.                         $cap $item->getAnagrafica()->getCap();
  141.                         $stato $item->getAnagrafica()->getNazione();
  142.                         $telefono $item->getAnagrafica()->getTelefono();
  143.                         $indirizzoMail $item->getAnagrafica()->getIndirizziMail();
  144.                         $codiceAgente $item->getAnagrafica()->getCodiceAgente();
  145.                     }else if ($item->getAzienda()){
  146.                         $codiceCliente $item->getAzienda()->getCodiceCliente();
  147.                         if ($item->getAzienda()->getUtenteComune()){
  148.                             if ($item->getModalitaSpedizioneUtenteComune()){
  149.                                 $codiceConsegna $item->getModalitaSpedizioneUtenteComune()->getCodiceEsportazionePorto();
  150.                                 $codiceSpedizione $item->getModalitaSpedizioneUtenteComune()->getCodiceEsportazione();
  151.                             }
  152.                         }else{
  153.                             if ($item->getSpedizioneConsegna()){
  154.                                 if ($item->getSpedizioneConsegna()->getConsegna()){
  155.                                     $codiceConsegna $item->getSpedizioneConsegna()->getConsegna()->getCodice();
  156.                                 }
  157.                                 if ($item->getSpedizioneConsegna()->getSpedizione()){
  158.                                     $codiceSpedizione $item->getSpedizioneConsegna()->getSpedizione()->getCodice();
  159.                                 }
  160.                             }
  161.                         }
  162.                         if ($item->getDestinazione()){
  163.                             $destRagSoc $item->getDestinazione()->getRagioneSociale();
  164.                             $destIndirizzo $item->getDestinazione()->getIndirizzo();
  165.                             $destCitta $item->getDestinazione()->getCitta();
  166.                             $destProvincia $item->getDestinazione()->getProvincia();
  167.                             $destCap $item->getDestinazione()->getCap();
  168.                             $destNazione $item->getDestinazione()->getStato();
  169.                             $codiceDestinazione $item->getDestinazione()->getCodiceGestionale();
  170.                         }
  171.                         $ragSoc $item->getAzienda()->getRagioneSociale();
  172.                         $indirizzo $item->getAzienda()->getIndirizzo();
  173.                         $codiceFisc $item->getAzienda()->getCodiceFiscale();
  174.                         $partitaIVa $item->getAzienda()->getPartitaIva();
  175.                         $citta $item->getAzienda()->getCitta();
  176.                         $provincia $item->getAzienda()->getProvincia();
  177.                         $cap $item->getAzienda()->getCap();
  178.                         $stato $item->getAzienda()->getNazione();
  179.                         $telefono $item->getAzienda()->getTelefono();
  180.                         $indirizzoMail $item->getAzienda()->getIndirizzo();
  181.                         $sdi $item->getAzienda()->getCodiceDestinatarioFatturaElettronica();
  182.                         $pec $item->getAzienda()->getIndirizzoPec();
  183.                         //Verifico se esiste l'anagrafica in base al codice cliente del cliente così da recuperare il codice agente
  184.                         $esistenzaAnagrafica $this->servizi->doctrine->getRepository(Anagrafiche::class)->findOneBy(array('codice' => $item->getAzienda()->getCodiceCliente()));
  185.                         $codiceAgente '';
  186.                         if($esistenzaAnagrafica){
  187.                             $codiceAgente $esistenzaAnagrafica->getCodiceAgente();
  188.                         }
  189.                     }else {
  190.                         $codiceCliente $item->getUtente()->getCodiceCliente();
  191.                         if ($item->getSpedizioneConsegna()){
  192.                             if ($item->getSpedizioneConsegna()->getConsegna()){
  193.                                 $codiceConsegna $item->getSpedizioneConsegna()->getConsegna()->getCodice();
  194.                             }
  195.                             if ($item->getSpedizioneConsegna()->getSpedizione()){
  196.                                 $codiceSpedizione $item->getSpedizioneConsegna()->getSpedizione()->getCodice();
  197.                             }
  198.                         }else{
  199.                             if ($item->getModalitaSpedizioneUtenteComune()){
  200.                                 $codiceConsegna $item->getModalitaSpedizioneUtenteComune()->getCodiceEsportazionePorto();
  201.                                 $codiceSpedizione $item->getModalitaSpedizioneUtenteComune()->getCodiceEsportazione();
  202.                             }
  203.                         }
  204.                         if ($item->getDestinazione()){
  205.                             $destRagSoc $item->getDestinazione()->getRagioneSociale();
  206.                             $destIndirizzo $item->getDestinazione()->getIndirizzo();
  207.                             $destCitta $item->getDestinazione()->getCitta();
  208.                             $destProvincia $item->getDestinazione()->getProvincia();
  209.                             $destCap $item->getDestinazione()->getCap();
  210.                             $destNazione $item->getDestinazione()->getStato();
  211.                             $codiceDestinazione $item->getDestinazione()->getCodiceGestionale();
  212.                         }
  213.                         $ragSoc $item->getUtente()->getRagioneSociale();
  214.                         $indirizzo $item->getUtente()->getIndirizzo();
  215.                         $codiceFisc $item->getUtente()->getCodiceFiscale();
  216.                         $partitaIVa $item->getUtente()->getPartitaIva();
  217.                         $citta $item->getUtente()->getCitta();
  218.                         $provincia $item->getUtente()->getProvincia();
  219.                         $cap $item->getUtente()->getCap();
  220.                         $stato $item->getUtente()->getNazione();
  221.                         $telefono $item->getUtente()->getTelefono();
  222.                         $indirizzoMail $item->getUtente()->getIndirizzo();
  223.                         $sdi $item->getUtente()->getCodiceDestinatarioFatturaElettronica();
  224.                         $pec $item->getUtente()->getIndirizzoPec();
  225.                         $codiceAgente '';
  226.                     }
  227.                     $codiceEsportazione '';
  228.                     if($item->getTipoOrdine()){
  229.                         $codiceEsportazione $item->getTipoOrdine()->getCodiceEsportazione() ? $item->getTipoOrdine()->getCodiceEsportazione() : '';
  230.                     }else{
  231.                         $codiceEsportazione $item->getTipoOrdineCodiceEsportazione() ? $item->getTipoOrdineCodiceEsportazione() : '';
  232.                     }
  233.                     $codiceModalitaPagamento "";
  234.                     $descrizioneModalitaPagamento "";
  235.                     if($item->getModalitaPagamento()){
  236.                         $codiceModalitaPagamento $item->getModalitaPagamento()->getCodiceEsportazione();
  237.                         $descrizioneModalitaPagamento $item->getModalitaPagamento()->getNome();
  238.                     }
  239.                     $codiceModalitaSpedizione "";
  240.                     $descrizioneModalitaSpedizione "";
  241.                     if($item->getModalitaSpedizioneUtenteComune()){
  242.                         $codiceModalitaSpedizione $item->getModalitaSpedizioneUtenteComune()->getCodiceEsportazione();
  243.                         $descrizioneModalitaSpedizione $item->getModalitaSpedizioneUtenteComune()->getNome();
  244.                     }
  245.                     $ordine = array(
  246.                         'id' => $item->getId(),
  247.                         'riferimento_ordine' => $item->getRiferimentoSistema(),
  248.                         'sconto_online' => $item->getExtraScontoOrdineOnline(),
  249.                         'codice_cliente' => $codiceCliente,
  250.                         'riferimento_cliente' => $item->getRiferimentoCliente(),
  251.                         'data_ordine' => ($item->getDataOrdine() ? $item->getDataOrdine()->format('Y-m-d H:i:s') : ''),
  252.                         'data_consegna' => ($item->getDataConsegna() ? $item->getDataConsegna()->format('Y-m-d H:i:s') : ''),
  253.                         'data_pagamento' => ($item->getDataPagamento() ? $item->getDataPagamento()->format('Y-m-d H:i:s') : ''),
  254.                         'riferimento_pagamento' => $item->getRiferimentoTransazione(),
  255.                         'destinazione_ragione_sociale' => $destRagSoc,
  256.                         'destinazione_indirizzo' => $destIndirizzo,
  257.                         'destinazione_citta' => $destCitta,
  258.                         'destinazione_provincia' => $destProvincia,
  259.                         'destinazione_cap' => $destCap,
  260.                         'destinazione_nazione' => $destNazione,
  261.                         'spedizione' => $codiceSpedizione,
  262.                         'consegna' => $codiceConsegna,
  263.                         'note_documento' => preg_replace("/\r\n|\r|\n/""\x"$item->getNote()),
  264.                         'utente_ragioneSociale' => $ragSoc,
  265.                         'utente_indirizzo' => $indirizzo,
  266.                         'utente_codiceFiscale' => $codiceFisc,
  267.                         'utente_partitaIva' => $partitaIVa,
  268.                         'utente_citta' => $citta,
  269.                         'utente_provincia' => $provincia,
  270.                         'utente_cap' => $cap,
  271.                         'codice_sdi' => $sdi,
  272.                         'indirizzo_pec' => $pec,
  273.                         'utente_stato' => $stato,
  274.                         'utente_telefono' => $telefono,
  275.                         'utente_indirizzoMail' => $indirizzoMail,
  276.                         'totale_netto' => ($item->getTotaleNetto() ? $item->getTotaleNetto() : "0.00"),
  277.                         'totale' => ($item->getTotale() ? $item->getTotale() : "0.00"),
  278.                         'pagato' => ($item->getPagato() ? '1' "0"),
  279.                         'totale_imposta' => ($item->getTotaleImposta() ? $item->getTotaleImposta() : "0.00"),
  280.                         'totale_spedizione' => ($item->getTotaleSpedizione() ? $item->getTotaleSpedizione() : "0.00"),
  281.                         'tot_altri_sconti' => (($item->getTotaleAltriSconti() ? $item->getTotaleAltriSconti() : 0) + ($item->getTotaleScontoCoupon() ? $item->getTotaleScontoCoupon() : 0)),
  282.                         'tot_altre_maggiorazioni' => ($item->getTotaleAltreMaggiorazioni() ? $item->getTotaleAltreMaggiorazioni() : "0.00"),
  283.                         'codice_destinazione' => $codiceDestinazione,
  284.                         'codice_agente' => $codiceAgente,
  285.                         'codice_esportazione_tipo_ordine' => $codiceEsportazione,
  286.                         'codice_modalita_pagamento' => $codiceModalitaPagamento,
  287.                         'descrizione_modalita_pagamento' => $descrizioneModalitaPagamento,
  288.                         'codice_modalita_spedizione' => $codiceModalitaSpedizione,
  289.                         'descrizione_modalita_spedizione' => $descrizioneModalitaSpedizione,
  290.                         'note_aziendali' => preg_replace("/\r\n|\r|\n/""\x"$item->getNoteAziendali()),
  291.                         'codice_utente_inserimento_ordine' => $item->getUtente() ? $item->getUtente()->getCodiceCliente() : '',
  292.                         'tipo_ordine' => $item->getTipoOrdine() ? $item->getTipoOrdine()->getCodiceEsportazione() : '',
  293.                         '%RIGHE%' => array()
  294.                     );
  295.                     $righeOrdine = array();
  296.                     /** @var  $riga OrdiniRighe */
  297.                     foreach ($item->getRighe() as $riga) {
  298.                         $datiRiga RigheOrdineEsportare::CreaDaRigaOrdine($riga);
  299.                         $rOrd = array(
  300.                             'id_ordine' => $datiRiga->idOrdine,
  301.                             'id_riga' => $datiRiga->idRiga,
  302.                             'macro_categoria' => $datiRiga->macroCategoria,
  303.                             'marca' => $datiRiga->marca,
  304.                             'codice_prodotto' => $datiRiga->codiceArticolo,
  305.                             'unita_misura' => $datiRiga->codiceUm,
  306.                             'codice_aliquota' => $datiRiga->codiceAliquota,
  307.                             'valore_aliquota' => $datiRiga->valoreAliquota,
  308.                             'um_peso' => $datiRiga->codiceUmPeso,
  309.                             'peso_netto' => $datiRiga->pesoNetto,
  310.                             'peso_lordo' => $datiRiga->pesoLordo,
  311.                             'quantita' => $datiRiga->qta,
  312.                             'cat1_codice' => $datiRiga->codCat1,
  313.                             'cat2_codice' => $datiRiga->codCat2,
  314.                             'cat3_codice' => $datiRiga->codCat3,
  315.                             'cat4_codice' => $datiRiga->codCat4,
  316.                             'cat5_codice' => $datiRiga->codCat5,
  317.                             'codice_variante' => $datiRiga->codiceVariante,
  318.                             'netto_cad' => $datiRiga->nettoCad,
  319.                             'lordo_cad' => $datiRiga->lordoCad,
  320.                             'tot_riga_lordo' => $datiRiga->totaleRigaLordo,
  321.                             'tot_riga' => $datiRiga->totaleRigaNetto,
  322.                             'scontistica_non_presente' => $datiRiga->scontisticaNonPresente,
  323.                             'sconti' => ($esportaSoloScontiValidi $this->servizi->pulisciStringaScontiEMantieniSoloQuelliValidi($datiRiga->sconti) : $datiRiga->sconti),
  324.                             'tot_imposta' => $datiRiga->totaleImposta,
  325.                             'nota_riga' => $datiRiga->nota,
  326.                             'descrizione_breve_articolo' => $datiRiga->descrizioneBreveArticolo,
  327.                             'nota_riga_aziendale' => $datiRiga->notaAzienda,
  328.                             'nome_articolo' => $datiRiga->nomeArticolo,
  329.                             'descrizione_articolo' => $datiRiga->descrizioneArticolo,
  330.                             'data_consegna_riga' => $datiRiga->dataConsegnaRiga
  331.                         );
  332.                         array_push($righeOrdine$rOrd);
  333.                     }
  334.                     $ordine['%RIGHE%'] = $righeOrdine;
  335.                     array_push($elencoOrdiniJson$ordine);
  336.                     $this->ScriviRegistroAttivita($em$request->getClientIp(), ""true'Ordine ' $item->getRiferimentoSistema() . ' esportato con successo'null);
  337.                     $item->setEsportato(true);
  338.                     $em->persist($item);
  339.                     try {
  340.                         if ($inviaMail) {
  341.                             $listaMailSecondarie $this->servizi->doctrine->getRepository(MailSecondarieUtenti::class)->findBy(array('azienda' => $item->getAzienda(), 'inviaConfermaOrdine' => true));
  342.                             $stringCC = array();
  343.                             foreach ($listaMailSecondarie as $ms)
  344.                             {
  345.                                 array_push($stringCC$ms->getIndirizzoMail());
  346.                             }
  347.                             $translator $this->translating;
  348.                             $translator->CaricaTraduzioniDaFamiglia('mail_ordine'$request->getLocale());
  349.                             $header1 $translator->OttieniElementoDizionario("mail_ordine_registrato_header_uno""mail_ordine")->valoreUscita;
  350.                             $header2 $translator->OttieniElementoDizionario("mail_ordine_registrato_header_due""mail_ordine")->valoreUscita;
  351.                             $this->mailer->SendMail(
  352.                                 $header1 $item->getRiferimentoSistema() . " - " $item->getRiferimentoCliente() . $header2 $nomeShop,
  353.                                 $this->renderView(
  354.                                     'email/ordini/ordine_esportato.html.twig',
  355.                                     array(
  356.                                         'ordine' => $item,
  357.                                         'utente' => $item->getAzienda(),
  358.                                     )
  359.                                 ),
  360.                                 $item->getAzienda()->getEmail(),
  361.                                 $stringCC,
  362.                                 $from
  363.                             );
  364.                         }
  365.                     }catch (\Exception $e){
  366.                         $this->logger->critical("Errore invio mail: " $e->getMessage());
  367.                         $this->ScriviRegistroAttivita($em$request->getClientIp(), $etrue'Errore invio mail conferma esportazione Ordine ' $item->getRiferimentoSistema() . ' all\'indirizzo ' $item->getAzienda()->getEmail() . " --- Errore: " $e->getMessage(), null);
  368.                     }
  369.                 }
  370.                 $ritorno['Dati'] = $elencoOrdiniJson;
  371.                 $em->flush();
  372.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ""true'Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>'null);
  373.                 return new JsonResponse($ritorno);
  374.             }catch (\Exception $ex)
  375.             {
  376.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ''true'Errore esportazione ordini: ' $ex->getMessage(), null);
  377.                 $ritorno['ERRORE'] = ('Errore esportazione ordini: ' $ex->getMessage());
  378.                 return new JsonResponse($ritorno);
  379.             }
  380.         }
  381.         else {
  382.             $this->ScriviRegistroAttivita(null$request->getClientIp(), ""false'Errore esportazione: ERRORE_PERMESSO'null);
  383.             $ritorno['ERRORE'] = "ERRORE_PERMESSO";
  384.             return new JsonResponse($ritorno);
  385.         }
  386.     }
  387.     /**
  388.      * @Route("/esportaOrdini", name="esporta_ordini")
  389.      */
  390.     public function esportaOrdiniAction(Request $request)
  391.     {
  392.         if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {
  393.             $inviaMail $this->imp->ritornaImpostazioneDaNome("InviaMailOrdineEsportato");
  394.             $from $this->imp->ritornaImpostazioneDaNome("IndirizzoMailFromInvioComunicazioni");
  395.             $nomeShop $this->imp->ritornaImpostazioneDaNome("NomeShop");
  396.             $esportaSoloScontiValidi $this->imp->ritornaImpostazioneDaNome("EliminaScontiAZero");
  397.             ini_set('max_execution_time'900);
  398.             ini_set('memory_limit', -1);
  399.             $start microtime(true);
  400.             $pathFileBase $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');
  401.             if (!$this->endsWith($pathFileBaseDIRECTORY_SEPARATOR))
  402.                 $pathFileBase .= DIRECTORY_SEPARATOR;
  403.             $pathFileBase .= ('OUT' DIRECTORY_SEPARATOR);
  404.             $this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);
  405.             $em $this->servizi->doctrine->getManager();
  406.             $separatore "|";
  407.             $this->ScriviRegistroAttivita($em$request->getClientIp(), ""true'Chiamata effettuata a /esportaOrdini --- Inizio l\' esportazione degli ordini'null);
  408.             $esportazioneDiSistema $this->servizi->doctrine->getRepository(EsportazioniDiSistema::class)->findOneBy(array('tipo' => 'ordini''attivo' => true));
  409.             if($esportazioneDiSistema){
  410.                 $this->ScriviRegistroAttivita($em$request->getClientIp(), ''true'Rilevata Esportazione di sistema: ' $esportazioneDiSistema->getId() . '-' $esportazioneDiSistema->getNome(), $this->servizi->OttieniUtenteCorrente());
  411.                 $eseguiEsportazioneDiSistema = new EseguiEsportazioneDiSistema($this->servizi$esportazioneDiSistema$request->getLocale(), $this->logger);
  412.                 $eseguiEsportazioneDiSistema->Avvia(true);
  413.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ""true'Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>'null);
  414.                 return new Response('Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>');
  415.             }
  416.             try {
  417.                 $root_path $pathFileBase "export" DIRECTORY_SEPARATOR;
  418.                 $debug_root_path $pathFileBase "debug_file" DIRECTORY_SEPARATOR;
  419.                 $ordini $this->servizi->doctrine->getRepository(Ordini::class)->findBy(array('esportato' => false));
  420.                 $pathFileTestate $root_path "ordini_testate.csv";
  421.                 $pathFileRighe $root_path "ordini_righe.csv";
  422.                 $date = new \DateTime();
  423.                 $stringa_data $date->format("Y") . "_" $date->format("m") . "_" $date->format("d") . "_" $date->format("H") . "_" $date->format("i") . "_" $date->format("s");
  424.                 $pathFileTestateDebug $debug_root_path $stringa_data "_ordini_testate.csv";
  425.                 $pathFileRigheDebug $debug_root_path $stringa_data "_ordini_righe.csv";
  426.             $testate "id_ordine|riferimento_ordine|sconto_online|codice_cliente|riferimento_cliente|data_ordine|data_consegna|data_pagamento|riferimento_pagamento|destinazione_ragione_sociale|destinazione_indirizzo|destinazione_citta|destinazione_provincia|destinazione_cap|destinazione_nazione|spedizione|consegna|note_documento|utente_ragioneSociale|utente_indirizzo|utente_codiceFiscale|utente_partitaIva|utente_citta|utente_provincia|utente_cap|codice_sdi|indirizzo_pec|utente_stato|utente_telefono|utente_indirizzoMail|totale_netto|totale|pagato|totale_imposta|totale_spedizione|tot_altri_sconti|tot_altre_maggiorazioni|codice_destinazione|codice_agente|codice_esportazione_tipo_ordine|codice_modalita_pagamento|descrizione_modalita_pagamento|codice_modalita_spedizione|descrizione_modalita_spedizione|note_aziendali|codice_cliente_inserimento_ordine\n";
  427.                 $righe "id_ordine|macro_categoria|codice_marca|codice_prodotto|unita_misura|codice_aliquota|valore_aliquota|um_peso|peso_netto|peso_lordo|quantita|cat1_codice|cat2_codice|cat3_codice|cat4_codice|cat5_codice|codice_variante|netto_cad|lordo_cad|tot_riga_lordo|tot_riga|scontistica_non_presente|sconti|tot_imposta|nota_riga|descrizione_breve_articolo|nota_riga_aziendale|nome_articolo|descrizione_articolo|data_consegna_riga\n";
  428.                 /** @var $item Ordini*/
  429.                 foreach ($ordini as $item) {
  430.                     
  431.                     $codiceCliente '';
  432.                     $codiceSpedizione '';
  433.                     $codiceConsegna '';
  434.                     
  435.                     //Dati azienda
  436.                     $ragSoc ''$indirizzo ''$codiceFisc ''$partitaIVa ''$citta ''$provincia ''$cap ''$stato ''$telefono ''$indirizzoMail ''$sdi ''$pec ''$codiceDestinazione ''$codiceAgente '';
  437.                     
  438.                     //Destinazione
  439.                     $destRagSoc ''$destIndirizzo ''$destCitta ''$destProvincia ''$destCap ''$destNazione '';                    
  440.                     
  441.                     if ($item->getAnagrafica()){
  442.                         $codiceCliente $item->getAnagrafica()->getCodice();
  443.                         if ($item->getModalitaSpedizioneUtenteComune()){
  444.                             $codiceConsegna $item->getModalitaSpedizioneUtenteComune()->getCodiceEsportazionePorto();
  445.                             $codiceSpedizione $item->getModalitaSpedizioneUtenteComune()->getCodiceEsportazione();
  446.                         }
  447.                         if ($item->getAnagraficaIndirizzoDiverso()){
  448.                             $destRagSoc $item->getAnagraficaIndirizzoDiverso()->getRagioneSociale();
  449.                             $destIndirizzo $item->getAnagraficaIndirizzoDiverso()->getIndirizzo();
  450.                             $destCitta $item->getAnagraficaIndirizzoDiverso()->getCitta();
  451.                             $destProvincia $item->getAnagraficaIndirizzoDiverso()->getProvincia();
  452.                             $destCap $item->getAnagraficaIndirizzoDiverso()->getCap();
  453.                             $destNazione $item->getAnagraficaIndirizzoDiverso()->getNazione();
  454.                             $codiceDestinazione $item->getAnagraficaIndirizzoDiverso()->getTipoIndirizzo();
  455.                         }
  456.                         $ragSoc $item->getAnagrafica()->getRagioneSociale();
  457.                         $indirizzo $item->getAnagrafica()->getIndirizzo();
  458.                         $codiceFisc $item->getAnagrafica()->getCodiceFiscale();
  459.                         $partitaIVa $item->getAnagrafica()->getPartitaIva();
  460.                         $citta $item->getAnagrafica()->getComune();
  461.                         $provincia $item->getAnagrafica()->getProvincia();
  462.                         $cap $item->getAnagrafica()->getCap();
  463.                         $stato $item->getAnagrafica()->getNazione();
  464.                         $telefono $item->getAnagrafica()->getTelefono();
  465.                         $indirizzoMail $item->getAnagrafica()->getIndirizziMail();
  466.                         $codiceAgente $item->getAnagrafica()->getCodiceAgente();
  467.                     }else if ($item->getAzienda()){
  468.                         $codiceCliente $item->getAzienda()->getCodiceCliente();
  469.                         if ($item->getAzienda()->getUtenteComune()){
  470.                             if ($item->getModalitaSpedizioneUtenteComune()){
  471.                                 $codiceConsegna $item->getModalitaSpedizioneUtenteComune()->getCodiceEsportazionePorto();
  472.                                 $codiceSpedizione $item->getModalitaSpedizioneUtenteComune()->getCodiceEsportazione();
  473.                             } 
  474.                         }else{
  475.                             if ($item->getSpedizioneConsegna()){
  476.                                 if ($item->getSpedizioneConsegna()->getConsegna()){
  477.                                     $codiceConsegna $item->getSpedizioneConsegna()->getConsegna()->getCodice();
  478.                                 }
  479.                                 if ($item->getSpedizioneConsegna()->getSpedizione()){
  480.                                     $codiceSpedizione $item->getSpedizioneConsegna()->getSpedizione()->getCodice();
  481.                                 }
  482.                             }
  483.                         }
  484.                         if ($item->getDestinazione()){
  485.                             $destRagSoc $item->getDestinazione()->getRagioneSociale();
  486.                             $destIndirizzo $item->getDestinazione()->getIndirizzo();
  487.                             $destCitta $item->getDestinazione()->getCitta();
  488.                             $destProvincia $item->getDestinazione()->getProvincia();
  489.                             $destCap $item->getDestinazione()->getCap();
  490.                             $destNazione $item->getDestinazione()->getStato();
  491.                             $codiceDestinazione $item->getDestinazione()->getCodiceGestionale();
  492.                         }
  493.                         $ragSoc $item->getAzienda()->getRagioneSociale();
  494.                         $indirizzo $item->getAzienda()->getIndirizzo();
  495.                         $codiceFisc $item->getAzienda()->getCodiceFiscale();
  496.                         $partitaIVa $item->getAzienda()->getPartitaIva();
  497.                         $citta $item->getAzienda()->getCitta();
  498.                         $provincia $item->getAzienda()->getProvincia();
  499.                         $cap $item->getAzienda()->getCap();
  500.                         $stato $item->getAzienda()->getNazione();
  501.                         $telefono $item->getAzienda()->getTelefono();
  502.                         $indirizzoMail $item->getAzienda()->getIndirizzo();
  503.                         $sdi $item->getAzienda()->getCodiceDestinatarioFatturaElettronica();
  504.                         $pec $item->getAzienda()->getIndirizzoPec();
  505.                         //Verifico se esiste l'anagrafica in base al codice cliente del cliente così da recuperare il codice agente
  506.                         $esistenzaAnagrafica $this->servizi->doctrine->getRepository(Anagrafiche::class)->findOneBy(array('codice' => $item->getAzienda()->getCodiceCliente()));
  507.                         $codiceAgente '';
  508.                         if($esistenzaAnagrafica){
  509.                             $codiceAgente $esistenzaAnagrafica->getCodiceAgente();
  510.                         }
  511.                     }else {
  512.                         $codiceCliente $item->getUtente()->getCodiceCliente();
  513.                         if ($item->getSpedizioneConsegna()){
  514.                             if ($item->getSpedizioneConsegna()->getConsegna()){
  515.                                 $codiceConsegna $item->getSpedizioneConsegna()->getConsegna()->getCodice();
  516.                             }
  517.                             if ($item->getSpedizioneConsegna()->getSpedizione()){
  518.                                 $codiceSpedizione $item->getSpedizioneConsegna()->getSpedizione()->getCodice();
  519.                             }
  520.                         }else{
  521.                             if ($item->getModalitaSpedizioneUtenteComune()){
  522.                                 $codiceConsegna $item->getModalitaSpedizioneUtenteComune()->getCodiceEsportazionePorto();
  523.                                 $codiceSpedizione $item->getModalitaSpedizioneUtenteComune()->getCodiceEsportazione();
  524.                             }
  525.                         }
  526.                         if ($item->getDestinazione()){
  527.                             $destRagSoc $item->getDestinazione()->getRagioneSociale();
  528.                             $destIndirizzo $item->getDestinazione()->getIndirizzo();
  529.                             $destCitta $item->getDestinazione()->getCitta();
  530.                             $destProvincia $item->getDestinazione()->getProvincia();
  531.                             $destCap $item->getDestinazione()->getCap();
  532.                             $destNazione $item->getDestinazione()->getStato();
  533.                             $codiceDestinazione $item->getDestinazione()->getCodiceGestionale();
  534.                         }
  535.                         $ragSoc $item->getUtente()->getRagioneSociale();
  536.                         $indirizzo $item->getUtente()->getIndirizzo();
  537.                         $codiceFisc $item->getUtente()->getCodiceFiscale();
  538.                         $partitaIVa $item->getUtente()->getPartitaIva();
  539.                         $citta $item->getUtente()->getCitta();
  540.                         $provincia $item->getUtente()->getProvincia();
  541.                         $cap $item->getUtente()->getCap();
  542.                         $stato $item->getUtente()->getNazione();
  543.                         $telefono $item->getUtente()->getTelefono();
  544.                         $indirizzoMail $item->getUtente()->getIndirizzo();
  545.                         $sdi $item->getUtente()->getCodiceDestinatarioFatturaElettronica();
  546.                         $pec $item->getUtente()->getIndirizzoPec();
  547.                         $codiceAgente '';
  548.                     }
  549.                     $codiceEsportazione '';
  550.                     if($item->getTipoOrdine()){
  551.                         $codiceEsportazione $item->getTipoOrdine()->getCodiceEsportazione() ? $item->getTipoOrdine()->getCodiceEsportazione() : '';
  552.                     }else{
  553.                         $codiceEsportazione $item->getTipoOrdineCodiceEsportazione() ? $item->getTipoOrdineCodiceEsportazione() : '';
  554.                     }
  555.                     $codiceModalitaPagamento "";
  556.                     $descrizioneModalitaPagamento "";
  557.                     if($item->getModalitaPagamento()){
  558.                         $codiceModalitaPagamento $item->getModalitaPagamento()->getCodiceEsportazione();
  559.                         $descrizioneModalitaPagamento $item->getModalitaPagamento()->getNome();
  560.                     }
  561.                     $codiceModalitaSpedizione "";
  562.                     $descrizioneModalitaSpedizione "";
  563.                     if($item->getModalitaSpedizioneUtenteComune()){
  564.                         $codiceModalitaSpedizione $item->getModalitaSpedizioneUtenteComune()->getCodiceEsportazione();
  565.                         $descrizioneModalitaSpedizione $item->getModalitaSpedizioneUtenteComune()->getNome();
  566.                     }
  567.                     $testate $testate "\"" $item->getId() . "\"" .
  568.                         $separatore "\"" $item->getRiferimentoSistema() . "\"" .
  569.                         $separatore "\"" $item->getExtraScontoOrdineOnline() . "\"" .
  570.                         $separatore "\"" $codiceCliente "\"" .
  571.                         $separatore "\" - " $item->getRiferimentoCliente() . "\"" .
  572.                         $separatore "\"" . ($item->getDataOrdine() ? $item->getDataOrdine()->format('Y-m-d H:i:s') : '') . "\"" .
  573.                         $separatore "\"" . ($item->getDataConsegna() ? $item->getDataConsegna()->format('Y-m-d H:i:s') : '') . "\"" .
  574.                         $separatore "\"" . ($item->getDataPagamento() ? $item->getDataPagamento()->format('Y-m-d H:i:s') : '') . "\"" .
  575.                         $separatore "\"" $item->getRiferimentoTransazione() . "\"" .
  576.                         $separatore "\"" $destRagSoc "\"" .
  577.                         $separatore "\"" $destIndirizzo "\"" .
  578.                         $separatore "\"" $destCitta "\"" .
  579.                         $separatore "\"" $destProvincia "\"" .
  580.                         $separatore "\"" $destCap "\"" .
  581.                         $separatore "\"" $destNazione "\"" .
  582.                         $separatore "\"" $codiceSpedizione "\"" .
  583.                         $separatore "\"" $codiceConsegna "\"" .
  584.                         $separatore "\"" preg_replace("/\r\n|\r|\n/""\x"$item->getNote()) . "\"" .
  585.                         $separatore "\"" $ragSoc "\"" .
  586.                         $separatore "\"" $indirizzo "\"" .
  587.                         $separatore "\"" $codiceFisc "\"" .
  588.                         $separatore "\"" $partitaIVa "\"" .
  589.                         $separatore "\"" $citta "\"" .
  590.                         $separatore "\"" $provincia "\"" .
  591.                         $separatore "\"" $cap "\"" .
  592.                         $separatore "\"" $sdi "\"" .
  593.                         $separatore "\"" $pec "\"" .
  594.                         $separatore "\"" $stato "\"" .
  595.                         $separatore "\"" $telefono "\"" .
  596.                         $separatore "\"" $indirizzoMail "\"" .
  597.                         $separatore "\"" . ($item->getTotaleNetto() ? $item->getTotaleNetto() : "0.00") . "\"" .
  598.                         $separatore "\"" . ($item->getTotale() ? $item->getTotale() : "0.00") . "\"" .
  599.                         $separatore "\"" . ($item->getPagato() ? '1' "0") . "\"" .
  600.                         $separatore "\"" . ($item->getTotaleImposta() ? $item->getTotaleImposta() : "0.00") . "\"" .
  601.                         $separatore "\"" . ($item->getTotaleSpedizione() ? $item->getTotaleSpedizione() : "0.00") . "\"" .
  602.                         $separatore "\"" . (($item->getTotaleAltriSconti() ? $item->getTotaleAltriSconti() : 0) + ($item->getTotaleScontoCoupon() ? $item->getTotaleScontoCoupon() : 0)) . "\"" .
  603.                         $separatore "\"" . ($item->getTotaleAltreMaggiorazioni() ? $item->getTotaleAltreMaggiorazioni() : "0.00") . "\"" .
  604.                         $separatore "\"" $codiceDestinazione "\"" .
  605.                         $separatore "\"" $codiceAgente "\"" .
  606.                         $separatore "\"" $codiceEsportazione "\"" .
  607.                         $separatore "\"" $codiceModalitaPagamento "\"" .
  608.                         $separatore "\"" $descrizioneModalitaPagamento "\"" .
  609.                         $separatore "\"" $codiceModalitaSpedizione "\"" .
  610.                         $separatore "\"" $descrizioneModalitaSpedizione "\"" .
  611.                         $separatore "\"" preg_replace("/\r\n|\r|\n/""\x"$item->getNoteAziendali()) . "\"" .
  612.                         $separatore "\"" . ($item->getAgente() ? $item->getAgente()->getCodiceCliente() : ($item->getAzienda() ? $item->getAzienda()->getCodiceCliente() : '')) . "\"" .
  613.                         "\n";
  614.                     /** @var  $riga OrdiniRighe */
  615.                     foreach ($item->getRighe() as $riga) {
  616.                         $datiRiga RigheOrdineEsportare::CreaDaRigaOrdine($riga);
  617.                         $righe $righe "\"" $datiRiga->idOrdine "\"" .
  618.                             $separatore "\"" $datiRiga->macroCategoria "\"" .
  619.                             $separatore "\"" $datiRiga->marca"\"" .
  620.                             $separatore "\"" $datiRiga->codiceArticolo "\"" .
  621.                             $separatore "\"" $datiRiga->codiceUm "\"" .
  622.                             $separatore "\"" $datiRiga->codiceAliquota "\"" .
  623.                             $separatore "\"" $datiRiga->valoreAliquota "\"" .
  624.                             $separatore "\"" $datiRiga->codiceUmPeso "\"" .
  625.                             $separatore "\"" $datiRiga->pesoNetto "\"" .
  626.                             $separatore "\"" $datiRiga->pesoLordo "\"" .
  627.                             $separatore "\"" $datiRiga->qta "\"" .
  628.                             $separatore "\"" $datiRiga->codCat1 "\"" .
  629.                             $separatore "\"" $datiRiga->codCat2 "\"" .
  630.                             $separatore "\"" $datiRiga->codCat3 "\"" .
  631.                             $separatore "\"" $datiRiga->codCat4 "\"" .
  632.                             $separatore "\"" $datiRiga->codCat5 "\"" .
  633.                             $separatore "\"" $datiRiga->codiceVariante "\"" .
  634.                             $separatore "\"" $datiRiga->nettoCad "\"" .
  635.                             $separatore "\"" $datiRiga->lordoCad "\"" .
  636.                             $separatore "\"" $datiRiga->totaleRigaLordo "\"" .
  637.                             $separatore "\"" $datiRiga->totaleRigaNetto "\"" .
  638.                             $separatore "\"" $datiRiga->scontisticaNonPresente "\"" .
  639.                             $separatore "\"" . ($esportaSoloScontiValidi $this->servizi->pulisciStringaScontiEMantieniSoloQuelliValidi($datiRiga->sconti) : $datiRiga->sconti) . "\"" .
  640.                             $separatore "\"" $datiRiga->totaleImposta "\"" .
  641.                             $separatore "\"" $datiRiga->nota "\"" .
  642.                             $separatore "\"" $datiRiga->descrizioneBreveArticolo "\"" .
  643.                             $separatore "\"" $datiRiga->notaAzienda "\"" .
  644.                             $separatore "\"" $datiRiga->nomeArticolo "\"" .
  645.                             $separatore "\"" $datiRiga->descrizioneArticolo "\"" .
  646.                             $separatore "\"" $datiRiga->dataConsegnaRiga "\"" .
  647.                             "\n";
  648.                     }
  649.                     $this->ScriviRegistroAttivita($em$request->getClientIp(), ""true'Ordine ' $item->getRiferimentoSistema() . ' esportato con successo'null);
  650.                     $item->setEsportato(true);
  651.                     $em->persist($item);
  652.                     try {
  653.                         if ($inviaMail) {
  654.                             $listaMailSecondarie $this->servizi->doctrine->getRepository(MailSecondarieUtenti::class)->findBy(array('azienda' => $item->getAzienda(), 'inviaConfermaOrdine' => true));
  655.                             $stringCC = array();
  656.                             foreach ($listaMailSecondarie as $ms)
  657.                             {
  658.                                 array_push($stringCC$ms->getIndirizzoMail());
  659.                             }
  660.                             $translator $this->translating;
  661.                             $translator->CaricaTraduzioniDaFamiglia('mail_ordine'$request->getLocale());
  662.                             $header1 $translator->OttieniElementoDizionario("mail_ordine_registrato_header_uno""mail_ordine")->valoreUscita;
  663.                             $header2 $translator->OttieniElementoDizionario("mail_ordine_registrato_header_due""mail_ordine")->valoreUscita;
  664.                             $this->mailer->SendMail(
  665.                                 $header1 $item->getRiferimentoSistema() . " - " $item->getRiferimentoCliente() . $header2 $nomeShop,
  666.                                 $this->renderView(
  667.                                     'email/ordini/ordine_esportato.html.twig',
  668.                                     array(
  669.                                         'ordine' => $item,
  670.                                         'utente' => $item->getAzienda(),
  671.                                     )
  672.                                 ),
  673.                                 $item->getAzienda()->getEmail(),
  674.                                 $stringCC,
  675.                                 $from
  676.                             );
  677.                         }
  678.                     }catch (\Exception $e){
  679.                         $this->logger->critical("Errore invio mail: " $e->getMessage());
  680.                         $this->ScriviRegistroAttivita($em$request->getClientIp(), $etrue'Errore invio mail conferma esportazione Ordine ' $item->getRiferimentoSistema() . ' all\'indirizzo ' $item->getAzienda()->getEmail() . " --- Errore: " $e->getMessage(), null);
  681.                     }
  682.                 }
  683.                 $csv_handler fopen($pathFileTestate"w");
  684.                 fwrite($csv_handler$testate);
  685.                 fclose($csv_handler);
  686.                 $csv_handler fopen($pathFileRighe"w");
  687.                 fwrite($csv_handler$righe);
  688.                 fclose($csv_handler);
  689.                 if (true)
  690.                 {
  691.                     $csv_handler fopen($pathFileTestateDebug"w");
  692.                     fwrite($csv_handler$testate);
  693.                     fclose($csv_handler);
  694.                     $csv_handler fopen($pathFileRigheDebug"w");
  695.                     fwrite($csv_handler$righe);
  696.                     fclose($csv_handler);
  697.                 }
  698.                 $em->flush();
  699.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ""true'Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>'null);
  700.                 return new Response('Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>Salvato in:</br>' $pathFileTestate '</br>' $pathFileRighe);
  701.             }catch (\Exception $ex)
  702.             {
  703.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ''true'Errore esportazione ordini: ' $ex->getMessage(), null);
  704.                 return new Response('Errore esportazione ordini: ' $ex->getMessage());
  705.             }
  706.         }
  707.         else {
  708.             $this->ScriviRegistroAttivita(null$request->getClientIp(), ""false'Errore esportazione: ERRORE_PERMESSO'null);
  709.             return new Response("ERRORE PERMESSO");
  710.         }
  711.     }
  712.     /**
  713.      * @Route("/esportaNoteAnagrafiche", name="esporta_note_anagrafiche")
  714.      */
  715.     public function esportaNoteAnagrafiche(Request $request)
  716.     {
  717.         if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {
  718.             $this->imp->caricaCacheImpostazioniDaNomi(array('IndirizzoMailFromInvioComunicazioni''NomeShop''PathFileBaseScambioDati''MailCCRelazioniAgenti''InviaMailAgentiRelazioni'));
  719.             $from $this->imp->ritornaImpostazioneDaNome("IndirizzoMailFromInvioComunicazioni");
  720.             $nomeShop $this->imp->ritornaImpostazioneDaNome("NomeShop");
  721.             ini_set('max_execution_time'900);
  722.             ini_set('memory_limit', -1);
  723.             $start microtime(true);
  724.             $pathFileBase $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');
  725.             if (!$this->endsWith($pathFileBaseDIRECTORY_SEPARATOR))
  726.                 $pathFileBase .= DIRECTORY_SEPARATOR;
  727.             $pathFileBase .= ('OUT' DIRECTORY_SEPARATOR);
  728.             $this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);
  729.             $em $this->servizi->doctrine->getManager();
  730.             $separatore "|";
  731.             $this->ScriviRegistroAttivita($em$request->getClientIp(), ""true'Chiamata effettuata a /esportaNoteAnagrafiche'$this->servizi->OttieniUtenteCorrente());
  732.             $esportazioneDiSistema $this->servizi->doctrine->getRepository(EsportazioniDiSistema::class)->findOneBy(array('tipo' => 'noteAnagrafiche''attivo' => true));
  733.             if($esportazioneDiSistema){
  734.                 $this->ScriviRegistroAttivita($em$request->getClientIp(), ''true'Rilevata Esportazione di sistema: ' $esportazioneDiSistema->getId() . '-' $esportazioneDiSistema->getNome(), $this->servizi->OttieniUtenteCorrente());
  735.                 $eseguiEsportazioneDiSistema = new EseguiEsportazioneDiSistema($this->servizi$esportazioneDiSistema$request->getLocale(), $this->logger);
  736.                 $eseguiEsportazioneDiSistema->Avvia(true);
  737.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ""true'Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>'null);
  738.                 return new Response('Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>');
  739.             }
  740.             try {
  741.                 $root_path $pathFileBase "export" DIRECTORY_SEPARATOR;
  742.                 /** @var  $elenco ModificaNoteAnagrafiche[] */
  743.                 $elenco $this->servizi->doctrine->getRepository(ModificaNoteAnagrafiche::class)->createQueryBuilder('modifica_note_anagrafiche')
  744.                     ->where('modifica_note_anagrafiche.invia = :invia')->setParameter('invia'true)
  745.                     ->andWhere('modifica_note_anagrafiche.trasmesso = :tras')->setParameter('tras'false)
  746.                     ->orderBy('modifica_note_anagrafiche.anagrafica')
  747.                     ->getQuery()->getResult();
  748.                 /** @var  $elencoDaInviare ModificaNoteAnagrafiche[]*/
  749.                 $elencoDaInviare = array();
  750.                 $pathFile $root_path "note_anagrafiche.csv";
  751.                 $date = new \DateTime();
  752.                 $index 0;
  753.                 $contenuto "identificativo_portale|codice_anagrafica|utente|data|data_inserimento|oggetto|testo\n";
  754.                 /** @var $item ModificaNoteAnagrafiche*/
  755.                 foreach ($elenco as $item) {
  756.                     try{
  757.                         $contenuto .= "\"" $item->getId() . "\"" .
  758.                             $separatore "\"" . ($item->getAnagrafica() ? $item->getAnagrafica()->getCodice() : '') . "\"" .
  759.                             $separatore "\"" . ($item->getUtente() ? $item->getUtente()->getRagioneSociale() : '') . "\"" .
  760.                             $separatore "\"" . ($item->getData() ? $item->getData()->format('Y-m-d H:i:s') : '')  . "\"" .
  761.                             $separatore "\"" . ($item->getDataInserimento() ? $item->getDataInserimento()->format('Y-m-d H:i:s') : '')  . "\"" .
  762.                             $separatore "\"" $item->getOggetto() . "\"" .
  763.                             $separatore "\"" $item->getTesto() . "\""
  764.                             "\n";
  765.                     $item->setTrasmesso(true);
  766.                     $item->setDataTrasmissione(new \DateTime());
  767.                     $em->persist($item);
  768.                     array_push($elencoDaInviare$item);
  769.                     $index++;
  770.                     }catch (\Exception $e){
  771.                         $this->servizi->DebuggaException($e"Errore esporta note anagrafiche riga: " $index " - ID: " $item->getId());
  772.                     }
  773.                 }
  774.                 $csv_handler fopen($pathFile"w");
  775.                 fwrite($csv_handler$contenuto);
  776.                 fclose($csv_handler);
  777.                 $em->flush();
  778.                 $mailCCAgenti $this->imp->ritornaImpostazioneDaNome('MailCCRelazioniAgenti');
  779.                 $esploso = array();
  780.                 $esploso explode(";"$mailCCAgenti);
  781.                 if (!$esploso)
  782.                     $esploso = array();
  783.                 if (count($esploso) == 0)
  784.                     array_push($esploso$mailCCAgenti);
  785.                 $inviaMailAgentiRelazioni $this->imp->ritornaImpostazioneDaNome('InviaMailAgentiRelazioni');
  786.                 $this->mailer->SendMail(
  787.                     "Relazioni agenti - " $nomeShop,
  788.                     $this->renderView(
  789.                         'email/relazioni_agenti/relazione_agenti.html.twig',
  790.                         array(
  791.                             'lista_relazioni' => $elencoDaInviare,
  792.                         )
  793.                     ),
  794.                     $from,
  795.                     $esploso,
  796.                     $from,
  797.                     'text/html'
  798.                 );
  799.                 if ($inviaMailAgentiRelazioni == '1'){
  800.                     //Verifico se c'è impostate questa impostazione e se vero itero sugli agenti e sulle relazioni da inviare
  801.                     $agenti $this->servizi->doctrine->getRepository(User::class)->findBy(array('agente' => true));
  802.                     foreach ($agenti as $ag){
  803.                         $cdAgenti $this->servizi->ritornaArrayCodiciAssociatiAgenteFornitoreUtente($ag);
  804.                         $arraySecondarioDaInviare = array();
  805.                         foreach ($elencoDaInviare as $inv){
  806.                             if($inv->getAnagrafica() && in_array($inv->getAnagrafica()->getCodiceAgente(), $cdAgenti))
  807.                                 array_push($arraySecondarioDaInviare$inv);
  808.                         }
  809.                         $this->mailer->SendMail(
  810.                             "Relazioni agenti - " $nomeShop,
  811.                             $this->renderView(
  812.                                 'email/relazioni_agenti/relazione_agenti.html.twig',
  813.                                 array(
  814.                                     'lista_relazioni' => $arraySecondarioDaInviare,
  815.                                 )
  816.                             ),
  817.                             $ag->getEmail(),
  818.                             array(),
  819.                             $from,
  820.                             'text/html'
  821.                         );
  822.                     }
  823.                 }
  824.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ""true'Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>'null);
  825.                 return new Response('Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>');
  826.             }catch (\Exception $ex)
  827.             {
  828.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ''true'Errore esportazione note anagrafiche: ' $ex->getMessage(), null);
  829.                 return new Response('Errore esportazione ordini: ' $ex->getMessage());
  830.             }
  831.         }
  832.         else {
  833.             $this->ScriviRegistroAttivita(null$request->getClientIp(), ""false'Errore esportazione: ERRORE_PERMESSO'null);
  834.             return new Response("ERRORE PERMESSO");
  835.         }
  836.     }
  837.     /**
  838.      * @Route("/esportaOfferte/{data}", name="esporta_offerte", defaults={"data" = ""})
  839.      */
  840.     public function esportaOfferte(Request $request$data)
  841.     {
  842.         if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {
  843.             ini_set('max_execution_time'900);
  844.             ini_set('memory_limit', -1);
  845.             $start microtime(true);
  846.             $pathFileBase $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');
  847.             if (!$this->endsWith($pathFileBaseDIRECTORY_SEPARATOR))
  848.                 $pathFileBase .= DIRECTORY_SEPARATOR;
  849.             $pathFileBase .= ('OUT' DIRECTORY_SEPARATOR);
  850.             $this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);
  851.             $em $this->servizi->doctrine->getManager();
  852.             $separatore "|";
  853.             $this->ScriviRegistroAttivita($em$request->getClientIp(), ""true'Chiamata effettuata a /esportaOfferte'$this->servizi->OttieniUtenteCorrente());
  854.             $esportazioneDiSistema $this->servizi->doctrine->getRepository(EsportazioniDiSistema::class)->findOneBy(array('tipo' => 'offerte''attivo' => true));
  855.             if($esportazioneDiSistema){
  856.                 $this->ScriviRegistroAttivita($em$request->getClientIp(), ''true'Rilevata Esportazione di sistema: ' $esportazioneDiSistema->getId() . '-' $esportazioneDiSistema->getNome(), $this->servizi->OttieniUtenteCorrente());
  857.                 $eseguiEsportazioneDiSistema = new EseguiEsportazioneDiSistema($this->servizi$esportazioneDiSistema$request->getLocale(), $this->logger);
  858.                 $eseguiEsportazioneDiSistema->Avvia(true);
  859.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ""true'Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>'null);
  860.                 return new Response('Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>');
  861.             }
  862.             try {
  863.                 $root_path $pathFileBase "export" DIRECTORY_SEPARATOR;
  864.                 $dataIndicata null;
  865.                 if($data && $data != ''){
  866.                     $dataIndicata \DateTime::createFromFormat("Y-m-d H:i:s"$data);
  867.                 }
  868.                 $qb $this->servizi->doctrine->getRepository(Offerte::class)->createQueryBuilder('offerte');
  869.                 if($dataIndicata)
  870.                     $qb $qb->andWhere('offerte.dataModifica > :dt')->setParameter('dt'$dataIndicata);
  871.                 $qb $qb->getQuery();
  872.                 /** @var  $elenco Offerte[]*/
  873.                 $elenco $qb->getResult();
  874.                 $pathFile $root_path "offerte.csv";
  875.                 /*
  876.                  * 0    documento
  877.                     1    numero
  878.                     2    anno
  879.                     3    codice_cliente
  880.                     4    ragione_sociale
  881.                     5    descrizione_breve
  882.                     6    descrizione_lunga
  883.                     7    data_documento
  884.                     8    data_creazione
  885.                     9    data_modifica
  886.                     10    importo
  887.                     11    stato
  888.                     12    data_eliminazione
  889.                     13    moneta
  890.                     14    importante
  891.                     15    path_pdf_originale
  892.                  */
  893.                 $index 0;
  894.                 $contenuto "documento|numero|anno|codice_cliente|ragione_sociale|descrizione_breve|descrizione_lunga|data_documento|data_creazione|data_modifica|importo|stato|data_eliminazione|moneta|importante|path_pdf_originale\n";
  895.                 /** @var $item Offerte*/
  896.                 foreach ($elenco as $item) {
  897.                     try{
  898.                         $contenuto .= "\"" . ($item->getDocumento() ? $item->getDocumento() : '') . "\"" .
  899.                             $separatore "\"" . ($item->getNumero() ? $item->getNumero() : '') . "\"" .
  900.                             $separatore "\"" . ($item->getAnno() ? $item->getAnno() : '') . "\"" .
  901.                             $separatore "\"" . ($item->getCodiceCliente() ? $item->getCodiceCliente() : '') . "\"" .
  902.                             $separatore "\"" . ($item->getRagioneSociale() ? $item->getRagioneSociale() : '') . "\"" .
  903.                             $separatore "\"" . ($item->getDescrizioneBreve() ? $item->getDescrizioneBreve() : '') . "\"" .
  904.                             $separatore "\"" . ($item->getDescrizioneLunga() ? $item->getDescrizioneLunga() : '') . "\"" .
  905.                             $separatore "\"" . ($item->getDataDocumento() ? $item->getDataDocumento()->format('Y-m-d H:i:s') : '')  . "\"" .
  906.                             $separatore "\"" . ($item->getDataCreazione() ? $item->getDataCreazione()->format('Y-m-d H:i:s') : '')  . "\"" .
  907.                             $separatore "\"" . ($item->getDataModifica() ? $item->getDataModifica()->format('Y-m-d H:i:s') : '')  . "\"" .
  908.                             $separatore "\"" . ($item->getImporto() ? $item->getImporto() : '') . "\"" .
  909.                             $separatore "\"" . ($item->getStato() ? $item->getStato() : '') . "\"" .
  910.                             $separatore "\"" . ($item->getDataEliminazione() ? $item->getDataEliminazione()->format('Y-m-d H:i:s') : '')  . "\"" .
  911.                             $separatore "\"" . ($item->getImportante() ? '1' '0') . "\"" .
  912.                             $separatore "\"" . ($item->getPathPdfOriginale() ? $item->getPathPdfOriginale() : '') . "\""
  913.                             "\n";
  914.                         $index++;
  915.                     }catch (\Exception $e){
  916.                         $this->servizi->DebuggaException($e"Errore esporta offerte -- Riga: " $index " - ID: " $item->getId());
  917.                     }
  918.                 }
  919.                 $csv_handler fopen($pathFile"w");
  920.                 fwrite($csv_handler$contenuto);
  921.                 fclose($csv_handler);
  922.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ""true'Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>'null);
  923.                 return new Response('Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>');
  924.             }catch (\Exception $ex)
  925.             {
  926.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ''true'Errore esportazione offerte: ' $ex->getMessage(), null);
  927.                 return new Response('Errore esportazione offerte: ' $ex->getMessage());
  928.             }
  929.         }
  930.         else {
  931.             $this->ScriviRegistroAttivita(null$request->getClientIp(), ""false'Errore esportazione: ERRORE_PERMESSO'null);
  932.             return new Response("ERRORE PERMESSO");
  933.         }
  934.     }
  935.     /**
  936.      * @Route("/esportaOfferteRighe/{data}", name="esporta_offerte_righe", defaults={"data" = ""})
  937.      */
  938.     public function esportaOfferteRighe(Request $request$data)
  939.     {
  940.         if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {
  941.             ini_set('max_execution_time'900);
  942.             ini_set('memory_limit', -1);
  943.             $start microtime(true);
  944.             $pathFileBase $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');
  945.             if (!$this->endsWith($pathFileBaseDIRECTORY_SEPARATOR))
  946.                 $pathFileBase .= DIRECTORY_SEPARATOR;
  947.             $pathFileBase .= ('OUT' DIRECTORY_SEPARATOR);
  948.             $this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);
  949.             $em $this->servizi->doctrine->getManager();
  950.             $separatore "|";
  951.             $this->ScriviRegistroAttivita($em$request->getClientIp(), ""true'Chiamata effettuata a /esportaOfferteRighe'$this->servizi->OttieniUtenteCorrente());
  952.             $esportazioneDiSistema $this->servizi->doctrine->getRepository(EsportazioniDiSistema::class)->findOneBy(array('tipo' => 'offerteRighe''attivo' => true));
  953.             if($esportazioneDiSistema){
  954.                 $this->ScriviRegistroAttivita($em$request->getClientIp(), ''true'Rilevata Esportazione di sistema: ' $esportazioneDiSistema->getId() . '-' $esportazioneDiSistema->getNome(), $this->servizi->OttieniUtenteCorrente());
  955.                 $eseguiEsportazioneDiSistema = new EseguiEsportazioneDiSistema($this->servizi$esportazioneDiSistema$request->getLocale(), $this->logger);
  956.                 $eseguiEsportazioneDiSistema->Avvia(true);
  957.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ""true'Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>'null);
  958.                 return new Response('Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>');
  959.             }
  960.             try {
  961.                 $root_path $pathFileBase "export" DIRECTORY_SEPARATOR;
  962.                 $dataIndicata null;
  963.                 if($data && $data != ''){
  964.                     $dataIndicata \DateTime::createFromFormat("Y-m-d H:i:s"$data);
  965.                 }
  966.                 $qb $this->servizi->doctrine->getRepository(OfferteRighe::class)->createQueryBuilder('offerte_righe');
  967.                 if($dataIndicata)
  968.                     $qb $qb->andWhere('offerte_righe.dataModifica > :dt')->setParameter('dt'$dataIndicata);
  969.                 $qb $qb->getQuery();
  970.                 /** @var  $elenco OfferteRighe[]*/
  971.                 $elenco $qb->getResult();
  972.                 $pathFile $root_path "offerte_righe.csv";
  973.                 /*
  974.                     0    documento
  975.                     1    numero
  976.                     2    anno
  977.                     3    macro_categoria
  978.                     4    codice_articolo
  979.                     5    descrizione_articolo
  980.                     6    descrizione_articolo_secondaria
  981.                     7    marca
  982.                     8    um
  983.                     9    stringa_sconti
  984.                     10    qta
  985.                     11    nota_riga
  986.                     12    netto_cad
  987.                     13    lordo_cad
  988.                     14    netto_totale
  989.                     15    lordo_totale
  990.                     16    imposta
  991.                     17    imponibile
  992.                     18    data_creazione
  993.                     19    data_modifica
  994.                     20    numero_riga
  995.                  */
  996.                 $index 0;
  997.                 $contenuto "documento|numero|anno|macro_categoria|codice_articolo|descrizione_articolo|descrizione_articolo_secondaria|marca|um|stringa_sconti|qta|nota_riga|netto_cad|lordo_cad|netto_totale|lordo_totale|imposta|imponibile|data_creazione|data_modifica|numero_riga\n";
  998.                 /** @var $item OfferteRighe */
  999.                 foreach ($elenco as $item) {
  1000.                     try{
  1001.                         $contenuto .=  "\"" . ($item->getOfferta() ? $item->getOfferta()->getDocumento() : '') . "\"" .
  1002.                             $separatore "\"" . ($item->getOfferta() ? $item->getOfferta()->getNumero() : '') . "\"" .
  1003.                             $separatore "\"" . ($item->getOfferta() ? $item->getOfferta()->getAnno() : '') . "\"" .
  1004.                             $separatore "\"" . ($item->getMacroCategoria() ? $item->getMacroCategoria() : '') . "\"" .
  1005.                             $separatore "\"" . ($item->getCodiceArticolo() ? $item->getCodiceArticolo() : '') . "\"" .
  1006.                             $separatore "\"" . ($item->getDescrizioneArticolo() ? $item->getDescrizioneArticolo() : '') . "\"" .
  1007.                             $separatore "\"" . ($item->getDescrizioneSecondariaArticolo() ? $item->getDescrizioneSecondariaArticolo() : '') . "\"" .
  1008.                             $separatore "\"" . ($item->getMarca() ? $item->getMarca() : '') . "\"" .
  1009.                             $separatore "\"" . ($item->getUm() ? $item->getUm() : '') . "\"" .
  1010.                             $separatore "\"" . ($item->getStringaSconti() ? $item->getStringaSconti() : '') . "\"" .
  1011.                             $separatore "\"" . ($item->getQta() ? $item->getQta() : '') . "\"" .
  1012.                             $separatore "\"" . ($item->getNotaRiga() ? $item->getNotaRiga() : '') . "\"" .
  1013.                             $separatore "\"" . ($item->getNettoCad() ? $item->getNettoCad() : '') . "\"" .
  1014.                             $separatore "\"" . ($item->getLordoCad() ? $item->getLordoCad() : '') . "\"" .
  1015.                             $separatore "\"" . ($item->getNettoTotale() ? $item->getNettoTotale() : '') . "\"" .
  1016.                             $separatore "\"" . ($item->getLordoTotale() ? $item->getLordoTotale() : '') . "\"" .
  1017.                             $separatore "\"" . ($item->getImposta() ? $item->getImposta() : '') . "\"" .
  1018.                             $separatore "\"" . ($item->getImponibile() ? $item->getImponibile() : '') . "\"" .
  1019.                             $separatore "\"" . ($item->getDataCreazione() ? $item->getDataCreazione()->format('Y-m-d H:i:s') : '')  . "\"" .
  1020.                             $separatore "\"" . ($item->getDataModifica() ? $item->getDataModifica()->format('Y-m-d H:i:s') : '')  . "\"" .
  1021.                             $separatore "\"" . ($item->getNumeroRiga() ? $item->getNumeroRiga() : '') . "\""
  1022.                             "\n";
  1023.                         $index++;
  1024.                     }catch (\Exception $e){
  1025.                         $this->servizi->DebuggaException($e"Errore esporta offerte righe -- Riga: " $index " - ID: " $item->getId());
  1026.                     }
  1027.                 }
  1028.                 $csv_handler fopen($pathFile"w");
  1029.                 fwrite($csv_handler$contenuto);
  1030.                 fclose($csv_handler);
  1031.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ""true'Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>'null);
  1032.                 return new Response('Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>');
  1033.             }catch (\Exception $ex)
  1034.             {
  1035.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ''true'Errore esportazione offerte righe: ' $ex->getMessage(), null);
  1036.                 return new Response('Errore esportazione offerte righe: ' $ex->getMessage());
  1037.             }
  1038.         }
  1039.         else {
  1040.             $this->ScriviRegistroAttivita(null$request->getClientIp(), ""false'Errore esportazione: ERRORE_PERMESSO'null);
  1041.             return new Response("ERRORE PERMESSO");
  1042.         }
  1043.     }
  1044.     /**
  1045.      * @Route("/esportaOfferteRegistroEventi/{data}", name="esporta_offerte_registro_eventi", defaults={"data" = ""})
  1046.      */
  1047.     public function esportaOfferteRegistroEventi(Request $request$data)
  1048.     {
  1049.         if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {
  1050.             ini_set('max_execution_time'900);
  1051.             ini_set('memory_limit', -1);
  1052.             $start microtime(true);
  1053.             $pathFileBase $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');
  1054.             if (!$this->endsWith($pathFileBaseDIRECTORY_SEPARATOR))
  1055.                 $pathFileBase .= DIRECTORY_SEPARATOR;
  1056.             $pathFileBase .= ('OUT' DIRECTORY_SEPARATOR);
  1057.             $this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);
  1058.             $em $this->servizi->doctrine->getManager();
  1059.             $separatore "|";
  1060.             $this->ScriviRegistroAttivita($em$request->getClientIp(), ""true'Chiamata effettuata a /esportaOfferteRegistroEventi'$this->servizi->OttieniUtenteCorrente());
  1061.             $esportazioneDiSistema $this->servizi->doctrine->getRepository(EsportazioniDiSistema::class)->findOneBy(array('tipo' => 'offerteRegistroEventi''attivo' => true));
  1062.             if($esportazioneDiSistema){
  1063.                 $this->ScriviRegistroAttivita($em$request->getClientIp(), ''true'Rilevata Esportazione di sistema: ' $esportazioneDiSistema->getId() . '-' $esportazioneDiSistema->getNome(), $this->servizi->OttieniUtenteCorrente());
  1064.                 $eseguiEsportazioneDiSistema = new EseguiEsportazioneDiSistema($this->servizi$esportazioneDiSistema$request->getLocale(), $this->logger);
  1065.                 $eseguiEsportazioneDiSistema->Avvia(true);
  1066.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ""true'Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>'null);
  1067.                 return new Response('Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>');
  1068.             }
  1069.             try {
  1070.                 $root_path $pathFileBase "export" DIRECTORY_SEPARATOR;
  1071.                 $dataIndicata null;
  1072.                 if($data && $data != ''){
  1073.                     $dataIndicata \DateTime::createFromFormat("Y-m-d H:i:s"$data);
  1074.                 }
  1075.                 $qb $this->servizi->doctrine->getRepository(OfferteRegistroEventi::class)->createQueryBuilder('offerte_registro_eventi');
  1076.                 if($dataIndicata)
  1077.                     $qb $qb->andWhere('offerte_registro_eventi.dataModifica > :dt')->setParameter('dt'$dataIndicata);
  1078.                 $qb $qb->getQuery();
  1079.                 /** @var  $elenco OfferteRegistroEventi[]*/
  1080.                 $elenco $qb->getResult();
  1081.                 $pathFile $root_path "offerte_registro_eventi.csv";
  1082.                 /*
  1083.                     0    documento
  1084.                     1    numero
  1085.                     2    anno
  1086.                     3    titolo
  1087.                     4    descrizione
  1088.                     5    data_creazione
  1089.                     6    data_modifica
  1090.                     7    identificativo
  1091.                  */
  1092.                 $index 0;
  1093.                 $contenuto "documento|numero|anno|titolo|descrizione|data_creazione|data_modifica|identificativo\n";
  1094.                 /** @var $item OfferteRegistroEventi */
  1095.                 foreach ($elenco as $item) {
  1096.                     try{
  1097.                         $contenuto .=  "\"" . ($item->getOfferta() ? $item->getOfferta()->getDocumento() : '') . "\"" .
  1098.                             $separatore "\"" . ($item->getOfferta() ? $item->getOfferta()->getNumero() : '') . "\"" .
  1099.                             $separatore "\"" . ($item->getOfferta() ? $item->getOfferta()->getAnno() : '') . "\"" .
  1100.                             $separatore "\"" . ($item->getTitolo() ? $item->getTitolo() : '') . "\"" .
  1101.                             $separatore "\"" . ($item->getDescrizione() ? $item->getDescrizione() : '') . "\"" .
  1102.                             $separatore "\"" . ($item->getDataCreazione() ? $item->getDataCreazione()->format('Y-m-d H:i:s') : '')  . "\"" .
  1103.                             $separatore "\"" . ($item->getDataModifica() ? $item->getDataModifica()->format('Y-m-d H:i:s') : '')  . "\"" .
  1104.                             $separatore "\"" . ($item->getIdentificativo() ? $item->getIdentificativo() : '') . "\""
  1105.                             "\n";
  1106.                         $index++;
  1107.                     }catch (\Exception $e){
  1108.                         $this->servizi->DebuggaException($e"Errore esporta offerte registro eventi -- Riga: " $index " - ID: " $item->getId());
  1109.                     }
  1110.                 }
  1111.                 $csv_handler fopen($pathFile"w");
  1112.                 fwrite($csv_handler$contenuto);
  1113.                 fclose($csv_handler);
  1114.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ""true'Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>'null);
  1115.                 return new Response('Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>');
  1116.             }catch (\Exception $ex)
  1117.             {
  1118.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ''true'Errore esportazione offerte registro eventi: ' $ex->getMessage(), null);
  1119.                 return new Response('Errore esportazione offerte registro eventi: ' $ex->getMessage());
  1120.             }
  1121.         }
  1122.         else {
  1123.             $this->ScriviRegistroAttivita(null$request->getClientIp(), ""false'Errore esportazione: ERRORE_PERMESSO'null);
  1124.             return new Response("ERRORE PERMESSO");
  1125.         }
  1126.     }
  1127.     /**
  1128.      * @Route("/esportaOfferteAllegati/{data}", name="esporta_offerte_allegati", defaults={"data" = ""})
  1129.      */
  1130.     public function esportaOfferteAllegati(Request $request$data)
  1131.     {
  1132.         if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {
  1133.             ini_set('max_execution_time'900);
  1134.             ini_set('memory_limit', -1);
  1135.             $start microtime(true);
  1136.             $pathFileBase $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');
  1137.             if (!$this->endsWith($pathFileBaseDIRECTORY_SEPARATOR))
  1138.                 $pathFileBase .= DIRECTORY_SEPARATOR;
  1139.             $pathFileBase .= ('OUT' DIRECTORY_SEPARATOR);
  1140.             $this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);
  1141.             $em $this->servizi->doctrine->getManager();
  1142.             $separatore "|";
  1143.             $this->ScriviRegistroAttivita($em$request->getClientIp(), ""true'Chiamata effettuata a /esportaOfferteAllegati'$this->servizi->OttieniUtenteCorrente());
  1144.             $esportazioneDiSistema $this->servizi->doctrine->getRepository(EsportazioniDiSistema::class)->findOneBy(array('tipo' => 'offerteAllegati''attivo' => true));
  1145.             if($esportazioneDiSistema){
  1146.                 $this->ScriviRegistroAttivita($em$request->getClientIp(), ''true'Rilevata Esportazione di sistema: ' $esportazioneDiSistema->getId() . '-' $esportazioneDiSistema->getNome(), $this->servizi->OttieniUtenteCorrente());
  1147.                 $eseguiEsportazioneDiSistema = new EseguiEsportazioneDiSistema($this->servizi$esportazioneDiSistema$request->getLocale(), $this->logger);
  1148.                 $eseguiEsportazioneDiSistema->Avvia(true);
  1149.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ""true'Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>'null);
  1150.                 return new Response('Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>');
  1151.             }
  1152.             try {
  1153.                 $root_path $pathFileBase "export" DIRECTORY_SEPARATOR;
  1154.                 $pathDepositoFile $pathFileBase 'offerte_allegati' DIRECTORY_SEPARATOR;
  1155.                 if(!file_exists($pathDepositoFile)){
  1156.                     mkdir($pathDepositoFile0777true);
  1157.                 }
  1158.                 $dataIndicata null;
  1159.                 if($data && $data != ''){
  1160.                     $dataIndicata \DateTime::createFromFormat("Y-m-d H:i:s"$data);
  1161.                 }
  1162.                 $qb $this->servizi->doctrine->getRepository(OfferteAllegati::class)->createQueryBuilder('offerte_allegati');
  1163.                 if($dataIndicata)
  1164.                     $qb $qb->andWhere('offerte_allegati.dataCaricamento > :dt')->setParameter('dt'$dataIndicata);
  1165.                 $qb $qb->getQuery();
  1166.                 /** @var  $elenco OfferteRegistroEventi[]*/
  1167.                 $elenco $qb->getResult();
  1168.                 $pathFile $root_path "offerte_registro_eventi.csv";
  1169.                 /*
  1170.                     0    documento
  1171.                     1    numero
  1172.                     2    anno
  1173.                     3    nome
  1174.                     4    tipo_file
  1175.                     5    data_caricamento
  1176.                     6    identificativo
  1177.                     7    path_file_esportato
  1178.                  */
  1179.                 $index 0;
  1180.                 $contenuto "documento|numero|anno|nome|tipo_file|data_caricamento|identificativo|path_file_esportato\n";
  1181.                 /** @var $item OfferteAllegati */
  1182.                 foreach ($elenco as $item) {
  1183.                     try{
  1184.                         $nomeFile $item->getId() . '___' $item->getNome();
  1185.                         $contenuto .=  "\"" . ($item->getOfferta() ? $item->getOfferta()->getDocumento() : '') . "\"" .
  1186.                             $separatore "\"" . ($item->getOfferta() ? $item->getOfferta()->getNumero() : '') . "\"" .
  1187.                             $separatore "\"" . ($item->getOfferta() ? $item->getOfferta()->getAnno() : '') . "\"" .
  1188.                             $separatore "\"" . ($item->getNome() ? $item->getNome() : '') . "\"" .
  1189.                             $separatore "\"" . ($item->getTipoFile() ? $item->getTipoFile() : '') . "\"" .
  1190.                             $separatore "\"" . ($item->getDataCaricamento() ? $item->getDataCaricamento()->format('Y-m-d H:i:s') : '')  . "\"" .
  1191.                             $separatore "\"" . ($item->getIdentificativo() ? $item->getIdentificativo() : '') . "\"" .
  1192.                             $separatore "\"" DIRECTORY_SEPARATOR 'OUT' DIRECTORY_SEPARATOR 'offerte_allegati' DIRECTORY_SEPARATOR $nomeFile "\""
  1193.                             "\n";
  1194.                         $index++;
  1195.                         //prendo il file e lo scrivo nella cartella di esportazione file
  1196.                         if(!file_put_contents($pathDepositoFile $nomeFile$item->getFile())){
  1197.                             $this->ScriviRegistroAttivita(null$request->getClientIp(), ""false'Errore salvataggio file su disco:\nContenuto: ' $contenuto '\nPath deposito file: ' $pathDepositoFile $nomeFilenull);
  1198.                         }
  1199.                     }catch (\Exception $e){
  1200.                         $this->servizi->DebuggaException($e"Errore esporta offerte allegati -- Riga: " $index " - ID: " $item->getId());
  1201.                     }
  1202.                 }
  1203.                 $csv_handler fopen($pathFile"w");
  1204.                 fwrite($csv_handler$contenuto);
  1205.                 fclose($csv_handler);
  1206.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ""true'Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>'null);
  1207.                 return new Response('Esportazione completata in ' $time_elapsed_secs microtime(true) - $start ' seconds</br>');
  1208.             }catch (\Exception $ex)
  1209.             {
  1210.                 $this->ScriviRegistroAttivita(null$request->getClientIp(), ''true'Errore esportazione offerte allegati: ' $ex->getMessage(), null);
  1211.                 return new Response('Errore esportazione offerte allegati: ' $ex->getMessage());
  1212.             }
  1213.         }
  1214.         else {
  1215.             $this->ScriviRegistroAttivita(null$request->getClientIp(), ""false'Errore esportazione: ERRORE_PERMESSO'null);
  1216.             return new Response("ERRORE PERMESSO");
  1217.         }
  1218.     }
  1219.     function endsWith($haystack$needle)
  1220.     {
  1221.         $length strlen($needle);
  1222.         if ($length == 0) {
  1223.             return true;
  1224.         }
  1225.         return (substr($haystack, -$length) === $needle);
  1226.     }
  1227. }