src/Controller/ImportazioneController.php line 6864
<?phpnamespace App\Controller;use App\Entity\AlberoMenuProdotti;use App\Entity\AnagraficaOpzioniAggiuntive;use App\Entity\Anagrafiche;use App\Entity\AnagraficheBlocchi;use App\Entity\AnagraficheIndirizzi;use App\Entity\Articoli;use App\Entity\AssociazioneArticoliCliente;use App\Entity\AssociazioneArticoliTipoOrdine;use App\Entity\AssociazioneAttributi;use App\Entity\AssociazioneCategorieAlberoMappaCategorieArticoli;use App\Entity\AssociazioneCodiciAgentiUtente;use App\Entity\AssociazioneSpedizioniClienti;use App\Entity\Attributi;use App\Entity\BarcodeArticoli;use App\Entity\Categorie;use App\Entity\CategorieAlbero;use App\Entity\Consegna;use App\Entity\Destinazioni;use App\Entity\DisponibilitaAFasce;use App\Entity\Documenti;use App\Entity\DocumentiRighe;use App\Entity\FiltroVisualizzazioneArticoliClienti;use App\Entity\LimitazioniOrdinazioniArticoli;use App\Entity\ListiniVendita;use App\Entity\MagazziniSecondari;use App\Entity\MagazzinoSecondarioDisponibilita;use App\Entity\MailSecondarieUtenti;use App\Entity\MappaCategorieArticoli;use App\Entity\Nazioni;use App\Entity\OfferteAllegati;use App\Entity\OfferteRegistroEventi;use App\Entity\OfferteRighe;use App\Entity\Ordini;use App\Entity\Pagamenti;use App\Entity\Report;use App\Entity\RisorseAnagrafiche;use App\Entity\RisorseAnagraficheColonne;use App\Entity\RisorseAnagraficheColonneValori;use App\Entity\ScontiAnagrafiche;use App\Entity\Spedizione;use App\Entity\TipoOrdine;use App\Entity\UnitaMisura;use App\Entity\User;use App\Entity\Varianti;use App\Entity\Offerte;use App\Model\Caching\Caching_Categorie;use App\Model\Caching\Caching_CategorieAlbero;use App\Model\Entita\OffertaRegistroEventi;use App\Model\Google\GoogleMapsAPI;use App\Model\Mailer;use App\Model\Translating\Translating;use Doctrine\DBAL\Exception;use Psr\Log\LoggerInterface;use Symfony\Component\Filesystem\Filesystem;use Symfony\Component\HttpFoundation\JsonResponse;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;use Symfony\Component\Routing\Annotation\Route;/****/class ImportazioneController extends AbstractController{/** @var ServiziController */private $servizi;/** @var ReturnImpostazioniServiceController */private $imp;/** @var Translating */private $translating;/** @var Mailer */private $mailer;/** @var LoggerInterface */private $logger;/** @var UserPasswordHasherInterface */private $passwordHasher;/*** ImportazioneController constructor.* @param ServiziController $servizi* @param ReturnImpostazioniServiceController $imp* @param Translating $translating* @param Mailer $mailer* @param LoggerInterface $logger* @param UserPasswordHasherInterface $passwordHasher*/public function __construct(ServiziController $servizi, ReturnImpostazioniServiceController $imp, Translating $translating, Mailer $mailer, LoggerInterface $logger, UserPasswordHasherInterface $passwordHasher){$this->servizi = $servizi;$this->imp = $imp;$this->translating = $translating;$this->mailer = $mailer;$this->logger = $logger;$this->passwordHasher = $passwordHasher;$this->imp->caricaCacheImpostazioniDaFamiglie(['Importazioni']);}/*** @param $ip string* @param $debug string* @param boolean $esito* @param $messaggio string* @param $utente User*/function ScriviRegistroAttivita($em, $ip, $debug, $esito, $messaggio, $utente, $collegamento='', $categoria1='', $categoria2=''){$this->servizi->ScriviRegistroAttivita($ip, $debug, $esito, $messaggio, $utente, $collegamento, $categoria1, $categoria2);}function endsWith($haystack, $needle){$length = strlen($needle);if ($length == 0) {return true;}return (substr($haystack, -$length) === $needle);}/*** @param $path* @return string*/function verificaPathImg($path){if($path == '')return '';if(strpos($path, "/uploads/") !== false){return $path;}else if (strpos($path, "/") !== false){return "/uploads" . $path;}else{return "/uploads/" . $path;}}/*** @param $valore* @param $seVuotoMetti0* @return int|mixed*/function verificaInt($valore, $seVuotoMetti0 = true){if($valore == '' and $seVuotoMetti0){$valore = 0;}return $valore;}/*** @param $valore* @param $seVuotoMettiFalse* @return false|mixed*/function verificaBool($valore, $seVuotoMettiFalse = true){if($valore == '' and $seVuotoMettiFalse){$valore = false;}return $valore;}/*** @param $stringa* @param false $ancheOra* @return \DateTime|null*/private static function OttieniDataDaStringa($stringa, $ancheOra = false){$ritorno = null;try {if ($stringa != '') {if ($ancheOra) {$ritorno = \DateTime::createFromFormat('Y-m-d H:i:s', $stringa);} else {$ritorno = \DateTime::createFromFormat('Y-m-d', $stringa);}}} catch (\Exception|\Throwable $ex){}if($ritorno === false)$ritorno = null;return $ritorno;}/*** @Route("/caricaArticoliDb/{svuota}/{dbg}/{batch}/{iterazione}", name="carica_articoli_db", defaults={"svuota"="0", "dbg"="0", "batch"="0", "iterazione"="0"})*/public function caricaArticoliDbAction(Request $request, $svuota, $dbg, $batch, $iterazione){//Batch è il numero di righe processate ad ogni iterazione//Iterazione è il numero dell'iterazione chiamata$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', -1);ini_set('memory_limit', '4G');if($dbg == '1'){ini_set('display_errors',1);error_reporting(E_ALL);}$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaArticoliDb/' . $svuota . ' --- Inizio il caricamento degli articoli', null, $collegamentoRnd, 'ImportazioneController', 'caricaArticoliDb');$connection = $this->servizi->doctrine->getConnection();if($svuota == "1"){$em = $this->servizi->doctrine->getManager();$connection->beginTransaction();try {$connection->query("SET FOREIGN_KEY_CHECKS=0;");$connection->executeUpdate("TRUNCATE `albero_menu_prodotti`;");$connection->executeUpdate("TRUNCATE `articoli`;");$connection->executeUpdate("TRUNCATE `articoli_in_lingua`;");$connection->executeUpdate("TRUNCATE `associazione_articoli_cliente`;");$connection->executeUpdate("TRUNCATE `associazione_attributi`;");$connection->executeUpdate("TRUNCATE `attributi`;");$connection->executeUpdate("TRUNCATE `attributi_in_lingua`;");$connection->executeUpdate("TRUNCATE `carrello`;");$connection->executeUpdate("TRUNCATE `categorie`;");$connection->executeUpdate("TRUNCATE `categorie_in_lingua`;");$connection->executeUpdate("TRUNCATE `combinazione_albero_mappa_categorie_articoli`;");$connection->executeUpdate("TRUNCATE `listini_vendita`;");$connection->executeUpdate("TRUNCATE `magazzino_secondario_disponibilita`;");$connection->executeUpdate("TRUNCATE `mappa_categorie_articoli`;");$connection->executeUpdate("TRUNCATE `ordini`;");$connection->executeUpdate("TRUNCATE `ordini_righe`;");$connection->executeUpdate("TRUNCATE `righe_carrello`;");$connection->executeUpdate("TRUNCATE `statistiche_categorie`;");$connection->executeUpdate("TRUNCATE `statistiche_click_articoli`;");$connection->executeUpdate("TRUNCATE `tipologie_preimpostate`;");$connection->executeUpdate("TRUNCATE `tipologie_preimpostate_lista`;");$connection->executeUpdate("TRUNCATE `unita_misura`;");$connection->executeUpdate("TRUNCATE `varianti`;");$connection->executeUpdate("TRUNCATE `varianti_in_lingua`;");$connection->query("SET FOREIGN_KEY_CHECKS=1;");$connection->commit();}catch (\Exception|\Throwable $ex){$this->servizi->DebuggaException($ex, "Errore pulizia articoli DB", false, null, $collegamentoRnd, 'ImportazioneController', 'caricaArticoliDb');}}$bool_rigeneraAlbero = false;$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$root_path = $pathFileBase . "articoli.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$queryEseguite = 0;$batch_size = 100;$errori = "";/** TRACCIATO FILE IMPORTAZIONE articoli.csv*0 codice articolo1 nome articolo2 descrizione breve3 descrizione estesa articolo4 immagine minuatura5 immagine6 codice aliquota7 valore aliquota8 unita di misura9 codice categoria10 descrizione categoria11 codice sub-categoria 112 descrizione sub-categoria 113 codice sub-categoria 214 descrizione sub-categoria 215 codice sub-categoria 316 descrizione sub-categoria 317 marca18 operazione19 disponibilita20 um_peso21 peso netto22 peso lordo23 codice originale importazione24 prezzo a richiesta25 codice sub-categoria 426 descrizione sub-categoria 427 immagine cat128 immagine cat229 immagine cat330 immagine cat431 immagine cat532 ordine_categoria133 ordine_categoria234 ordine_categoria335 ordine_categoria436 ordine_categoria537 ordine_articolo38 ordine_mappa39 barcode40 ordini_fornitori41 codice_gruppo_articoli42 codice_gruppo_categorie*/$righeDaSaltareSeBatch = 0;if($batch != 0 && $iterazione != 0){$rrr = $batch * $iterazione; //Esempio iterazione = 1 batch = 5000 = 5000$righeDaSaltareSeBatch = $rrr - $batch;}try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {/*if(!$em->isOpen()){$em = $em->create($em->getConnection(),$em->getConfiguration());}*///Se attivata la funzionalità batch salto le righe che non devo importareif($righeDaSaltareSeBatch > 0){if (($contatore + $row) < $righeDaSaltareSeBatch){$contatore++;continue;}}if($righeDaSaltareSeBatch > 0 && ($contatore + $row - $righeDaSaltareSeBatch) > $batch ){$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, "Batch completato: Iterazione: " . strval($iterazione) . " --- Batch: " . strval(($batch)) . " ( Da riga:" . strval($righeDaSaltareSeBatch + 1) . " a riga: " . strval(($contatore + $row)) . " )", null, $collegamentoRnd, 'ImportazioneController', 'caricaArticoliDb');break;}if ($row == 0) {$row = 1;continue;}//if ($queryEseguite >= $batch_size) {$contatore = $contatore + $row;$row = 1;$queryEseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');/*** @var $cat1 Categorie* @var $cat2 Categorie* @var $cat3 Categorie* @var $cat4 Categorie* @var $cat5 Categorie* @var $articolo Articoli*/$cat1 = null;$cat2 = null;$cat3 = null;$cat4 = null;$cat5 = null;$articolo = null;try {//categoriaif ($data[9] != "") {$categoriaPresente = $this->servizi->ritornaCategoriaSeInserita(substr($data[9], 0, 255), '1');if ($categoriaPresente != null) {$categoriaPresente->setNome(substr($data[10], 0, 255));$categoriaPresente->setOrdinamento(count($data) >= 33 ? ($data[32] != '' ? (int)$data[32] : 0) : 0);if(count($data) >= 28 && $data[27] != '')$categoriaPresente->setImmagine(count($data) >= 28 ? self::verificaPathImg($data[27]) : '');$categoriaPresente->setDataModifica($now);$categoriaPresente->setUtente(null);$em->persist($categoriaPresente);$cat1 = $categoriaPresente;} else {$cat = new Categorie();$cat->setNome(substr($data[10], 0, 255));$cat->setCodice(substr($data[9], 0, 255));$cat->setColonnaProvenienza("1");$cat->setOrdinamento(count($data) >= 33 ? ($data[32] != '' ? (int)$data[32] : 0) : 0);$cat->setDescrizione('');if(count($data) >= 28 && $data[27] != '')$cat->setImmagine(count($data) >= 28 ? self::verificaPathImg($data[27]) : '');$cat->setDataCreazione($now);$cat->setDataModifica($now);$cat->setNomeUnivoco(substr($cat->getNome() . '-' . $cat->getCodice(), 0, 255));$cat->setUtente(null);$cat->setAttivo(true);$em->persist($cat);if (!$bool_rigeneraAlbero)$bool_rigeneraAlbero = true;$cat1 = $cat;}$em->flush();$queryEseguite++;}//riclassifica lib 1if ($data[11] != "") {$categoriaPresente = $this->servizi->ritornaCategoriaSeInserita(substr($data[11], 0, 255), '2');if ($categoriaPresente != null) {$categoriaPresente->setNome(substr($data[12], 0, 255));if(count($data) >= 28 && $data[27] != '')$categoriaPresente->setImmagine(count($data) >= 29 ? self::verificaPathImg($data[28]) : '');$categoriaPresente->setDataModifica($now);$categoriaPresente->setOrdinamento(count($data) >= 34 ? ($data[33] != '' ? (int)$data[33] : 0) : 0);$categoriaPresente->setUtente(null);$em->persist($categoriaPresente);$cat2 = $categoriaPresente;} else {$cat = new Categorie();$cat->setNome(substr($data[12], 0, 255));$cat->setCodice(substr($data[11], 0, 255));$cat->setColonnaProvenienza("2");$cat->setOrdinamento(count($data) >= 34 ? ($data[33] != '' ? (int)$data[33] : 0) : 0);$cat->setDescrizione('');if(count($data) >= 28 && $data[27] != '')$cat->setImmagine(count($data) >= 29 ? self::verificaPathImg($data[28]) : '');$cat->setDataCreazione($now);$cat->setDataModifica($now);$cat->setNomeUnivoco(substr($cat->getNome() . '-' . $cat->getCodice(), 0, 255));$cat->setUtente(null);$cat->setAttivo(true);$em->persist($cat);if (!$bool_rigeneraAlbero)$bool_rigeneraAlbero = true;$cat2 = $cat;}$em->flush();$queryEseguite++;}//riclassifica lib 2if ($data[13] != "") {$categoriaPresente = $this->servizi->ritornaCategoriaSeInserita(substr($data[13], 0, 255), '3');if ($categoriaPresente != null) {$categoriaPresente->setNome(substr($data[14], 0, 255));$categoriaPresente->setDataModifica($now);$categoriaPresente->setOrdinamento(count($data) >= 35 ? ($data[34] != '' ? (int)$data[34] : 0) : 0);if(count($data) >= 28 && $data[27] != '')$categoriaPresente->setImmagine(count($data) >= 30 ? self::verificaPathImg($data[29]) : '');$categoriaPresente->setUtente(null);$em->persist($categoriaPresente);$cat3 = $categoriaPresente;} else {$cat = new Categorie();$cat->setNome(substr($data[14], 0, 255));$cat->setCodice(substr($data[13], 0, 255));$cat->setColonnaProvenienza("3");$cat->setOrdinamento(count($data) >= 35 ? ($data[34] != '' ? (int)$data[34] : 0) : 0);$cat->setDescrizione('');if(count($data) >= 28 && $data[27] != '')$cat->setImmagine(count($data) >= 30 ? self::verificaPathImg($data[29]) : '');$cat->setDataCreazione($now);$cat->setDataModifica($now);$cat->setNomeUnivoco(substr($cat->getNome() . '-' . $cat->getCodice(), 0, 255));$cat->setUtente(null);$cat->setAttivo(true);$em->persist($cat);if (!$bool_rigeneraAlbero)$bool_rigeneraAlbero = true;$cat3 = $cat;}$em->flush();$queryEseguite++;}//riclassifica lib 3if ($data[15] != "") {$categoriaPresente = $this->servizi->ritornaCategoriaSeInserita(substr($data[15], 0, 255), '4');if ($categoriaPresente != null) {$categoriaPresente->setNome(substr($data[16], 0, 255));$categoriaPresente->setDataModifica($now);$categoriaPresente->setOrdinamento(count($data) >= 36 ? ($data[35] != '' ? (int)$data[35] : 0) : 0);if(count($data) >= 28 && $data[27] != '')$categoriaPresente->setImmagine(count($data) >= 31 ? self::verificaPathImg($data[30]) : '');$categoriaPresente->setUtente(null);$em->persist($categoriaPresente);$cat4 = $categoriaPresente;} else {$cat = new Categorie();$cat->setNome(substr($data[16], 0, 255));$cat->setCodice(substr($data[15], 0, 255));$cat->setOrdinamento(count($data) >= 36 ? ($data[35] != '' ? (int)$data[35] : 0) : 0);$cat->setColonnaProvenienza("4");$cat->setDescrizione('');if(count($data) >= 28 && $data[27] != '')$cat->setImmagine(count($data) >= 31 ? self::verificaPathImg($data[30]) : '');$cat->setDataCreazione($now);$cat->setDataModifica($now);$cat->setNomeUnivoco(substr($cat->getNome() . '-' . $cat->getCodice(), 0, 255));$cat->setUtente(null);$cat->setAttivo(true);$em->persist($cat);if (!$bool_rigeneraAlbero)$bool_rigeneraAlbero = true;$cat4 = $cat;}$em->flush();$queryEseguite++;}//riclassifica lib 4if (count($data) >= 26 && $data[25] != "") {$categoriaPresente = $this->servizi->ritornaCategoriaSeInserita(substr($data[25], 0, 255), '5');if ($categoriaPresente != null) {$categoriaPresente->setNome(substr($data[26], 0, 255));$categoriaPresente->setDataModifica($now);$categoriaPresente->setOrdinamento(count($data) >= 37 ? ($data[36] != '' ? (int)$data[36] : 0) : 0);if(count($data) >= 28 && $data[27] != '')$categoriaPresente->setImmagine(count($data) >= 32 ? self::verificaPathImg($data[31]) : '');$categoriaPresente->setUtente(null);$em->persist($categoriaPresente);$cat4 = $categoriaPresente;} else {$cat = new Categorie();$cat->setNome(substr($data[26], 0, 255));$cat->setCodice(substr($data[25], 0, 255));$cat->setColonnaProvenienza("5");$cat->setOrdinamento(count($data) >= 37 ? ($data[36] != '' ? (int)$data[36] : 0) : 0);$cat->setDescrizione('');if(count($data) >= 28 && $data[27] != '')$cat->setImmagine(count($data) >= 32 ? self::verificaPathImg($data[31]) : '');$cat->setDataCreazione($now);$cat->setDataModifica($now);$cat->setNomeUnivoco(substr($cat->getNome() . '-' . $cat->getCodice(), 0, 255));$cat->setUtente(null);$cat->setAttivo(true);$em->persist($cat);if (!$bool_rigeneraAlbero)$bool_rigeneraAlbero = true;$cat5 = $cat;}$em->flush();$queryEseguite++;}$unitaMisura = $em->find(UnitaMisura::class,$data[8]);if (!$unitaMisura) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, "Nuova unita di misura trovata: " . $data[8], null);$unitaMisura = new UnitaMisura();$unitaMisura->setDataCreazione(new \DateTime());$unitaMisura->setDataModifica(new \DateTime());$unitaMisura->setAttivo(true);$unitaMisura->setFattoreConversione(1);$unitaMisura->setCodice($data[8]);$unitaMisura->setNumeroDecimali(0);$em->persist($unitaMisura);$em->flush();$unitaMisura = $em->find(UnitaMisura::class,$data[8]);$queryEseguite++;}if ($data[8] != $data[20]) { //Verifico se UM peso e UM sono diverse$umPeso = $em->find(UnitaMisura::class,$data[20]);} else {$umPeso = $unitaMisura;}if (!$umPeso && $data[20] != '') {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, "Nuova unita di misura peso trovata: " . $data[20], null);$umPeso = new UnitaMisura();$umPeso->setDataCreazione(new \DateTime());$umPeso->setDataModifica(new \DateTime());$umPeso->setAttivo(true);$umPeso->setFattoreConversione(1);$umPeso->setCodice($data[20]);$umPeso->setNumeroDecimali(3);$em->persist($umPeso);$em->flush();$umPeso = $em->find(UnitaMisura::class,$data[20]);$queryEseguite++;}$articoloPresente = $this->servizi->ritornaArticoloSeInserito(substr($data[0], 0, 255), substr($data[9], 0, 255));//articoloif ($articoloPresente != null) {$articoloPresente->setNome(substr($data[1], 0, 255));$articoloPresente->setDescrizione($data[3]);$articoloPresente->setOrdinamento(count($data) >= 38 ? ($data[37] != '' ? (int)$data[37] : 0) : 0);$articoloPresente->setDescrizioneBreve(substr($data[2], 0, 255));$articoloPresente->setCodiceGruppoArticoli('');$articoloPresente->setCodiceAliquota($data[6]);$articoloPresente->setUmPeso($umPeso);if($data[5] != '')$articoloPresente->setImage(self::verificaPathImg($data[5]));$pesoNet = str_replace(",", ".", $data[21]);if (!is_numeric($pesoNet) || $pesoNet > 99999.9)$pesoNet = 0;$pesoLord = str_replace(",", ".", $data[22]);if (!is_numeric($pesoLord) || $pesoLord > 99999.9)$pesoLord = 0;$articoloPresente->setPesoNetto($pesoNet);$articoloPresente->setPesoLordo($pesoLord);$articoloPresente->setValoreAliquota($data[7] == '' ? 0 : str_replace(",", ".", $data[7]));$articoloPresente->setDataModifica($now);$articoloPresente->setCodiceImportazione(count($data) >= 24 ? substr($data[23], 0, 255) : '');$articoloPresente->setUtente(null);$articoloPresente->setPrezzoSuRichiesta(count($data) >= 25 ? ($data[24] == '1' ? true : false) : false);$articoloPresente->setUm($unitaMisura);$articoloPresente->setAttivo(true);if(count($data) > 41)$articoloPresente->setCodiceGruppoArticoli($data[41]);$em->persist($articoloPresente);$articolo = $articoloPresente;} else {$art = new Articoli();$art->setCodice(substr($data[0], 0, 255));$art->setMacroCategoria(substr($data[9], 0, 255));$art->setNome(substr($data[1], 0, 255));$art->setDescrizione($data[3]);$art->setOrdinamento(count($data) >= 38 ? ($data[37] != '' ? (int)$data[37] : 0) : 0);if($data[5] != '')$art->setImage(self::verificaPathImg($data[5]));$art->setDescrizioneBreve(substr($data[2], 0, 255));$art->setCodiceGruppoArticoli('');$art->setCodiceAliquota($data[6]);$art->setValoreAliquota($data[7] == '' ? 0 : str_replace(",", ".", $data[7]));$art->setUmPeso($umPeso);$pesoNet = str_replace(",", ".", $data[21]);if (!is_numeric($pesoNet))$pesoNet = 0;$pesoLord = str_replace(",", ".", $data[22]);if (!is_numeric($pesoLord))$pesoLord = 0;$art->setPesoNetto($pesoNet);$art->setPesoLordo($pesoLord);$art->setUm($unitaMisura);$art->setDataCreazione($now);$art->setDataModifica($now);$art->setCodiceImportazione(count($data) >= 24 ? $data[23] : '');$art->setUtente(null);$art->setTipologiePreimpostate(null);$art->setUsaTipologiePreimpostate(false);$art->setPrezzoSuRichiesta(count($data) >= 25 ? ($data[24] == '1' ? true : false) : false);$art->setAttivo(true);if(count($data) > 41)$art->setCodiceGruppoArticoli($data[41]);$em->persist($art);$articolo = $art;}$queryEseguite++;if (!$unitaMisura) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Unita di misura: ' . $data[8] . ' non trovata per l\' articolo: ' . $data[0] . '-' . $data[1], null, $collegamentoRnd, 'ImportazioneController', 'caricaArticoliDb');}//mappa_categorie_articoliif ($mappaCategoriaArticoliPresente = $this->servizi->ritornaMappaCategoriaArticoliSeInserita($articolo, $cat1, $cat2, $cat3, $cat4, $data[17])) {if($data[18] == 'E'){$mappaCategoriaArticoliPresente->setAttivo(false);}else{$mappaCategoriaArticoliPresente->setAttivo(true);}$mappaCategoriaArticoliPresente->setDataModifica($now);$mappaCategoriaArticoliPresente->setUtente(null);if(count($data) > 41){if($data[42] != ""){$mappaCategoriaArticoliPresente->setCodiceGruppoCategorie($data[42]);}else{$mappaCategoriaArticoliPresente->setCodiceGruppoCategorie(ServiziController::OttieniCodiceGruppoCategorieDaMappa($mappaCategoriaArticoliPresente));}}else$mappaCategoriaArticoliPresente->setCodiceGruppoCategorie(ServiziController::OttieniCodiceGruppoCategorieDaMappa($mappaCategoriaArticoliPresente));$mappaCategoriaArticoliPresente->setOrdinamento(count($data) >= 39 ? ($data[38] != '' ? (int)$data[38] : 0) : 0);$mappaCategoriaArticoliPresente->setDisponibile($data[19] == '' ? 0 : str_replace(",", ".", $data[19]));$mappaCategoriaArticoliPresente->setOrdiniFornitori(count($data) >= 41 ? ($data[40] != '' ? str_replace(",", ".", $data[40]) : 0) : 0);$em->persist($mappaCategoriaArticoliPresente);} else {$mp = new MappaCategorieArticoli();$mp->setCategoria1($cat1);$mp->setCategoria2($cat2);$mp->setCategoria3($cat3);$mp->setCategoria4($cat4);$mp->setCategoria5($cat5);$mp->setUtente(null);$mp->setMarca($data[17]);$mp->setDataModifica($now);$mp->setDataCreazione($now);if(count($data) > 41){if($data[42] != ""){$mp->setCodiceGruppoCategorie($data[42]);}else{$mp->setCodiceGruppoCategorie(ServiziController::OttieniCodiceGruppoCategorieDaMappa($mp));}}else$mp->setCodiceGruppoCategorie(ServiziController::OttieniCodiceGruppoCategorieDaMappa($mp));$mp->setOrdinamento(count($data) >= 39 ? ($data[38] != '' ? (int)$data[38] : 0) : 0);$mp->setArticolo($articolo);$mp->setVariantiPresenti(false);$mp->setDisponibile($data[19] == '' ? 0 : str_replace(",", ".", $data[19]));$mp->setAttivo(true);$mp->setOrdiniFornitori(count($data) >= 41 ? ($data[40] != '' ? str_replace(",", ".", $data[40]) : 0) : 0);$em->persist($mp);$mappaCategoriaArticoliPresente = $mp;if (!$bool_rigeneraAlbero)$bool_rigeneraAlbero = true;}$queryEseguite++;$em->flush();if (count($data) >= 40 && $data[39] != ''){$elenco = array();if (strpos($data[39], ',') !== false){$elenco = explode(',', $data[39]);}else{array_push($elenco, $data[39]);}foreach ($elenco as $brc){$barcode = new BarcodeArticoli();$barcode->setBarcode($brc);$barcode->setDataCreazione(new \DateTime());$barcode->setDataModifica(new \DateTime());$barcode->setMappaCategoriaArticoli($mappaCategoriaArticoliPresente);$em->persist($barcode);}$em->flush();}}catch (Exception $ex2){if($em->isOpen()){$em = $em->resetManager();}$this->ScriviRegistroAttivita($em, $request->getClientIp(), $ex2->getTraceAsString(), false, 'Errore importazione (RIGA: ' . ($contatore + $row) . ') : ' . $ex2->getMessage() . '</br>' . $ex2->getTraceAsString() . '</br>', null, $collegamentoRnd, 'ImportazioneController', 'caricaArticoliDb');$errori .= ('Errore importazione (RIGA: ' . ($contatore + $row) . ') : ' . $ex2->getMessage() . '</br>' . $ex2->getTraceAsString() . '</br>');}catch (\Exception|\Throwable $ex){if($em->isOpen()){$em = $em->resetManager();}$this->ScriviRegistroAttivita($em, $request->getClientIp(), $ex->getTraceAsString(), false, 'Errore importazione (RIGA: ' . ($contatore + $row) . ') : ' . $ex->getMessage() . '</br>' . $ex->getTraceAsString() . '</br>', null, $collegamentoRnd, 'ImportazioneController', 'caricaArticoliDb');$errori .= ('Errore importazione (RIGA: ' . ($contatore + $row) . ') : ' . $ex->getMessage() . '</br>' . $ex->getTraceAsString() . '</br>');}$row++;}}else{$errori .= "Impossibile aprire il file!";}//$row = $contatore + $row;$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . '</br>Errori:' . $errori, null, $collegamentoRnd, 'ImportazioneController', 'caricaArticoliDb');$messaggioSupporto = "";if ($bool_rigeneraAlbero)$this->generaAlberoAction($request, "1");return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds \n ' . $row . '\n' . $messaggioSupporto);} catch (Exception $ex2) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex2->getTraceAsString(), false, "Errore importazione articoli: " . $ex2->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaArticoliDb');return new Response('Errore importazione (RIGA: ' . ($contatore + $row) . ') : ' . $ex2->getMessage() . '/n' . $ex2->getTraceAsString());} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex->getTraceAsString(), false, "Errore importazione articoli: " . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaArticoliDb');return new Response('Errore importazione (RIGA: ' . ($contatore + $row) . ') : ' . $ex->getMessage() . '/n' . $ex->getTraceAsString());}//return new Response("Importazione completata || " . $time_elapsed_secs = microtime(true) - $start . " || secondi");} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, "Errore importazione articoli: ERRORE_PERMESSO", null, $collegamentoRnd, 'ImportazioneController', 'caricaArticoliDb');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaCategorieAlbero/{svuota}/{dbg}/{batch}/{iterazione}", name="carica_categorie_albero", defaults={"svuota"="0", "dbg"="0", "batch"="0", "iterazione"="0"})*/public function caricaCategorieAlbero(Request $request, $svuota, $dbg, $batch, $iterazione){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', -1);ini_set('memory_limit', '4G');if($dbg == '1'){ini_set('display_errors',1);error_reporting(E_ALL);}$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaCategorieAlbero/' . $svuota . ' --- Inizio il caricamento delle categorie albero', null, $collegamentoRnd, 'ImportazioneController', 'caricaCategorieAlbero');$connection = $this->servizi->doctrine->getConnection();if($svuota == "1"){$em = $this->servizi->doctrine->getManager();$connection->beginTransaction();try {$connection->query("SET FOREIGN_KEY_CHECKS=0;");$connection->executeUpdate("TRUNCATE `categorie_albero`;");$connection->executeUpdate("TRUNCATE `associazione_categorie_albero_mappa_categorie_articoli`;");$connection->query("SET FOREIGN_KEY_CHECKS=1;");$connection->commit();}catch (\Exception|\Throwable $ex){$this->servizi->DebuggaException($ex, "Errore pulizia categorie albero DB", false, null, $collegamentoRnd, 'ImportazioneController', 'caricaCategorieAlbero');}}$bool_rigeneraAlbero = false;$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$root_path = $pathFileBase . "categorie_albero.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$queryEseguite = 0;$batch_size = 100;$errori = "";$debugMessage = "";/** Index File finale0 codice articolo1 codice_cat12 codice_cat23 codice_cat34 codice_cat45 codice_cat56 marca7 codice_catAlbero18 descrizione_catAlbero19 immagine_catAlbero110 ordine_catAlbero111 prezzoARichiesta_catAlbero112 codice_catAlbero213 descrizione_catAlbero214 immagine_catAlbero215 ordine_catAlbero216 prezzoARichiesta_catAlbero217 codice_catAlbero318 descrizione_catAlbero319 immagine_catAlbero320 ordine_catAlbero321 prezzoARichiesta_catAlbero322 codice_catAlbero423 descrizione_catAlbero424 immagine_catAlbero425 ordine_catAlbero426 prezzoARichiesta_catAlbero427 codice_catAlbero528 descrizione_catAlbero529 immagine_catAlbero530 ordine_catAlbero531 prezzoARichiesta_catAlbero532 operazione33 codice_catAlbero634 descrizione_catAlbero635 immagine_catAlbero636 ordine_catAlbero637 prezzoARichiesta_catAlbero638 codice_catAlbero739 descrizione_catAlbero740 immagine_catAlbero741 ordine_catAlbero742 prezzoARichiesta_catAlbero743 codice_catAlbero844 descrizione_catAlbero845 immagine_catAlbero846 ordine_catAlbero847 prezzoARichiesta_catAlbero848 codice_catAlbero949 descrizione_catAlbero950 immagine_catAlbero951 ordine_catAlbero952 prezzoARichiesta_catAlbero953 codice_catAlbero1054 descrizione_catAlbero1055 immagine_catAlbero1056 ordine_catAlbero1057 prezzoARichiesta_catAlbero10*/$indici = array("codiceArticolo" => 0,"codiceCat1" => 1,"codiceCat2" => 2,"codiceCat3" => 3,"codiceCat4" => 4,"codiceCat5" => 5,"marca" => 6,"codice_catAlbero1" => 7,"descrizione_catAlbero1" => 8,"immagine_catAlbero1" => 9,"ordine_catAlbero1" => 10,"prezzoARichiesta_catAlbero1" => 11,"codice_catAlbero2" => 12,"descrizione_catAlbero2" => 13,"immagine_catAlbero2" => 14,"ordine_catAlbero2" => 15,"prezzoARichiesta_catAlbero2" => 16,"codice_catAlbero3" => 17,"descrizione_catAlbero3" => 18,"immagine_catAlbero3" => 19,"ordine_catAlbero3" => 20,"prezzoARichiesta_catAlbero3" => 21,"codice_catAlbero4" => 22,"descrizione_catAlbero4" => 23,"immagine_catAlbero4" => 24,"ordine_catAlbero4" => 25,"prezzoARichiesta_catAlbero4" => 26,"codice_catAlbero5" => 27,"descrizione_catAlbero5" => 28,"immagine_catAlbero5" => 29,"ordine_catAlbero5" => 30,"prezzoARichiesta_catAlbero5" => 31,"operazione" => 32,"codice_catAlbero6" => 33,"descrizione_catAlbero6" => 34,"immagine_catAlbero6" => 35,"ordine_catAlbero6" => 36,"prezzoARichiesta_catAlbero6" => 37,"codice_catAlbero7" => 38,"descrizione_catAlbero7" => 39,"immagine_catAlbero7" => 40,"ordine_catAlbero7" => 41,"prezzoARichiesta_catAlbero7" => 42,"codice_catAlbero8" => 43,"descrizione_catAlbero8" => 44,"immagine_catAlbero8" => 45,"ordine_catAlbero8" => 46,"prezzoARichiesta_catAlbero8" => 47,"codice_catAlbero9" => 48,"descrizione_catAlbero9" => 49,"immagine_catAlbero9" => 50,"ordine_catAlbero9" => 51,"prezzoARichiesta_catAlbero9" => 52,"codice_catAlbero10" => 53,"descrizione_catAlbero10" => 54,"immagine_catAlbero10" => 55,"ordine_catAlbero10" => 56,"prezzoARichiesta_catAlbero10" => 57);$righeDaSaltareSeBatch = 0;if($batch != 0 && $iterazione != 0){$rrr = $batch * $iterazione; //Esempio iterazione = 1 batch = 5000 = 5000$righeDaSaltareSeBatch = $rrr - $batch;}try {$bool_rigeneraAlbero = false;if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {/*if(!$em->isOpen()){$em = $em->create($em->getConnection(),$em->getConfiguration());}*///Se attivata la funzionalità batch salto le righe che non devo importareif($righeDaSaltareSeBatch > 0){if (($contatore + $row) < $righeDaSaltareSeBatch){$contatore++;continue;}}if($righeDaSaltareSeBatch > 0 && ($contatore + $row - $righeDaSaltareSeBatch) > $batch ){$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, "Batch completato: Iterazione: " . strval($iterazione) . " --- Batch: " . strval(($batch)) . " ( Da riga:" . strval($righeDaSaltareSeBatch + 1) . " a riga: " . strval(($contatore + $row)) . " )", null, $collegamentoRnd, "ImportazioneController", "caricaCategorieAlbero");break;}if ($row == 0) {$row = 1;continue;}//if ($queryEseguite >= $batch_size) {$contatore = $contatore + $row;$row = 1;$queryEseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');/*** @var $cat1 Categorie* @var $cat2 Categorie* @var $cat3 Categorie* @var $cat4 Categorie* @var $cat5 Categorie* @var $articolo Articoli*/$cat1 = null;$cat2 = null;$cat3 = null;$cat4 = null;$cat5 = null;$articolo = null;try {$cat1 = $this->servizi->ritornaCategoriaSeInserita($data[$indici['codiceCat1']], '1');$cat2 = $this->servizi->ritornaCategoriaSeInserita($data[$indici['codiceCat2']], '2');$cat3 = $this->servizi->ritornaCategoriaSeInserita($data[$indici['codiceCat3']], '3');$cat4 = $this->servizi->ritornaCategoriaSeInserita($data[$indici['codiceCat4']], '4');$cat5 = $this->servizi->ritornaCategoriaSeInserita($data[$indici['codiceCat5']], '5');$articolo = $this->servizi->ritornaArticoloSeInserito($data[$indici['codiceArticolo']]);if($dbg){$debugMessage .= ('RIGA: ' . ($contatore + $row) . ' - Articolo: ' . ($articolo ? $articolo->getId() : 'null') . ' - Cat1: ' . ($cat1 ? $cat1->getId() : 'null') . ' - Cat2: ' . ($cat2 ? $cat2->getId() : 'null') . ' - Cat3: ' . ($cat3 ? $cat3->getId() : 'null') . ' - Cat4: ' . ($cat4 ? $cat4->getId() : 'null') . ' - Cat5: ' . ($cat5 ? $cat5->getId() : 'null') . '</br>');}//mappa_categorie_articoliif ($mappaCategoriaArticoliPresente = $this->servizi->ritornaMappaCategoriaArticoliSeInserita($articolo, $cat1, $cat2, $cat3, $cat4, $data[$indici['marca']], $cat5)) {$categoriaAlbero1 = null;$categoriaAlbero2 = null;$categoriaAlbero3 = null;$categoriaAlbero4 = null;$categoriaAlbero5 = null;$categoriaAlbero6 = null;$categoriaAlbero7 = null;$categoriaAlbero8 = null;$categoriaAlbero9 = null;$categoriaAlbero10 = null;$associazioneCatAlberoMappaCatArt = null;if ($data[$indici["codice_catAlbero1"]] != ''){$categoriaAlbero1 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero1"]], '1');if(!$categoriaAlbero1){$categoriaAlbero1 = new CategorieAlbero();$categoriaAlbero1->setCodice($data[$indici['codice_catAlbero1']]);$categoriaAlbero1->setCodiceOriginale($data[$indici['codice_catAlbero1']]);$categoriaAlbero1->setColonnaProvenienza("1");$categoriaAlbero1->setAttivo(true);$categoriaAlbero1->setDataCreazione(new \DateTime());}$categoriaAlbero1->setNome($data[$indici['descrizione_catAlbero1']]);$categoriaAlbero1->setNomeUnivoco(substr($categoriaAlbero1->getNome() . '-' . $categoriaAlbero1->getCodice(), 0, 255));$categoriaAlbero1->setDescrizione($data[$indici['descrizione_catAlbero1']]);$categoriaAlbero1->setOrdinamento(self::verificaInt($data[$indici['ordine_catAlbero1']]));if($data[$indici['immagine_catAlbero1']] != '')$categoriaAlbero1->setImmagine($data[$indici['immagine_catAlbero1']]);$categoriaAlbero1->setPrezzoSuRichiesta(self::verificaBool($data[$indici['prezzoARichiesta_catAlbero1']]));$categoriaAlbero1->setDataModifica(new \DateTime());$em->persist($categoriaAlbero1);$em->flush();$categoriaAlbero1 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero1"]], '1');}if ($data[$indici["codice_catAlbero2"]] != ''){$categoriaAlbero2 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero2"]], '2');if(!$categoriaAlbero2){$categoriaAlbero2 = new CategorieAlbero();$categoriaAlbero2->setCodice($data[$indici['codice_catAlbero2']]);$categoriaAlbero2->setCodiceOriginale($data[$indici['codice_catAlbero2']]);$categoriaAlbero2->setColonnaProvenienza("2");$categoriaAlbero2->setAttivo(true);$categoriaAlbero2->setDataCreazione(new \DateTime());}$categoriaAlbero2->setNome($data[$indici['descrizione_catAlbero2']]);$categoriaAlbero2->setNomeUnivoco(substr($categoriaAlbero2->getNome() . '-' . $categoriaAlbero2->getCodice(), 0, 255));$categoriaAlbero2->setDescrizione($data[$indici['descrizione_catAlbero2']]);$categoriaAlbero2->setOrdinamento(self::verificaInt($data[$indici['ordine_catAlbero2']]));if($data[$indici['immagine_catAlbero2']] != '')$categoriaAlbero2->setImmagine($data[$indici['immagine_catAlbero2']]);$categoriaAlbero2->setPrezzoSuRichiesta(self::verificaBool($data[$indici['prezzoARichiesta_catAlbero2']]));$categoriaAlbero2->setDataModifica(new \DateTime());$em->persist($categoriaAlbero2);$em->flush();$categoriaAlbero2 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero2"]], '2');}if ($data[$indici["codice_catAlbero3"]] != ''){$categoriaAlbero3 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero3"]], '3');if(!$categoriaAlbero3){$categoriaAlbero3 = new CategorieAlbero();$categoriaAlbero3->setCodice($data[$indici['codice_catAlbero3']]);$categoriaAlbero3->setCodiceOriginale($data[$indici['codice_catAlbero3']]);$categoriaAlbero3->setColonnaProvenienza("3");$categoriaAlbero3->setAttivo(true);$categoriaAlbero3->setDataCreazione(new \DateTime());}$categoriaAlbero3->setNome($data[$indici['descrizione_catAlbero3']]);$categoriaAlbero3->setNomeUnivoco(substr($categoriaAlbero3->getNome() . '-' . $categoriaAlbero3->getCodice(), 0, 255));$categoriaAlbero3->setDescrizione($data[$indici['descrizione_catAlbero3']]);$categoriaAlbero3->setOrdinamento(self::verificaInt($data[$indici['ordine_catAlbero3']]));if($data[$indici['immagine_catAlbero3']] != '')$categoriaAlbero3->setImmagine($data[$indici['immagine_catAlbero3']]);$categoriaAlbero3->setPrezzoSuRichiesta(self::verificaBool($data[$indici['prezzoARichiesta_catAlbero3']]));$categoriaAlbero3->setDataModifica(new \DateTime());$em->persist($categoriaAlbero3);$em->flush();$categoriaAlbero3 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero3"]], '3');}if ($data[$indici["codice_catAlbero4"]] != ''){$categoriaAlbero4 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero4"]], '4');if(!$categoriaAlbero4){$categoriaAlbero4 = new CategorieAlbero();$categoriaAlbero4->setCodice($data[$indici['codice_catAlbero4']]);$categoriaAlbero4->setCodiceOriginale($data[$indici['codice_catAlbero4']]);$categoriaAlbero4->setColonnaProvenienza("4");$categoriaAlbero4->setAttivo(true);$categoriaAlbero4->setDataCreazione(new \DateTime());}$categoriaAlbero4->setNome($data[$indici['descrizione_catAlbero4']]);$categoriaAlbero4->setNomeUnivoco(substr($categoriaAlbero4->getNome() . '-' . $categoriaAlbero4->getCodice(), 0, 255));$categoriaAlbero4->setDescrizione($data[$indici['descrizione_catAlbero4']]);$categoriaAlbero4->setOrdinamento(self::verificaInt($data[$indici['ordine_catAlbero4']]));if($data[$indici['immagine_catAlbero4']] != '')$categoriaAlbero4->setImmagine($data[$indici['immagine_catAlbero4']]);$categoriaAlbero4->setPrezzoSuRichiesta(self::verificaBool($data[$indici['prezzoARichiesta_catAlbero4']]));$categoriaAlbero4->setDataModifica(new \DateTime());$em->persist($categoriaAlbero4);$em->flush();$categoriaAlbero4 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero4"]], '4');}if ($data[$indici["codice_catAlbero5"]] != ''){$categoriaAlbero5 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero5"]], '5');if(!$categoriaAlbero5){$categoriaAlbero5 = new CategorieAlbero();$categoriaAlbero5->setCodice($data[$indici['codice_catAlbero5']]);$categoriaAlbero5->setCodiceOriginale($data[$indici['codice_catAlbero5']]);$categoriaAlbero5->setColonnaProvenienza("5");$categoriaAlbero5->setAttivo(true);$categoriaAlbero5->setDataCreazione(new \DateTime());}$categoriaAlbero5->setNome($data[$indici['descrizione_catAlbero5']]);$categoriaAlbero5->setNomeUnivoco(substr($categoriaAlbero5->getNome() . '-' . $categoriaAlbero5->getCodice(), 0, 255));$categoriaAlbero5->setDescrizione($data[$indici['descrizione_catAlbero5']]);$categoriaAlbero5->setOrdinamento(self::verificaInt($data[$indici['ordine_catAlbero5']]));if($data[$indici['immagine_catAlbero5']] != '')$categoriaAlbero5->setImmagine($data[$indici['immagine_catAlbero5']]);$categoriaAlbero5->setPrezzoSuRichiesta(self::verificaBool($data[$indici['prezzoARichiesta_catAlbero5']]));$categoriaAlbero5->setDataModifica(new \DateTime());$em->persist($categoriaAlbero5);$em->flush();$categoriaAlbero5 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero5"]], '5');}if ($data[$indici["codice_catAlbero6"]] != ''){$categoriaAlbero6 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero6"]], '6');if(!$categoriaAlbero6){$categoriaAlbero6 = new CategorieAlbero();$categoriaAlbero6->setCodice($data[$indici['codice_catAlbero6']]);$categoriaAlbero6->setCodiceOriginale($data[$indici['codice_catAlbero6']]);$categoriaAlbero6->setColonnaProvenienza("6");$categoriaAlbero6->setAttivo(true);$categoriaAlbero6->setDataCreazione(new \DateTime());}$categoriaAlbero6->setNome($data[$indici['descrizione_catAlbero6']]);$categoriaAlbero6->setNomeUnivoco(substr($categoriaAlbero6->getNome() . '-' . $categoriaAlbero6->getCodice(), 0, 255));$categoriaAlbero6->setDescrizione($data[$indici['descrizione_catAlbero6']]);$categoriaAlbero6->setOrdinamento(self::verificaInt($data[$indici['ordine_catAlbero6']]));if($data[$indici['immagine_catAlbero6']] != '')$categoriaAlbero6->setImmagine($data[$indici['immagine_catAlbero6']]);$categoriaAlbero6->setPrezzoSuRichiesta(self::verificaBool($data[$indici['prezzoARichiesta_catAlbero6']]));$categoriaAlbero6->setDataModifica(new \DateTime());$em->persist($categoriaAlbero6);$em->flush();$categoriaAlbero6 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero6"]], '6');}if ($data[$indici["codice_catAlbero7"]] != ''){$categoriaAlbero7 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero7"]], '7');if(!$categoriaAlbero7){$categoriaAlbero7 = new CategorieAlbero();$categoriaAlbero7->setCodice($data[$indici['codice_catAlbero7']]);$categoriaAlbero7->setCodiceOriginale($data[$indici['codice_catAlbero7']]);$categoriaAlbero7->setColonnaProvenienza("7");$categoriaAlbero7->setAttivo(true);$categoriaAlbero7->setDataCreazione(new \DateTime());}$categoriaAlbero7->setNome($data[$indici['descrizione_catAlbero7']]);$categoriaAlbero7->setNomeUnivoco(substr($categoriaAlbero7->getNome() . '-' . $categoriaAlbero7->getCodice(), 0, 255));$categoriaAlbero7->setDescrizione($data[$indici['descrizione_catAlbero7']]);$categoriaAlbero7->setOrdinamento(self::verificaInt($data[$indici['ordine_catAlbero7']]));if($data[$indici['immagine_catAlbero7']] != '')$categoriaAlbero7->setImmagine($data[$indici['immagine_catAlbero7']]);$categoriaAlbero7->setPrezzoSuRichiesta(self::verificaBool($data[$indici['prezzoARichiesta_catAlbero7']]));$categoriaAlbero7->setDataModifica(new \DateTime());$em->persist($categoriaAlbero7);$em->flush();$categoriaAlbero7 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero7"]], '7');}if ($data[$indici["codice_catAlbero8"]] != ''){$categoriaAlbero8 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero8"]], '8');if(!$categoriaAlbero8){$categoriaAlbero8 = new CategorieAlbero();$categoriaAlbero8->setCodice($data[$indici['codice_catAlbero8']]);$categoriaAlbero8->setCodiceOriginale($data[$indici['codice_catAlbero8']]);$categoriaAlbero8->setColonnaProvenienza("8");$categoriaAlbero8->setAttivo(true);$categoriaAlbero8->setDataCreazione(new \DateTime());}$categoriaAlbero8->setNome($data[$indici['descrizione_catAlbero8']]);$categoriaAlbero8->setNomeUnivoco(substr($categoriaAlbero8->getNome() . '-' . $categoriaAlbero8->getCodice(), 0, 255));$categoriaAlbero8->setDescrizione($data[$indici['descrizione_catAlbero8']]);$categoriaAlbero8->setOrdinamento(self::verificaInt($data[$indici['ordine_catAlbero8']]));if($data[$indici['immagine_catAlbero8']] != '')$categoriaAlbero8->setImmagine($data[$indici['immagine_catAlbero8']]);$categoriaAlbero8->setPrezzoSuRichiesta(self::verificaBool($data[$indici['prezzoARichiesta_catAlbero8']]));$categoriaAlbero8->setDataModifica(new \DateTime());$em->persist($categoriaAlbero8);$em->flush();$categoriaAlbero8 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero8"]], '8');}if ($data[$indici["codice_catAlbero9"]] != ''){$categoriaAlbero9 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero9"]], '9');if(!$categoriaAlbero9){$categoriaAlbero9 = new CategorieAlbero();$categoriaAlbero9->setCodice($data[$indici['codice_catAlbero9']]);$categoriaAlbero9->setCodiceOriginale($data[$indici['codice_catAlbero9']]);$categoriaAlbero9->setColonnaProvenienza("9");$categoriaAlbero9->setAttivo(true);$categoriaAlbero9->setDataCreazione(new \DateTime());}$categoriaAlbero9->setNome($data[$indici['descrizione_catAlbero9']]);$categoriaAlbero9->setNomeUnivoco(substr($categoriaAlbero9->getNome() . '-' . $categoriaAlbero9->getCodice(), 0, 255));$categoriaAlbero9->setDescrizione($data[$indici['descrizione_catAlbero9']]);$categoriaAlbero9->setOrdinamento(self::verificaInt($data[$indici['ordine_catAlbero9']]));if($data[$indici['immagine_catAlbero9']] != '')$categoriaAlbero9->setImmagine($data[$indici['immagine_catAlbero9']]);$categoriaAlbero9->setPrezzoSuRichiesta(self::verificaBool($data[$indici['prezzoARichiesta_catAlbero9']]));$categoriaAlbero9->setDataModifica(new \DateTime());$em->persist($categoriaAlbero9);$em->flush();$categoriaAlbero9 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero9"]], '9');}if ($data[$indici["codice_catAlbero10"]] != ''){$categoriaAlbero10 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero10"]], '10');if(!$categoriaAlbero10){$categoriaAlbero10 = new CategorieAlbero();$categoriaAlbero10->setCodice($data[$indici['codice_catAlbero10']]);$categoriaAlbero10->setCodiceOriginale($data[$indici['codice_catAlbero10']]);$categoriaAlbero10->setColonnaProvenienza("10");$categoriaAlbero10->setAttivo(true);$categoriaAlbero10->setDataCreazione(new \DateTime());}$categoriaAlbero10->setNome($data[$indici['descrizione_catAlbero10']]);$categoriaAlbero10->setNomeUnivoco(substr($categoriaAlbero10->getNome() . '-' . $categoriaAlbero10->getCodice(), 0, 255));$categoriaAlbero10->setDescrizione($data[$indici['descrizione_catAlbero10']]);$categoriaAlbero10->setOrdinamento(self::verificaInt($data[$indici['ordine_catAlbero10']]));if($data[$indici['immagine_catAlbero10']] != '')$categoriaAlbero10->setImmagine($data[$indici['immagine_catAlbero10']]);$categoriaAlbero10->setPrezzoSuRichiesta(self::verificaBool($data[$indici['prezzoARichiesta_catAlbero10']]));$categoriaAlbero10->setDataModifica(new \DateTime());$em->persist($categoriaAlbero10);$em->flush();$categoriaAlbero10 = $this->servizi->ritornaCategoriaAlberoSeInserita($data[$indici["codice_catAlbero10"]], '10');}$associazioneCatAlberoMappaCatArt = $this->servizi->ritornaAssociazioneCategorieAlberoMappaCategoriaArticoliSeInserita($mappaCategoriaArticoliPresente, $categoriaAlbero1, $categoriaAlbero2, $categoriaAlbero3, $categoriaAlbero4, $categoriaAlbero5, $categoriaAlbero6, $categoriaAlbero7, $categoriaAlbero8, $categoriaAlbero9, $categoriaAlbero10);if($data[$indici["operazione"]] == 'E'){$em->remove($associazioneCatAlberoMappaCatArt);}else{if (!$associazioneCatAlberoMappaCatArt){$associazioneCatAlberoMappaCatArt = new AssociazioneCategorieAlberoMappaCategorieArticoli();$associazioneCatAlberoMappaCatArt->setMappaCategoriaArticolo($mappaCategoriaArticoliPresente);$associazioneCatAlberoMappaCatArt->setCategoriaAlbero1($categoriaAlbero1);$associazioneCatAlberoMappaCatArt->setCategoriaAlbero2($categoriaAlbero2);$associazioneCatAlberoMappaCatArt->setCategoriaAlbero3($categoriaAlbero3);$associazioneCatAlberoMappaCatArt->setCategoriaAlbero4($categoriaAlbero4);$associazioneCatAlberoMappaCatArt->setCategoriaAlbero5($categoriaAlbero5);$associazioneCatAlberoMappaCatArt->setCategoriaAlbero6($categoriaAlbero6);$associazioneCatAlberoMappaCatArt->setCategoriaAlbero7($categoriaAlbero7);$associazioneCatAlberoMappaCatArt->setCategoriaAlbero8($categoriaAlbero8);$associazioneCatAlberoMappaCatArt->setCategoriaAlbero9($categoriaAlbero9);$associazioneCatAlberoMappaCatArt->setCategoriaAlbero10($categoriaAlbero10);$associazioneCatAlberoMappaCatArt->setArticolo($mappaCategoriaArticoliPresente ? $mappaCategoriaArticoliPresente->getArticolo() : null);$associazioneCatAlberoMappaCatArt->setDataModifica(new \DateTime());$associazioneCatAlberoMappaCatArt->setDataCreazione(new \DateTime());$em->persist($associazioneCatAlberoMappaCatArt);$bool_rigeneraAlbero = true;}$em->persist($mappaCategoriaArticoliPresente);}} else {$this->ScriviRegistroAttivita($em, $request->getClientIp(), '', false, 'Errore importazione categorie albero (RIGA: ' . ($contatore + $row) . ') : Mappa categoria articoli non trovata </br>', null, $collegamentoRnd, 'ImportazioneController', 'caricaCategorieAlbero');$errori .= ('Errore importazione categorie albero (RIGA: ' . ($contatore + $row) . ') : Mappa categoria articoli non trovata </br>');}$queryEseguite++;$em->flush();}catch (Exception $ex2){$this->ScriviRegistroAttivita($em, $request->getClientIp(), $ex2->getTraceAsString(), false, 'Errore importazione categorie albero (RIGA: ' . ($contatore + $row) . ') : ' . $ex2->getMessage() . '</br>' . $ex2->getTraceAsString() . '</br>', null, $collegamentoRnd, 'ImportazioneController', 'caricaCategorieAlbero');$errori .= ('Errore importazione categorie albero (RIGA: ' . ($contatore + $row) . ') : ' . $ex2->getMessage() . '</br>' . $ex2->getTraceAsString() . '</br>');}catch (\Exception|\Throwable $ex){$this->ScriviRegistroAttivita($em, $request->getClientIp(), $ex->getTraceAsString(), false, 'Errore importazione categorie albero (RIGA: ' . ($contatore + $row) . ') : ' . $ex->getMessage() . '</br>' . $ex->getTraceAsString() . '</br>', null, $collegamentoRnd, 'ImportazioneController', 'caricaCategorieAlbero');$errori .= ('Errore importazione categorie albero (RIGA: ' . ($contatore + $row) . ') : ' . $ex->getMessage() . '</br>' . $ex->getTraceAsString() . '</br>');}$row++;}}else{$errori .= "Impossibile aprire il file!";}//$row = $contatore + $row;$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . '</br>Errori:' . $errori, null, $collegamentoRnd, 'ImportazioneController', 'caricaCategorieAlbero');$messaggioSupporto = "";if ($bool_rigeneraAlbero)$this->generaAlberoAction($request, "1");return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds </br> ' . $row . '</br>' . $messaggioSupporto . '</br>Errori:' . $errori . ($dbg ? '</br>Debug: ' . $debugMessage : ''));} catch (Exception $ex2) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex2->getTraceAsString(), false, "Errore importazione categorie albero: " . $ex2->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaCategorieAlbero');return new Response('Errore importazione (RIGA: ' . ($contatore + $row) . ') : ' . $ex2->getMessage() . '/n' . $ex2->getTraceAsString());} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex->getTraceAsString(), false, "Errore importazione categorie albero: " . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaCategorieAlbero');return new Response('Errore importazione (RIGA: ' . ($contatore + $row) . ') : ' . $ex->getMessage() . '/n' . $ex->getTraceAsString());}//return new Response("Importazione completata || " . $time_elapsed_secs = microtime(true) - $start . " || secondi");} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, "Errore importazione categorie albero: ERRORE_PERMESSO", null, $collegamentoRnd, 'ImportazioneController', 'caricaCategorieAlbero');return new Response("ERRORE PERMESSO");}}/*** @Route("/generaIndicizzazioneAttributi", name="genera_indicizzazione_attributi")*/public function generaIndicizzazioneAttributi(Request $request, $chiamataInternaSenzaRisposta = false){$collegamentoRnd = $this->servizi->randomString2();try{$start = microtime(true);ini_set('max_execution_time', 2400);ini_set('memory_limit', '4G');$usaCategorieAlbero = $this->imp->ritornaImpostazioneDaNome('UtilizzaCategorieAlberoPerGenerazione');$connection = $this->servizi->doctrine->getConnection();$connection->beginTransaction();$connection->query("SET FOREIGN_KEY_CHECKS=0;");$connection->executeUpdate("TRUNCATE `attributi_indicizzazione`;");$connection->query("SET FOREIGN_KEY_CHECKS=1; ");if($usaCategorieAlbero == '1') {$sql = 'INSERT INTO `attributi_indicizzazione`(`attributo_id`, `categoria_albero1_id`, `categoria_albero2_id`, `categoria_albero3_id`, `categoria_albero4_id`, `categoria_albero5_id`, `data_creazione`, `data_modifica`)SELECT DISTINCTatt.id,albero.categoria_albero1_id,albero.categoria_albero2_id,albero.categoria_albero3_id,albero.categoria_albero4_id,albero.categoria_albero5_id,NOW(),NOW()FROM `associazione_attributi` assAttLEFT JOIN attributi att ON att.id = assAtt.attributo_idLEFT JOIN mappa_categorie_articoli mappa ON mappa.id = assAtt.mappa_categoria_articolo_idLEFT JOIN associazione_categorie_albero_mappa_categorie_articoli albero ON albero.articolo_id = mappa.articolo_id; ';}else{$sql = 'INSERT INTO `attributi_indicizzazione`(`attributo_id`, `categoria1_id`, `categoria2_id`, `categoria3_id`, `categoria4_id`, `categoria5_id`, `data_creazione`, `data_modifica`)SELECT DISTINCTatt.id,mappa.categoria1_id,mappa.categoria2_id,mappa.categoria3_id,mappa.categoria4_id,mappa.categoria5_id,NOW(),NOW()FROM `associazione_attributi` assAttLEFT JOIN attributi att ON att.id = assAtt.attributo_idLEFT JOIN mappa_categorie_articoli mappa ON mappa.id = assAtt.mappa_categoria_articolo_id; ';}$connection->executeUpdate($sql);if(!$chiamataInternaSenzaRisposta)return new Response('Generazione indicizzazione attributi completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds \n');elsereturn true;}catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex->getTraceAsString(), false, "Errore genera indicizzazione articoli: " . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'generaIndicizzazioneAttributi');if(!$chiamataInternaSenzaRisposta)return new Response('Errore genera indicizzazione attributi EX: ' . $ex->getMessage() . '/n' . $ex->getTraceAsString());elsereturn false;}}/*** @Route("/generaAlbero/{indicizzaAttributi}/{codiceArticolo}", name="genera_albero", defaults={"indicizzaAttributi"="1","codiceArticolo"=""})*/public function generaAlberoAction(Request $request, $indicizzaAttributi = 1, $codiceArticolo = ""){$collegamentoRnd = $this->servizi->randomString2();# Se specifico il codice articolo non pulisco la tabella e tento la creazione albero solo del codice indicatotry {$start = microtime(true);ini_set('max_execution_time', 2400);ini_set('memory_limit', '4G');$connection = $this->servizi->doctrine->getConnection();$repoAlbero = $this->servizi->doctrine->getRepository(AlberoMenuProdotti::class);if ($codiceArticolo == "") {$connection->executeQuery("SET FOREIGN_KEY_CHECKS=0;");$connection->executeQuery("TRUNCATE associazione_albero_menu_prodotti_tipo_ordine;");$connection->executeQuery("TRUNCATE albero_menu_prodotti;");$connection->executeQuery("SET FOREIGN_KEY_CHECKS=1; ");}$imp = $this->servizi->impostazioni;$imp->caricaCacheImpostazioniDaFamiglie(['Generale']);//Se vero non utilizzo le 5 categorie presenti nella mappa categorie articoli per generare l'albero ma utilizzo la tabella dedicata all'associazione categorie albero$usaCategorieAlbero = $imp->ritornaImpostazioneDaNome('UtilizzaCategorieAlberoPerGenerazione');$debugRitorno = "";$user = $this->servizi->OttieniUtenteCorrente();$arrayCacheCategorie = array();$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Chiamata effettuata a /generaAlbero --- Inizio la generazione dell\' albero', $user, $collegamentoRnd, 'ImportazioneController', 'generaAlbero');$posizioneAssoluta = 0;$conn = $this->servizi->doctrine->getConnection();$sql = "SELECT COUNT(*) AS contaFROM mappa_categorie_articoli mappa ";if ($codiceArticolo != ""){$sql .= " LEFT JOIN articoli a ON a.id = mappa.articolo_id WHERE a.codice = ? ";}$sql .= "GROUP BY mappa.categoria1_id, mappa.categoria2_id, mappa.categoria3_id, mappa.categoria4_id, mappa.categoria5_id";if ($usaCategorieAlbero == '1'){$sql = "SELECT COUNT(*) AS contaFROM mappa_categorie_articoli mappa ";if ($codiceArticolo != ""){$sql .= " LEFT JOIN articoli a ON a.id = mappa.articolo_id ";}$sql .= " LEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass ON ass.mappa_categoria_articolo_id = mappa.id ";if ($codiceArticolo != ""){$sql .= " WHERE a.codice = ? ";}$sql .= " GROUP BY ass.categoria_albero1_id, ass.categoria_albero2_id, ass.categoria_albero3_id, ass.categoria_albero4_id, ass.categoria_albero5_id, ass.categoria_albero6_id, ass.categoria_albero7_id, ass.categoria_albero8_id, ass.categoria_albero9_id, ass.categoria_albero10_id";}$stmt = $conn->prepare($sql);if ($codiceArticolo != ""){$stmt->bindValue(1, $codiceArticolo);}$rst = $stmt->executeQuery();$cont = $rst->fetchAllAssociative();$totRighe = count($cont);$batch = 100;$inizio = 0;while($totRighe > $inizio) {$sql = 'SELECTmappa.categoria1_id AS cat1,mappa.categoria2_id AS cat2,mappa.categoria3_id AS cat3,mappa.categoria4_id AS cat4,mappa.categoria5_id AS cat5FROM mappa_categorie_articoli mappaLEFT JOIN categorie c1 ON c1.id = mappa.categoria1_idLEFT JOIN categorie c2 ON c2.id = mappa.categoria2_idLEFT JOIN categorie c3 ON c3.id = mappa.categoria3_idLEFT JOIN categorie c4 ON c4.id = mappa.categoria4_idLEFT JOIN categorie c5 ON c5.id = mappa.categoria5_idLEFT JOIN articoli a on mappa.articolo_id = a.idWHERE mappa.attivo = 1 AND a.attivo = 1AND (c1.attivo = 1 OR mappa.categoria1_id IS NULL)AND (c2.attivo = 1 OR mappa.categoria2_id IS NULL)AND (c3.attivo = 1 OR mappa.categoria3_id IS NULL)AND (c4.attivo = 1 OR mappa.categoria4_id IS NULL)AND (c5.attivo = 1 OR mappa.categoria5_id IS NULL) ';if ($codiceArticolo != ""){$sql .= " AND a.codice = ? ";}$sql .= 'GROUP BY mappa.categoria1_id, mappa.categoria2_id, mappa.categoria3_id, mappa.categoria4_id, mappa.categoria5_idORDER BY c1.ordinamento, c1.nome, c2.ordinamento, c2.nome, c3.ordinamento, c3.nome, c4.ordinamento, c4.nome, c5.ordinamento, c5.nomeLIMIT ' . $batch . " OFFSET " . $inizio;if($usaCategorieAlbero){$sql = 'SELECTass.categoria_albero1_id AS cat1,ass.categoria_albero2_id AS cat2,ass.categoria_albero3_id AS cat3,ass.categoria_albero4_id AS cat4,ass.categoria_albero5_id AS cat5,ass.categoria_albero6_id AS cat6,ass.categoria_albero7_id AS cat7,ass.categoria_albero8_id AS cat8,ass.categoria_albero9_id AS cat9,ass.categoria_albero10_id AS cat10FROM mappa_categorie_articoli mappaLEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass ON ass.mappa_categoria_articolo_id = mappa.idLEFT JOIN categorie_albero c1 ON c1.id = ass.categoria_albero1_idLEFT JOIN categorie_albero c2 ON c2.id = ass.categoria_albero2_idLEFT JOIN categorie_albero c3 ON c3.id = ass.categoria_albero3_idLEFT JOIN categorie_albero c4 ON c4.id = ass.categoria_albero4_idLEFT JOIN categorie_albero c5 ON c5.id = ass.categoria_albero5_idLEFT JOIN categorie_albero c6 ON c6.id = ass.categoria_albero6_idLEFT JOIN categorie_albero c7 ON c7.id = ass.categoria_albero7_idLEFT JOIN categorie_albero c8 ON c8.id = ass.categoria_albero8_idLEFT JOIN categorie_albero c9 ON c9.id = ass.categoria_albero9_idLEFT JOIN categorie_albero c10 ON c10.id = ass.categoria_albero10_idLEFT JOIN articoli a on mappa.articolo_id = a.idWHERE mappa.attivo = 1 AND a.attivo = 1AND (c1.attivo = 1 OR c1.id IS NULL)AND (c2.attivo = 1 OR c2.id IS NULL)AND (c3.attivo = 1 OR c3.id IS NULL)AND (c4.attivo = 1 OR c4.id IS NULL)AND (c5.attivo = 1 OR c5.id IS NULL)AND (c6.attivo = 1 OR c6.id IS NULL)AND (c7.attivo = 1 OR c7.id IS NULL)AND (c8.attivo = 1 OR c8.id IS NULL)AND (c9.attivo = 1 OR c9.id IS NULL)AND (c10.attivo = 1 OR c10.id IS NULL) ';if ($codiceArticolo != ""){$sql .= " AND a.codice = ? ";}$sql .= ' GROUP BY ass.categoria_albero1_id, ass.categoria_albero2_id, ass.categoria_albero3_id, ass.categoria_albero4_id, ass.categoria_albero5_id, ass.categoria_albero6_id, ass.categoria_albero7_id, ass.categoria_albero8_id, ass.categoria_albero9_id, ass.categoria_albero10_idORDER BY c1.ordinamento, c1.nome, c2.ordinamento, c2.nome, c3.ordinamento, c3.nome, c4.ordinamento, c4.nome, c5.ordinamento, c5.nome, c6.ordinamento, c6.nome, c7.ordinamento, c7.nome, c8.ordinamento, c8.nome, c9.ordinamento, c9.nome, c10.ordinamento, c10.nomeLIMIT ' . $batch . " OFFSET " . $inizio;}$stmt = $conn->prepare($sql);if ($codiceArticolo != ""){$stmt->bindValue(1, $codiceArticolo);}$rst = $stmt->executeQuery();$risultati = $rst->fetchAllAssociative();foreach ($risultati as $mappa) {$ct1 = null; $ct2 = null; $ct3 = null; $ct4 = null; $ct5 = null;$alberoLivello1 = null;$alberoLivello2 = null;$alberoLivello3 = null;$alberoLivello4 = null;$alberoLivello5 = null;$alberoLivello6 = null;$alberoLivello7 = null;$alberoLivello8 = null;$alberoLivello9 = null;$alberoLivello10 = null;if ($mappa['cat1']) {/** @var Categorie|CategorieAlbero $ct1 */if ($usaCategorieAlbero == '1'){$ct1 = $this->ricavaCategoriaAlbero($arrayCacheCategorie, $mappa['cat1'])[$mappa['cat1']];$alberoLivello1 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct1, 'parentId' => null, 'livello' => '0'));}else {$ct1 = $this->ricavaCategoria($arrayCacheCategorie, $mappa['cat1'])[$mappa['cat1']];$alberoLivello1 = $repoAlbero->findOneBy(array('categoria' => $ct1, 'parentId' => null, 'livello' => '0'));}if (!$alberoLivello1) {if ($codiceArticolo != ""){print ("Inserisco albero 1 (ID): " . $mappa['cat1']);}$sql = "INSERT INTO albero_menu_prodotti (" . ($usaCategorieAlbero ? "categoria_albero_id" : "categoria_id") . ", parent_id_id, utente_id, livello, has_child, posizione, posizione_assoluta, data_creazione, data_modifica, risorse_presenti)VALUES (?, NULL, ?, 0, 0,CASE WHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id IS NULL) IS NOT NULLTHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id IS NULL) ELSE 0 END,?, NOW(), NOW(),CASE WHEN EXISTS(SELECT ris.id FROM risorse_anagrafiche ris WHEREris.codice_anagrafica = '' ANDris.codice_categoria1 = ? ANDris.codice_categoria2 = '' ANDris.codice_categoria3 = '' ANDris.codice_categoria4 = '' ANDris.codice_categoria5 = '' ANDris.codice_articolo = '' ANDris.marca = '' ANDris.codice_dimensione1 = '' ANDris.codice_dimensione2 = '' ANDris.codice_dimensione3 = '' ANDris.codice_dimensione4 = '' ANDris.codice_dimensione5 = '') THEN 1 ELSE 0 END)";$stmt = $connection->prepare($sql);$stmt->bindValue(1, $ct1->getId());$stmt->bindValue(2, $user ? $user->getId() : null);$stmt->bindValue(3, $posizioneAssoluta);$stmt->bindValue(4, $ct1->getCodice());$stmt->execute();$sqlTipoOrdine = "INSERT INTO associazione_albero_menu_prodotti_tipo_ordine (tipo_ordine_id, albero_menu_id) SELECTDISTINCT(ass.tipo_ordine_id),(SELECT alb.id FROM albero_menu_prodotti alb WHERE " . ($usaCategorieAlbero ? "alb.categoria_albero_id" : "alb.categoria_id") . " = " . $ct1->getId() . " AND alb.parent_id_id IS NULL AND alb.livello = 0 LIMIT 1)FROM associazione_articoli_tipo_ordine assLEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_idLEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.idWHERE " . ($usaCategorieAlbero ? "ass2.categoria_albero1_id" : "mappa.categoria1_id" ) . " = " . $ct1->getId();$stmt = $connection->prepare($sqlTipoOrdine);$stmt->execute();$posizioneAssoluta++;$alberoLivello1 = null;if ($usaCategorieAlbero){$alberoLivello1 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct1, 'parentId' => null, 'livello' => '0'));}else{$alberoLivello1 = $repoAlbero->findOneBy(array('categoria' => $ct1, 'parentId' => null, 'livello' => '0'));}}}if ($mappa['cat2']) {/** @var Categorie $ct2 */if($usaCategorieAlbero == '1'){$ct2 = $this->ricavaCategoriaAlbero($arrayCacheCategorie, $mappa['cat2'])[$mappa['cat2']];}else{$ct2 = $this->ricavaCategoria($arrayCacheCategorie, $mappa['cat2'])[$mappa['cat2']];}if($alberoLivello1) {if($usaCategorieAlbero == '1'){$alberoLivello2 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct2, 'parentId' => $alberoLivello1->getId(), 'livello' => '1'));}else{$alberoLivello2 = $repoAlbero->findOneBy(array('categoria' => $ct2, 'parentId' => $alberoLivello1->getId(), 'livello' => '1'));}}if (!$alberoLivello2 && $alberoLivello1) {if ($codiceArticolo != ""){print ("Inserisco albero 2 (ID): " . $mappa['cat2']);}$sql = "INSERT INTO albero_menu_prodotti (" . ($usaCategorieAlbero ? "categoria_albero_id" : "categoria_id") . ", parent_id_id, utente_id, livello, has_child, posizione, posizione_assoluta, data_creazione, data_modifica, risorse_presenti)VALUES (?, ?, ?, 1, 0,CASE WHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) IS NOT NULLTHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) ELSE 0 END,?, NOW(), NOW(),CASE WHEN EXISTS(SELECT ris.id FROM risorse_anagrafiche ris WHEREris.codice_anagrafica = '' ANDris.codice_categoria1 = ? ANDris.codice_categoria2 = ? ANDris.codice_categoria3 = '' ANDris.codice_categoria4 = '' ANDris.codice_categoria5 = '' ANDris.codice_articolo = '' ANDris.marca = '' ANDris.codice_dimensione1 = '' ANDris.codice_dimensione2 = '' ANDris.codice_dimensione3 = '' ANDris.codice_dimensione4 = '' ANDris.codice_dimensione5 = '') THEN 1 ELSE 0 END)";$stmt = $connection->prepare($sql);$stmt->bindValue(1, $ct2->getId());$stmt->bindValue(2, $alberoLivello1->getId());$stmt->bindValue(3, $user ? $user->getId() : null);$stmt->bindValue(4, $alberoLivello1->getId());$stmt->bindValue(5, $alberoLivello1->getId());$stmt->bindValue(6, $posizioneAssoluta);$stmt->bindValue(7, $ct1->getCodice());$stmt->bindValue(8, $ct2->getCodice());$stmt->execute();$sqlTipoOrdine = "INSERT INTO associazione_albero_menu_prodotti_tipo_ordine (tipo_ordine_id, albero_menu_id) SELECTDISTINCT(ass.tipo_ordine_id),(SELECT alb.id FROM albero_menu_prodotti alb WHERE " . ($usaCategorieAlbero ? "alb.categoria_albero_id" : "alb.categoria_id") . " = " . $ct2->getId() . " AND alb.parent_id_id = " . $alberoLivello1->getId() . " AND alb.livello = 1 LIMIT 1)FROM associazione_articoli_tipo_ordine assLEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_idLEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.idWHERE " . ($usaCategorieAlbero ? "ass2.categoria_albero1_id" : "mappa.categoria1_id" ) . " = " . $ct1->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero2_id" : "mappa.categoria2_id" ) . " = " . $ct2->getId();$stmt = $connection->prepare($sqlTipoOrdine);$stmt->execute();$posizioneAssoluta++;$sql = 'UPDATE albero_menu_prodotti SET has_child = 1 WHERE id = ?';$stmt = $connection->prepare($sql);$stmt->bindValue(1, $alberoLivello1->getId());$stmt->execute();if($usaCategorieAlbero == '1') {$alberoLivello2 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct2, 'parentId' => $alberoLivello1->getId(), 'livello' => '1'));}else{$alberoLivello2 = $repoAlbero->findOneBy(array('categoria' => $ct2, 'parentId' => $alberoLivello1->getId(), 'livello' => '1'));}}}if ($mappa['cat3']) {/** @var Categorie $ct3 */if($usaCategorieAlbero == '1'){$ct3 = $this->ricavaCategoriaAlbero($arrayCacheCategorie, $mappa['cat3'])[$mappa['cat3']];}else {$ct3 = $this->ricavaCategoria($arrayCacheCategorie, $mappa['cat3'])[$mappa['cat3']];}if($alberoLivello2) {if($usaCategorieAlbero == '1') {$alberoLivello3 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct3, 'parentId' => $alberoLivello2->getId(), 'livello' => '2'));}else{$alberoLivello3 = $repoAlbero->findOneBy(array('categoria' => $ct3, 'parentId' => $alberoLivello2->getId(), 'livello' => '2'));}}if (!$alberoLivello3 && $alberoLivello2) {if ($codiceArticolo != ""){print ("Inserisco albero 3 (ID): " . $mappa['cat3']);}$sql = "INSERT INTO albero_menu_prodotti (" . ($usaCategorieAlbero ? "categoria_albero_id" : "categoria_id") . ", parent_id_id, utente_id, livello, has_child, posizione, posizione_assoluta, data_creazione, data_modifica, risorse_presenti)VALUES (?, ?, ?, 2, 0,CASE WHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) IS NOT NULLTHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) ELSE 0 END,?, NOW(), NOW(),CASE WHEN EXISTS(SELECT ris.id FROM risorse_anagrafiche ris WHEREris.codice_anagrafica = '' ANDris.codice_categoria1 = ? ANDris.codice_categoria2 = ? ANDris.codice_categoria3 = ? ANDris.codice_categoria4 = '' ANDris.codice_categoria5 = '' ANDris.codice_articolo = '' ANDris.marca = '' ANDris.codice_dimensione1 = '' ANDris.codice_dimensione2 = '' ANDris.codice_dimensione3 = '' ANDris.codice_dimensione4 = '' ANDris.codice_dimensione5 = '') THEN 1 ELSE 0 END)";$stmt = $connection->prepare($sql);$stmt->bindValue(1, $ct3->getId());$stmt->bindValue(2, $alberoLivello2->getId());$stmt->bindValue(3, $user ? $user->getId() : null);$stmt->bindValue(4, $alberoLivello2->getId());$stmt->bindValue(5, $alberoLivello2->getId());$stmt->bindValue(6, $posizioneAssoluta);$stmt->bindValue(7, $ct1->getCodice());$stmt->bindValue(8, $ct2->getCodice());$stmt->bindValue(9, $ct3->getCodice());$stmt->execute();$posizioneAssoluta++;$sqlTipoOrdine = "INSERT INTO associazione_albero_menu_prodotti_tipo_ordine (tipo_ordine_id, albero_menu_id) SELECTDISTINCT(ass.tipo_ordine_id),(SELECT alb.id FROM albero_menu_prodotti alb WHERE " . ($usaCategorieAlbero ? "alb.categoria_albero_id" : "alb.categoria_id") . " = " . $ct3->getId() . " AND alb.parent_id_id = " . $alberoLivello2->getId() . " AND alb.livello = 2 LIMIT 1)FROM associazione_articoli_tipo_ordine assLEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_idLEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass.mappa_categoria_articolo_id = mappa.idWHERE " . ($usaCategorieAlbero ? "ass2.categoria_albero1_id" : "mappa.categoria1_id" ) . " = " . $ct1->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero2_id" : "mappa.categoria2_id" ) . " = " . $ct2->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero3_id" : "mappa.categoria3_id" ) . " = " . $ct3->getId();$stmt = $connection->prepare($sqlTipoOrdine);$stmt->execute();$sql = 'UPDATE albero_menu_prodotti SET has_child = 1 WHERE id = ?';$stmt = $connection->prepare($sql);$stmt->bindValue(1, $alberoLivello2->getId());$stmt->execute();if($usaCategorieAlbero == '1'){$alberoLivello3 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct3, 'parentId' => $alberoLivello2->getId(), 'livello' => '2'));}else {$alberoLivello3 = $repoAlbero->findOneBy(array('categoria' => $ct3, 'parentId' => $alberoLivello2->getId(), 'livello' => '2'));}}}if ($mappa['cat4']) {/** @var Categorie $ct4 */if($usaCategorieAlbero == '1'){$ct4 = $this->ricavaCategoriaAlbero($arrayCacheCategorie, $mappa['cat4'])[$mappa['cat4']];}else {$ct4 = $this->ricavaCategoria($arrayCacheCategorie, $mappa['cat4'])[$mappa['cat4']];}if($alberoLivello3) {if($usaCategorieAlbero == '1'){$alberoLivello4 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct4, 'parentId' => $alberoLivello3->getId(), 'livello' => '3'));}else {$alberoLivello4 = $repoAlbero->findOneBy(array('categoria' => $ct4, 'parentId' => $alberoLivello3->getId(), 'livello' => '3'));}}if (!$alberoLivello4 && $alberoLivello3) {if ($codiceArticolo != ""){print ("Inserisco albero 4 (ID): " . $mappa['cat4']);}$sql = "INSERT INTO albero_menu_prodotti (" . ($usaCategorieAlbero ? "categoria_albero_id" : "categoria_id") . ", parent_id_id, utente_id, livello, has_child, posizione, posizione_assoluta, data_creazione, data_modifica, risorse_presenti)VALUES (?, ?, ?, 3, 0,CASE WHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) IS NOT NULLTHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) ELSE 0 END,?, NOW(), NOW(),CASE WHEN EXISTS(SELECT ris.id FROM risorse_anagrafiche ris WHEREris.codice_anagrafica = '' ANDris.codice_categoria1 = ? ANDris.codice_categoria2 = ? ANDris.codice_categoria3 = ? ANDris.codice_categoria4 = ? ANDris.codice_categoria5 = '' ANDris.codice_articolo = '' ANDris.marca = '' ANDris.codice_dimensione1 = '' ANDris.codice_dimensione2 = '' ANDris.codice_dimensione3 = '' ANDris.codice_dimensione4 = '' ANDris.codice_dimensione5 = '') THEN 1 ELSE 0 END)";$stmt = $connection->prepare($sql);$stmt->bindValue(1, $ct4->getId());$stmt->bindValue(2, $alberoLivello3->getId());$stmt->bindValue(3, $user ? $user->getId() : null);$stmt->bindValue(4, $alberoLivello3->getId());$stmt->bindValue(5, $alberoLivello3->getId());$stmt->bindValue(6, $posizioneAssoluta);$stmt->bindValue(7, $ct1->getCodice());$stmt->bindValue(8, $ct2->getCodice());$stmt->bindValue(9, $ct3->getCodice());$stmt->bindValue(10, $ct4->getCodice());$stmt->execute();$posizioneAssoluta++;$sqlTipoOrdine = "INSERT INTO associazione_albero_menu_prodotti_tipo_ordine (tipo_ordine_id, albero_menu_id) SELECTDISTINCT(ass.tipo_ordine_id),(SELECT alb.id FROM albero_menu_prodotti alb WHERE " . ($usaCategorieAlbero ? "alb.categoria_albero_id" : "alb.categoria_id") . " = " . $ct4->getId() . " AND alb.parent_id_id = " . $alberoLivello3->getId() . " AND alb.livello = 3 LIMIT 1)FROM associazione_articoli_tipo_ordine assLEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_idLEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.idWHERE " . ($usaCategorieAlbero ? "ass2.categoria_albero1_id" : "mappa.categoria1_id" ) . " = " . $ct1->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero2_id" : "mappa.categoria2_id" ) . " = " . $ct2->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero3_id" : "mappa.categoria3_id" ) . " = " . $ct3->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero4_id" : "mappa.categoria4_id" ) . " = " . $ct4->getId();$stmt = $connection->prepare($sqlTipoOrdine);$stmt->execute();$sql = 'UPDATE albero_menu_prodotti SET has_child = 1 WHERE id = ?';$stmt = $connection->prepare($sql);$stmt->bindValue(1, $alberoLivello3->getId());$stmt->execute();if($usaCategorieAlbero == '1'){$alberoLivello4 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct4, 'parentId' => $alberoLivello3->getId(), 'livello' => '3'));}else {$alberoLivello4 = $repoAlbero->findOneBy(array('categoria' => $ct4, 'parentId' => $alberoLivello3->getId(), 'livello' => '3'));}}}if ($mappa['cat5']) {/** @var Categorie $ct5 */if($usaCategorieAlbero == '1') {$ct5 = $this->ricavaCategoriaAlbero($arrayCacheCategorie, $mappa['cat5'])[$mappa['cat5']];}else{$ct5 = $this->ricavaCategoria($arrayCacheCategorie, $mappa['cat5'])[$mappa['cat5']];}if($alberoLivello4) {if($usaCategorieAlbero == '1') {$alberoLivello5 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct5, 'parentId' => $alberoLivello4->getId(), 'livello' => '4'));}else{$alberoLivello5 = $repoAlbero->findOneBy(array('categoria' => $ct5, 'parentId' => $alberoLivello4->getId(), 'livello' => '4'));}}if (!$alberoLivello5 && $alberoLivello4) {if ($codiceArticolo != ""){print ("Inserisco albero 5 (ID): " . $mappa['cat5']);}$sql = "INSERT INTO albero_menu_prodotti (" . ($usaCategorieAlbero ? "categoria_albero_id" : "categoria_id") . ", parent_id_id, utente_id, livello, has_child, posizione, posizione_assoluta, data_creazione, data_modifica, risorse_presenti)VALUES (?, ?, ?, 4, 0,CASE WHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) IS NOT NULLTHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) ELSE 0 END,?, NOW(), NOW(),CASE WHEN EXISTS(SELECT ris.id FROM risorse_anagrafiche ris WHEREris.codice_anagrafica = '' ANDris.codice_categoria1 = ? ANDris.codice_categoria2 = ? ANDris.codice_categoria3 = ? ANDris.codice_categoria4 = ? ANDris.codice_categoria5 = ? ANDris.codice_articolo = '' ANDris.marca = '' ANDris.codice_dimensione1 = '' ANDris.codice_dimensione2 = '' ANDris.codice_dimensione3 = '' ANDris.codice_dimensione4 = '' ANDris.codice_dimensione5 = '') THEN 1 ELSE 0 END)";$stmt = $connection->prepare($sql);$stmt->bindValue(1, $ct5->getId());$stmt->bindValue(2, $alberoLivello4->getId());$stmt->bindValue(3, $user ? $user->getId() : null);$stmt->bindValue(4, $alberoLivello4->getId());$stmt->bindValue(5, $alberoLivello4->getId());$stmt->bindValue(6, $posizioneAssoluta);$stmt->bindValue(7, $ct1->getCodice());$stmt->bindValue(8, $ct2->getCodice());$stmt->bindValue(9, $ct3->getCodice());$stmt->bindValue(10, $ct4->getCodice());$stmt->bindValue(11, $ct5->getCodice());$stmt->execute();$posizioneAssoluta++;$sqlTipoOrdine = "INSERT INTO associazione_albero_menu_prodotti_tipo_ordine (tipo_ordine_id, albero_menu_id) SELECTDISTINCT(ass.tipo_ordine_id),(SELECT alb.id FROM albero_menu_prodotti alb WHERE " . ($usaCategorieAlbero ? "alb.categoria_albero_id" : "alb.categoria_id") . " = " . $ct5->getId() . " AND alb.parent_id_id = " . $alberoLivello4->getId() . " AND alb.livello = 4 LIMIT 1)FROM associazione_articoli_tipo_ordine assLEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_idLEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.idWHERE " . ($usaCategorieAlbero ? "ass2.categoria_albero1_id" : "mappa.categoria1_id" ) . " = " . $ct1->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero2_id" : "mappa.categoria2_id" ) . " = " . $ct2->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero3_id" : "mappa.categoria3_id" ) . " = " . $ct3->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero4_id" : "mappa.categoria4_id" ) . " = " . $ct4->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero5_id" : "mappa.categoria5_id" ) . " = " . $ct5->getId();$stmt = $connection->prepare($sqlTipoOrdine);$stmt->execute();$sql = 'UPDATE albero_menu_prodotti SET has_child = 1 WHERE id = ?';$stmt = $connection->prepare($sql);$stmt->bindValue(1, $alberoLivello4->getId());$stmt->execute();if($usaCategorieAlbero == '1'){$alberoLivello5 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct5, 'parentId' => $alberoLivello4->getId(), 'livello' => '4'));}else {$alberoLivello5 = $repoAlbero->findOneBy(array('categoria' => $ct5, 'parentId' => $alberoLivello4->getId(), 'livello' => '4'));}}}if($usaCategorieAlbero == '1') {if ($mappa['cat6']) {/** @var Categorie $ct6 */if ($usaCategorieAlbero == '1') {$ct6 = $this->ricavaCategoriaAlbero($arrayCacheCategorie, $mappa['cat6'])[$mappa['cat6']];} else {$ct6 = $this->ricavaCategoria($arrayCacheCategorie, $mappa['cat6'])[$mappa['cat6']];}if ($alberoLivello5) {if ($usaCategorieAlbero == '1') {$alberoLivello6 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct6, 'parentId' => $alberoLivello5->getId(), 'livello' => '5'));} else {$alberoLivello6 = $repoAlbero->findOneBy(array('categoria' => $ct6, 'parentId' => $alberoLivello5->getId(), 'livello' => '5'));}}if (!$alberoLivello6 && $alberoLivello5) {if ($codiceArticolo != "") {print ("Inserisco albero 6 (ID): " . $mappa['cat6']);}$sql = "INSERT INTO albero_menu_prodotti (" . ($usaCategorieAlbero ? "categoria_albero_id" : "categoria_id") . ", parent_id_id, utente_id, livello, has_child, posizione, posizione_assoluta, data_creazione, data_modifica, risorse_presenti)VALUES (?, ?, ?, 5, 0,CASE WHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) IS NOT NULLTHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) ELSE 0 END,?, NOW(), NOW(),CASE WHEN EXISTS(SELECT ris.id FROM risorse_anagrafiche ris WHEREris.codice_anagrafica = '' ANDris.codice_categoria1 = ? ANDris.codice_categoria2 = ? ANDris.codice_categoria3 = ? ANDris.codice_categoria4 = ? ANDris.codice_categoria5 = ? ANDris.codice_articolo = '' ANDris.marca = '' ANDris.codice_dimensione1 = '' ANDris.codice_dimensione2 = '' ANDris.codice_dimensione3 = '' ANDris.codice_dimensione4 = '' ANDris.codice_dimensione5 = '') THEN 1 ELSE 0 END)";$stmt = $connection->prepare($sql);$stmt->bindValue(1, $ct6->getId());$stmt->bindValue(2, $alberoLivello5->getId());$stmt->bindValue(3, $user ? $user->getId() : null);$stmt->bindValue(4, $alberoLivello5->getId());$stmt->bindValue(5, $alberoLivello5->getId());$stmt->bindValue(6, $posizioneAssoluta);$stmt->bindValue(7, $ct1->getCodice());$stmt->bindValue(8, $ct2->getCodice());$stmt->bindValue(9, $ct3->getCodice());$stmt->bindValue(10, $ct4->getCodice());$stmt->bindValue(11, $ct5->getCodice());$stmt->execute();$posizioneAssoluta++;$sqlTipoOrdine = "INSERT INTO associazione_albero_menu_prodotti_tipo_ordine (tipo_ordine_id, albero_menu_id) SELECTDISTINCT(ass.tipo_ordine_id),(SELECT alb.id FROM albero_menu_prodotti alb WHERE " . ($usaCategorieAlbero ? "alb.categoria_albero_id" : "alb.categoria_id") . " = " . $ct6->getId() . " AND alb.parent_id_id = " . $alberoLivello5->getId() . " AND alb.livello = 5 LIMIT 1)FROM associazione_articoli_tipo_ordine assLEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_idLEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.idWHERE " . ($usaCategorieAlbero ? "ass2.categoria_albero1_id" : "mappa.categoria1_id") . " = " . $ct1->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero2_id" : "mappa.categoria2_id") . " = " . $ct2->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero3_id" : "mappa.categoria3_id") . " = " . $ct3->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero4_id" : "mappa.categoria4_id") . " = " . $ct4->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero5_id" : "mappa.categoria5_id") . " = " . $ct5->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero6_id" : "mappa.categoria6_id") . " = " . $ct6->getId();$stmt = $connection->prepare($sqlTipoOrdine);$stmt->execute();$sql = 'UPDATE albero_menu_prodotti SET has_child = 1 WHERE id = ?';$stmt = $connection->prepare($sql);$stmt->bindValue(1, $alberoLivello5->getId());$stmt->execute();if ($usaCategorieAlbero == '1') {$alberoLivello6 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct6, 'parentId' => $alberoLivello5->getId(), 'livello' => '5'));} else {$alberoLivello6 = $repoAlbero->findOneBy(array('categoria' => $ct6, 'parentId' => $alberoLivello5->getId(), 'livello' => '5'));}}}if ($mappa['cat7']) {/** @var Categorie $ct7 */if ($usaCategorieAlbero == '1') {$ct7 = $this->ricavaCategoriaAlbero($arrayCacheCategorie, $mappa['cat7'])[$mappa['cat7']];} else {$ct7 = $this->ricavaCategoria($arrayCacheCategorie, $mappa['cat7'])[$mappa['cat7']];}if ($alberoLivello6) {if ($usaCategorieAlbero == '1') {$alberoLivello7 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct7, 'parentId' => $alberoLivello6->getId(), 'livello' => '6'));} else {$alberoLivello7 = $repoAlbero->findOneBy(array('categoria' => $ct7, 'parentId' => $alberoLivello6->getId(), 'livello' => '6'));}}if (!$alberoLivello7 && $alberoLivello6) {if ($codiceArticolo != "") {print ("Inserisco albero 7 (ID): " . $mappa['cat7']);}$sql = "INSERT INTO albero_menu_prodotti (" . ($usaCategorieAlbero ? "categoria_albero_id" : "categoria_id") . ", parent_id_id, utente_id, livello, has_child, posizione, posizione_assoluta, data_creazione, data_modifica, risorse_presenti)VALUES (?, ?, ?, 6, 0,CASE WHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) IS NOT NULLTHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) ELSE 0 END,?, NOW(), NOW(),CASE WHEN EXISTS(SELECT ris.id FROM risorse_anagrafiche ris WHEREris.codice_anagrafica = '' ANDris.codice_categoria1 = ? ANDris.codice_categoria2 = ? ANDris.codice_categoria3 = ? ANDris.codice_categoria4 = ? ANDris.codice_categoria5 = ? ANDris.codice_articolo = '' ANDris.marca = '' ANDris.codice_dimensione1 = '' ANDris.codice_dimensione2 = '' ANDris.codice_dimensione3 = '' ANDris.codice_dimensione4 = '' ANDris.codice_dimensione5 = '') THEN 1 ELSE 0 END)";$stmt = $connection->prepare($sql);$stmt->bindValue(1, $ct7->getId());$stmt->bindValue(2, $alberoLivello6->getId());$stmt->bindValue(3, $user ? $user->getId() : null);$stmt->bindValue(4, $alberoLivello6->getId());$stmt->bindValue(5, $alberoLivello6->getId());$stmt->bindValue(6, $posizioneAssoluta);$stmt->bindValue(7, $ct1->getCodice());$stmt->bindValue(8, $ct2->getCodice());$stmt->bindValue(9, $ct3->getCodice());$stmt->bindValue(10, $ct4->getCodice());$stmt->bindValue(11, $ct5->getCodice());$stmt->execute();$posizioneAssoluta++;$sqlTipoOrdine = "INSERT INTO associazione_albero_menu_prodotti_tipo_ordine (tipo_ordine_id, albero_menu_id) SELECTDISTINCT(ass.tipo_ordine_id),(SELECT alb.id FROM albero_menu_prodotti alb WHERE " . ($usaCategorieAlbero ? "alb.categoria_albero_id" : "alb.categoria_id") . " = " . $ct7->getId() . " AND alb.parent_id_id = " . $alberoLivello6->getId() . " AND alb.livello = 6 LIMIT 1)FROM associazione_articoli_tipo_ordine assLEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_idLEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.idWHERE " . ($usaCategorieAlbero ? "ass2.categoria_albero1_id" : "mappa.categoria1_id") . " = " . $ct1->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero2_id" : "mappa.categoria2_id") . " = " . $ct2->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero3_id" : "mappa.categoria3_id") . " = " . $ct3->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero4_id" : "mappa.categoria4_id") . " = " . $ct4->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero5_id" : "mappa.categoria5_id") . " = " . $ct5->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero6_id" : "mappa.categoria6_id") . " = " . $ct6->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero7_id" : "mappa.categoria7_id") . " = " . $ct7->getId();$stmt = $connection->prepare($sqlTipoOrdine);$stmt->execute();$sql = 'UPDATE albero_menu_prodotti SET has_child = 1 WHERE id = ?';$stmt = $connection->prepare($sql);$stmt->bindValue(1, $alberoLivello6->getId());$stmt->execute();if ($usaCategorieAlbero == '1') {$alberoLivello7 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct7, 'parentId' => $alberoLivello6->getId(), 'livello' => '6'));} else {$alberoLivello7 = $repoAlbero->findOneBy(array('categoria' => $ct7, 'parentId' => $alberoLivello6->getId(), 'livello' => '6'));}}}if ($mappa['cat8']) {/** @var Categorie $ct8 */if ($usaCategorieAlbero == '1') {$ct8 = $this->ricavaCategoriaAlbero($arrayCacheCategorie, $mappa['cat8'])[$mappa['cat8']];} else {$ct8 = $this->ricavaCategoria($arrayCacheCategorie, $mappa['cat8'])[$mappa['cat8']];}if ($alberoLivello7) {if ($usaCategorieAlbero == '1') {$alberoLivello8 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct8, 'parentId' => $alberoLivello7->getId(), 'livello' => '7'));} else {$alberoLivello8 = $repoAlbero->findOneBy(array('categoria' => $ct8, 'parentId' => $alberoLivello7->getId(), 'livello' => '7'));}}if (!$alberoLivello8 && $alberoLivello7) {$sql = "INSERT INTO albero_menu_prodotti (" . ($usaCategorieAlbero ? "categoria_albero_id" : "categoria_id") . ", parent_id_id, utente_id, livello, has_child, posizione, posizione_assoluta, data_creazione, data_modifica, risorse_presenti)VALUES (?, ?, ?, 7, 0,CASE WHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) IS NOT NULLTHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) ELSE 0 END,?, NOW(), NOW(),CASE WHEN EXISTS(SELECT ris.id FROM risorse_anagrafiche ris WHEREris.codice_anagrafica = '' ANDris.codice_categoria1 = ? ANDris.codice_categoria2 = ? ANDris.codice_categoria3 = ? ANDris.codice_categoria4 = ? ANDris.codice_categoria5 = ? ANDris.codice_articolo = '' ANDris.marca = '' ANDris.codice_dimensione1 = '' ANDris.codice_dimensione2 = '' ANDris.codice_dimensione3 = '' ANDris.codice_dimensione4 = '' ANDris.codice_dimensione5 = '') THEN 1 ELSE 0 END)";$stmt = $connection->prepare($sql);$stmt->bindValue(1, $ct8->getId());$stmt->bindValue(2, $alberoLivello7->getId());$stmt->bindValue(3, $user ? $user->getId() : null);$stmt->bindValue(4, $alberoLivello7->getId());$stmt->bindValue(5, $alberoLivello7->getId());$stmt->bindValue(6, $posizioneAssoluta);$stmt->bindValue(7, $ct1->getCodice());$stmt->bindValue(8, $ct2->getCodice());$stmt->bindValue(9, $ct3->getCodice());$stmt->bindValue(10, $ct4->getCodice());$stmt->bindValue(11, $ct5->getCodice());$stmt->execute();$posizioneAssoluta++;$sqlTipoOrdine = "INSERT INTO associazione_albero_menu_prodotti_tipo_ordine (tipo_ordine_id, albero_menu_id) SELECTDISTINCT(ass.tipo_ordine_id),(SELECT alb.id FROM albero_menu_prodotti alb WHERE " . ($usaCategorieAlbero ? "alb.categoria_albero_id" : "alb.categoria_id") . " = " . $ct8->getId() . " AND alb.parent_id_id = " . $alberoLivello7->getId() . " AND alb.livello = 7 LIMIT 1)FROM associazione_articoli_tipo_ordine assLEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_idLEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.idWHERE " . ($usaCategorieAlbero ? "ass2.categoria_albero1_id" : "mappa.categoria1_id") . " = " . $ct1->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero2_id" : "mappa.categoria2_id") . " = " . $ct2->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero3_id" : "mappa.categoria3_id") . " = " . $ct3->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero4_id" : "mappa.categoria4_id") . " = " . $ct4->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero5_id" : "mappa.categoria5_id") . " = " . $ct5->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero6_id" : "mappa.categoria6_id") . " = " . $ct6->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero7_id" : "mappa.categoria7_id") . " = " . $ct7->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero8_id" : "mappa.categoria8_id") . " = " . $ct8->getId();$stmt = $connection->prepare($sqlTipoOrdine);$stmt->execute();$sql = 'UPDATE albero_menu_prodotti SET has_child = 1 WHERE id = ?';$stmt = $connection->prepare($sql);$stmt->bindValue(1, $alberoLivello7->getId());$stmt->execute();if ($usaCategorieAlbero == '1') {$alberoLivello8 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct8, 'parentId' => $alberoLivello7->getId(), 'livello' => '7'));} else {$alberoLivello8 = $repoAlbero->findOneBy(array('categoria' => $ct8, 'parentId' => $alberoLivello7->getId(), 'livello' => '7'));}}}if ($mappa['cat9']) {/** @var Categorie $ct9 */if ($usaCategorieAlbero == '1') {$ct9 = $this->ricavaCategoriaAlbero($arrayCacheCategorie, $mappa['cat9'])[$mappa['cat9']];} else {$ct9 = $this->ricavaCategoria($arrayCacheCategorie, $mappa['cat9'])[$mappa['cat9']];}if ($alberoLivello8) {if ($usaCategorieAlbero == '1') {$alberoLivello9 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct9, 'parentId' => $alberoLivello8->getId(), 'livello' => '8'));} else {$alberoLivello9 = $repoAlbero->findOneBy(array('categoria' => $ct9, 'parentId' => $alberoLivello8->getId(), 'livello' => '8'));}}if (!$alberoLivello9 && $alberoLivello8) {$sql = "INSERT INTO albero_menu_prodotti (" . ($usaCategorieAlbero ? "categoria_albero_id" : "categoria_id") . ", parent_id_id, utente_id, livello, has_child, posizione, posizione_assoluta, data_creazione, data_modifica, risorse_presenti)VALUES (?, ?, ?, 8, 0,CASE WHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) IS NOT NULLTHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) ELSE 0 END,?, NOW(), NOW(),CASE WHEN EXISTS(SELECT ris.id FROM risorse_anagrafiche ris WHEREris.codice_anagrafica = '' ANDris.codice_categoria1 = ? ANDris.codice_categoria2 = ? ANDris.codice_categoria3 = ? ANDris.codice_categoria4 = ? ANDris.codice_categoria5 = ? ANDris.codice_articolo = '' ANDris.marca = '' ANDris.codice_dimensione1 = '' ANDris.codice_dimensione2 = '' ANDris.codice_dimensione3 = '' ANDris.codice_dimensione4 = '' ANDris.codice_dimensione5 = '') THEN 1 ELSE 0 END)";$stmt = $connection->prepare($sql);$stmt->bindValue(1, $ct9->getId());$stmt->bindValue(2, $alberoLivello8->getId());$stmt->bindValue(3, $user ? $user->getId() : null);$stmt->bindValue(4, $alberoLivello8->getId());$stmt->bindValue(5, $alberoLivello8->getId());$stmt->bindValue(6, $posizioneAssoluta);$stmt->bindValue(7, $ct1->getCodice());$stmt->bindValue(8, $ct2->getCodice());$stmt->bindValue(9, $ct3->getCodice());$stmt->bindValue(10, $ct4->getCodice());$stmt->bindValue(11, $ct5->getCodice());$stmt->execute();$posizioneAssoluta++;$sqlTipoOrdine = "INSERT INTO associazione_albero_menu_prodotti_tipo_ordine (tipo_ordine_id, albero_menu_id) SELECTDISTINCT(ass.tipo_ordine_id),(SELECT alb.id FROM albero_menu_prodotti alb WHERE " . ($usaCategorieAlbero ? "alb.categoria_albero_id" : "alb.categoria_id") . " = " . $ct9->getId() . " AND alb.parent_id_id = " . $alberoLivello8->getId() . " AND alb.livello = 8 LIMIT 1)FROM associazione_articoli_tipo_ordine assLEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_idLEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.idWHERE " . ($usaCategorieAlbero ? "ass2.categoria_albero1_id" : "mappa.categoria1_id") . " = " . $ct1->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero2_id" : "mappa.categoria2_id") . " = " . $ct2->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero3_id" : "mappa.categoria3_id") . " = " . $ct3->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero4_id" : "mappa.categoria4_id") . " = " . $ct4->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero5_id" : "mappa.categoria5_id") . " = " . $ct5->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero6_id" : "mappa.categoria6_id") . " = " . $ct6->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero7_id" : "mappa.categoria7_id") . " = " . $ct7->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero8_id" : "mappa.categoria8_id") . " = " . $ct8->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero9_id" : "mappa.categoria9_id") . " = " . $ct9->getId();$stmt = $connection->prepare($sqlTipoOrdine);$stmt->execute();$sql = 'UPDATE albero_menu_prodotti SET has_child = 1 WHERE id = ?';$stmt = $connection->prepare($sql);$stmt->bindValue(1, $alberoLivello8->getId());$stmt->execute();if ($usaCategorieAlbero == '1') {$alberoLivello9 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct9, 'parentId' => $alberoLivello8->getId(), 'livello' => '8'));} else {$alberoLivello9 = $repoAlbero->findOneBy(array('categoria' => $ct9, 'parentId' => $alberoLivello8->getId(), 'livello' => '8'));}}}if ($mappa['cat10']) {/** @var Categorie $ct10 */if ($usaCategorieAlbero == '1') {$ct10 = $this->ricavaCategoriaAlbero($arrayCacheCategorie, $mappa['cat10'])[$mappa['cat10']];} else {$ct10 = $this->ricavaCategoria($arrayCacheCategorie, $mappa['cat10'])[$mappa['cat10']];}if ($alberoLivello9) {if ($usaCategorieAlbero == '1') {$alberoLivello10 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct10, 'parentId' => $alberoLivello9->getId(), 'livello' => '9'));} else {$alberoLivello10 = $repoAlbero->findOneBy(array('categoria' => $ct10, 'parentId' => $alberoLivello9->getId(), 'livello' => '9'));}}if (!$alberoLivello10 && $alberoLivello9) {$sql = "INSERT INTO albero_menu_prodotti (" . ($usaCategorieAlbero ? "categoria_albero_id" : "categoria_id") . ", parent_id_id, utente_id, livello, has_child, posizione, posizione_assoluta, data_creazione, data_modifica, risorse_presenti)VALUES (?, ?, ?, 9, 0,CASE WHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) IS NOT NULLTHEN (SELECT COUNT(alb.id) FROM albero_menu_prodotti alb WHERE alb.parent_id_id = ?) ELSE 0 END,?, NOW(), NOW(),CASE WHEN EXISTS(SELECT ris.id FROM risorse_anagrafiche ris WHEREris.codice_anagrafica = '' ANDris.codice_categoria1 = ? ANDris.codice_categoria2 = ? ANDris.codice_categoria3 = ? ANDris.codice_categoria4 = ? ANDris.codice_categoria5 = ? ANDris.codice_articolo = '' ANDris.marca = '' ANDris.codice_dimensione1 = '' ANDris.codice_dimensione2 = '' ANDris.codice_dimensione3 = '' ANDris.codice_dimensione4 = '' ANDris.codice_dimensione5 = '') THEN 1 ELSE 0 END)";$stmt = $connection->prepare($sql);$stmt->bindValue(1, $ct10->getId());$stmt->bindValue(2, $alberoLivello9->getId());$stmt->bindValue(3, $user ? $user->getId() : null);$stmt->bindValue(4, $alberoLivello9->getId());$stmt->bindValue(5, $alberoLivello9->getId());$stmt->bindValue(6, $posizioneAssoluta);$stmt->bindValue(7, $ct1->getCodice());$stmt->bindValue(8, $ct2->getCodice());$stmt->bindValue(9, $ct3->getCodice());$stmt->bindValue(10, $ct4->getCodice());$stmt->bindValue(11, $ct5->getCodice());$stmt->execute();$posizioneAssoluta++;$sqlTipoOrdine = "INSERT INTO associazione_albero_menu_prodotti_tipo_ordine (tipo_ordine_id, albero_menu_id) SELECTDISTINCT(ass.tipo_ordine_id),(SELECT alb.id FROM albero_menu_prodotti alb WHERE " . ($usaCategorieAlbero ? "alb.categoria_albero_id" : "alb.categoria_id") . " = " . $ct10->getId() . " AND alb.parent_id_id = " . $alberoLivello9->getId() . " AND alb.livello = 9 LIMIT 1)FROM associazione_articoli_tipo_ordine assLEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_idLEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.idWHERE " . ($usaCategorieAlbero ? "ass2.categoria_albero1_id" : "mappa.categoria1_id") . " = " . $ct1->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero2_id" : "mappa.categoria2_id") . " = " . $ct2->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero3_id" : "mappa.categoria3_id") . " = " . $ct3->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero4_id" : "mappa.categoria4_id") . " = " . $ct4->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero5_id" : "mappa.categoria5_id") . " = " . $ct5->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero6_id" : "mappa.categoria6_id") . " = " . $ct6->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero7_id" : "mappa.categoria7_id") . " = " . $ct7->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero8_id" : "mappa.categoria8_id") . " = " . $ct8->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero9_id" : "mappa.categoria9_id") . " = " . $ct9->getId() . " AND " . ($usaCategorieAlbero ? "ass2.categoria_albero10_id" : "mappa.categoria10_id") . " = " . $ct10->getId();$stmt = $connection->prepare($sqlTipoOrdine);$stmt->execute();$sql = 'UPDATE albero_menu_prodotti SET has_child = 1 WHERE id = ?';$stmt = $connection->prepare($sql);$stmt->bindValue(1, $alberoLivello9->getId());$stmt->execute();if ($usaCategorieAlbero == '1') {$alberoLivello10 = $repoAlbero->findOneBy(array('categoriaAlbero' => $ct10, 'parentId' => $alberoLivello9->getId(), 'livello' => '9'));} else {$alberoLivello10 = $repoAlbero->findOneBy(array('categoria' => $ct10, 'parentId' => $alberoLivello9->getId(), 'livello' => '9'));}}}}}$inizio = $inizio + $batch;}$this->addFlash('notice','Albero menu rigenerato con successo in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds');if($indicizzaAttributi == "1")$this->generaIndicizzazioneAttributi($request, true);$this->servizi->ScriviRegistroAttivita($request->getClientIp(), '', true, 'Albero menu rigenerato con successo in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds', $user, $collegamentoRnd, 'ImportazioneController', 'generaAlbero');return $this->render('default/index.html.twig', array('testo' => $debugRitorno));} catch (\PDOException $exx){$this->servizi->DebuggaException($exx, 'Errore genera albero: ', false, null, $collegamentoRnd, 'ImportazioneController', 'generaAlbero');} catch (\Exception|\Throwable $ex) {$this->servizi->DebuggaException($ex, 'Errore genera albero: ', false, null, $collegamentoRnd, 'ImportazioneController', 'generaAlbero');}return new Response('ERRORE');}function ricavaCategoria($arrayCache, $idCategoria){if(!array_key_exists($idCategoria, $arrayCache)){$cacheCategorie = new Caching_Categorie($this->servizi);$arrayCache[$idCategoria] = $cacheCategorie->getCategoria($idCategoria);//$this->servizi->doctrine->getRepository(Categorie::class)->find($idCategoria);}return $arrayCache;}function ricavaCategoriaAlbero($arrayCache, $idCategoria){if(!array_key_exists($idCategoria, $arrayCache)){$cacheCategorie = new Caching_CategorieAlbero($this->servizi);$arrayCache[$idCategoria] = $cacheCategorie->getCategoriaAlbero($idCategoria);//$this->servizi->doctrine->getRepository(Categorie::class)->find($idCategoria);}return $arrayCache;}function controllaEAggiungiSeInsistente($array, $chiave){if (!array_key_exists($chiave, $array)) {$array[$chiave] = array();}return $array;}/*** @Route("/caricaRisorseAnagraficheValori", name="carica_risorse_anagrafiche_valori")*/public function caricaRisorseAnagraficheValori(Request $request){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 900);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$user = $this->servizi->OttieniUtenteCorrente();$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$repoRisorse = $this->servizi->doctrine->getRepository(RisorseAnagrafiche::class);$repoRisValori = $this->servizi->doctrine->getRepository(RisorseAnagraficheColonneValori::class);$repoColonne = $this->servizi->doctrine->getRepository(RisorseAnagraficheColonne::class);$errori = "";$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaRisorseAnagraficheValori --- Inizio l\' importazione delle scontistiche delle anagrafiche', null, $collegamentoRnd, 'ImportazioneController', 'caricaRisorseAnagraficheValori');$root_path = $pathFileBase . "risorse_anagrafiche_valori.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$query_eseguite = 0;$row = 0;$batch_size = 50;/** Index Campo0 identificativo_unico_risorsa_anagrafica1 nome_colonna2 ordinatore3 valore4 tipo_dato5 header_visualizzato6 nascosto7 operazione8 direzione_ordinamento9 ordinazione_ordinamento*/$indici = array("identificativoUnicoRisorsaAnagrafica" => 0,"nomeColonna" => 1,"ordinatore" => 2,"valore" => 3,"tipoDato" => 4,"headerVisualizzato" => 5,"nascosto" => 6,"operazione" => 7,"direzioneOrdinamento" => 8,"ordinazioneOrdinamento" => 9);$tipiDatoAutorizzati = $this->servizi->RitornaArrayTipoDato();$tt = array();foreach ($tipiDatoAutorizzati as $key){array_push($tt, $key);}$tipiDatoAutorizzati = $tt;try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}if(in_array($data[$indici['tipoDato']], $tipiDatoAutorizzati)) {$testataRisorsa = $repoRisorse->findOneBy(array('identificativoUnico' => $data[$indici['identificativoUnicoRisorsaAnagrafica']]));if ($testataRisorsa) {$risorsa = $repoRisValori->findOneBy(array('risorsaAnagrafica' => $testataRisorsa, 'nomeColonna' => $data[$indici['nomeColonna']]));if ($data[$indici['operazione']] == 'E') {if ($risorsa) {$em->remove($risorsa);$query_eseguite++;}} else {//Identifico la testata Risorsa anagrafica//Identifico la colonna$colonna = $repoColonne->findOneBy(array('nome' => $data[$indici['nomeColonna']], 'tipoDato' => $data[$indici['tipoDato']]));if (!$colonna) {$colonna = new RisorseAnagraficheColonne();$colonna->setNome($data[$indici['nomeColonna']]);$colonna->setTipoDato($data[$indici['tipoDato']]);$colonna->setHeaderVisualizzato($data[$indici['headerVisualizzato']] != '' ? $data[$indici['headerVisualizzato']] : $colonna->getNome());$colonna->setNascosto($data[$indici['nascosto']] != '0' ? true : false);$colonna->setDataCreazione(new \DateTime());$colonna->setDataModifica(new \DateTime());if(count($data) > 8)$colonna->setDirezioneOrdinamento(strtolower($data[$indici['direzioneOrdinamento']] ? $data[$indici['direzioneOrdinamento']] : ''));if(count($data) > 9)$colonna->setOrdinazioneOrdinamento($data[$indici['ordinazioneOrdinamento']] != '' ? $data[$indici['ordinazioneOrdinamento']] : null);$em->persist($colonna);$query_eseguite++;} else {$colonna->setHeaderVisualizzato($data[$indici['headerVisualizzato']] != '' ? $data[$indici['headerVisualizzato']] : $colonna->getNome());$colonna->setNascosto($data[$indici['nascosto']] != '0' ? true : false);$colonna->setDataModifica(new \DateTime());$em->persist($colonna);$query_eseguite++;}if (!$risorsa) {$risorsa = new RisorseAnagraficheColonneValori();$risorsa->setRisorsaAnagrafica($testataRisorsa);$risorsa->setColonna($colonna);$risorsa->setNomeColonna($data[$indici['nomeColonna']]);$risorsa->setOrdinatore($data[$indici['ordinatore']]);$risorsa->setValore(null);$risorsa->setValoreBoolean(null);$risorsa->setValoreDatetime(null);$risorsa->setValoreDecimale(null);$risorsa->setValoreInteger(null);switch ($colonna->getTipoDato()){case 'text':{$risorsa->setValore($data[$indici['valore']]);break;}case 'integer':{$risorsa->setValoreInteger($data[$indici['valore']]);break;}case 'decimal':{$risorsa->setValoreDecimale($data[$indici['valore']]);break;}case 'boolean':{$risorsa->setValoreBoolean(boolval($data[$indici['valore']]));break;}case 'datetime':{$risorsa->setValoreDatetime(\DateTime::createFromFormat('Y-m-d H:i:s', $data[$indici['valore']]));break;}case 'date':{$dat = \DateTime::createFromFormat('Y-m-d', $data[$indici['valore']]);$dat->setTime(0, 0, 0);$risorsa->setValoreDatetime($dat);break;}case 'time':{$dat = \DateTime::createFromFormat('H:i:s', $data[$indici['valore']]);$dat->setDate(1899, 0, 0);$risorsa->setValoreDatetime($dat);break;}}$risorsa->setDataModifica(new \DateTime());$risorsa->setDataCreazione(new \DateTime());$em->persist($risorsa);$query_eseguite++;} else {$risorsa->setOrdinatore($data[$indici['ordinatore']]);$risorsa->setValore(null);$risorsa->setValoreBoolean(null);$risorsa->setValoreDatetime(null);$risorsa->setValoreDecimale(null);$risorsa->setValoreInteger(null);switch ($colonna->getTipoDato()){case 'text':{$risorsa->setValore($data[$indici['valore']]);break;}case 'integer':{$risorsa->setValoreInteger($data[$indici['valore']]);break;}case 'decimal':{$risorsa->setValoreDecimale($data[$indici['valore']]);break;}case 'boolean':{$risorsa->setValoreBoolean(boolval($data[$indici['valore']]));break;}case 'datetime':{$risorsa->setValoreDatetime(\DateTime::createFromFormat('Y-m-d H:i:s', $data[$indici['valore']]));break;}case 'date':{$dat = \DateTime::createFromFormat('Y-m-d', $data[$indici['valore']]);$dat->setTime(0, 0, 0);$risorsa->setValoreDatetime($dat);break;}case 'time':{$dat = \DateTime::createFromFormat('H:i:s', $data[$indici['valore']]);$dat->setDate(1899, 0, 0);$risorsa->setValoreDatetime($dat);break;}}$risorsa->setDataModifica(new \DateTime());$em->persist($risorsa);$query_eseguite++;}}} else {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Risorsa anagrafica con identificativo univoco: ' . $data[$indici['identificativoUnicoRisorsaAnagrafica']] . ' non trovata!', $user, $collegamentoRnd, 'ImportazioneController', 'caricaRisorseAnagraficheValori');}}else{$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Tipo dato: ' . $data[$indici['tipoDato']] . ' non riconosciuto!', null, $collegamentoRnd, 'ImportazioneController', 'caricaRisorseAnagraficheValori');}$row++;$em->flush();}$em->flush();$em->clear();}else{$errori .= "Impossibile aprire il file!";}$row = $contatore + $row;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaRisorseAnagraficheValori');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), var_export($errori, true), false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaRisorseAnagraficheValori');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex->getTraceAsString(), false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaRisorseAnagraficheValori');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaRisorseAnagraficheValori');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaAssociazioniArticoliClienti/{svuota}/{batch}/{iterazione}", name="carica_rassociazione_articoli_clienti", defaults={"svuota"="0", "batch"="0", "iterazione"="0"})*/public function caricaAssociazioneArticoliClienti(Request $request, $svuota, $batch, $iterazione){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', -1);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$user = $this->servizi->OttieniUtenteCorrente();$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$repoArticoli = $this->servizi->doctrine->getRepository(Articoli::class);$repoClienti = $this->servizi->doctrine->getRepository(User::class);$repoAnagrafica = $this->servizi->doctrine->getRepository(Anagrafiche::class);$repoCategoria = $this->servizi->doctrine->getRepository(Categorie::class);$repoVarianti = $this->servizi->doctrine->getRepository(Varianti::class);$repoAssociazione = $this->servizi->doctrine->getRepository(AssociazioneArticoliCliente::class);$errori = "";$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaAssociazioniArticoliClienti/' . $svuota . ' --- Inizio l\' importazione delle associazione articoli clienti', null, $collegamentoRnd, 'ImportazioneController', 'caricaAssociazioniArticoliClienti');if($svuota == "1"){$connection = $this->servizi->doctrine->getConnection();$connection->beginTransaction();try {$connection->query("SET FOREIGN_KEY_CHECKS=0;");$connection->executeUpdate("TRUNCATE `associazione_articoli_cliente`;");$connection->query("SET FOREIGN_KEY_CHECKS=1;");$connection->commit();}catch (\Exception|\Throwable $ex){$this->servizi->DebuggaException($ex, "Errore pulizia associazione articoli cliente DB", false, null, $collegamentoRnd, 'ImportazioneController', 'caricaAssociazioniArticoliClienti' );}}$root_path = $pathFileBase . "associazione_articoli_clienti.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$query_eseguite = 0;$row = 0;$batch_size = 50;/** Index Campo0 codice_cliente1 codice_articolo2 codice_cat13 codice_cat24 codice_cat35 codice_cat46 codice_cat57 marca8 codice_variante9 ass_codice10 ass_nome11 ass_descrizione12 ass_marca13 ass_immagine_dimensione_114 ass_codice_dimensione_115 ass_descrizione_dimensione_116 ass_immagine_dimensione_217 ass_codice_dimensione_218 ass_descrizione_dimensione_219 ass_immagine_dimensione_320 ass_codice_dimensione_321 ass_descrizione_dimensione_322 ass_immagine_dimensione_423 ass_codice_dimensione_424 ass_descrizione_dimensione_425 ass_immagine_dimensione_526 ass_codice_dimensione_527 ass_descrizione_dimensione_528 operazione*/$indici = array("codiceCliente" => 0,"codiceArticolo" => 1,"cat1" => 2,"cat2" => 3,"cat3" => 4,"cat4" => 5,"cat5" => 6,"marca" => 7,'codiceVariante' => 8,'assCodice' => 9,'assNome' => 10,'assDescrizione' => 11,'assMarca' => 12,'assImmagineDimensione1' => 13,'assCodiceDimensione1' => 14,'assDescrizioneDimensione1' => 15,'assImmagineDimensione2' => 16,'assCodiceDimensione2' => 17,'assDescrizioneDimensione2' => 18,'assImmagineDimensione3' => 19,'assCodiceDimensione3' => 20,'assDescrizioneDimensione3' => 21,'assImmagineDimensione4' => 22,'assCodiceDimensione4' => 23,'assDescrizioneDimensione4' => 24,'assImmagineDimensione5' => 25,'assCodiceDimensione5' => 26,'assDescrizioneDimensione5' => 27,'operazione' => 28);$righeDaSaltareSeBatch = 0;if($batch != 0 && $iterazione != 0){$rrr = $batch * $iterazione; //Esempio iterazione = 1 batch = 5000 = 5000$righeDaSaltareSeBatch = $rrr - $batch;}try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {//Se attivata la funzionalità batch salto le righe che non devo importareif($righeDaSaltareSeBatch > 0){if (($contatore + $row) < $righeDaSaltareSeBatch){$contatore++;continue;}}if($righeDaSaltareSeBatch > 0 && ($contatore + $row - $righeDaSaltareSeBatch) > $batch ){$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, "Batch completato: Iterazione: " . strval($iterazione) . " --- Batch: " . strval(($batch)) . " ( Da riga:" . strval($righeDaSaltareSeBatch + 1) . " a riga: " . strval(($contatore + $row)) . " )", null, $collegamentoRnd, 'ImportazioneController', 'caricaAssociazioniArticoliClienti');break;}if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$cliente = $repoClienti->findOneBy(array('codiceCliente' => $data[$indici['codiceCliente']]));$anagrafica = $repoAnagrafica->findOneBy(array('codice' => $data[$indici['codiceCliente']]));$articolo = null;if ($data[$indici['codiceArticolo']] != '') {$articolo = $repoArticoli->findOneBy(array('codice' => $data[$indici['codiceArticolo']]));}if ($articolo) {$cat1 = $repoCategoria->findOneBy(array('codice' => $data[$indici['cat1']]));$cat2 = $repoCategoria->findOneBy(array('codice' => $data[$indici['cat2']]));$cat3 = $repoCategoria->findOneBy(array('codice' => $data[$indici['cat3']]));$cat4 = $repoCategoria->findOneBy(array('codice' => $data[$indici['cat4']]));$cat5 = $repoCategoria->findOneBy(array('codice' => $data[$indici['cat5']]));$mappa = $this->servizi->ritornaMappaCategoriaArticoliSeInserita($articolo, $cat1, $cat2, $cat3, $cat4, $data[$indici['marca']], $cat5);$variante = $repoVarianti->findOneBy(array('mappa' => $mappa, 'codiceVariante' => $data[$indici['codiceVariante']]));$qb = $repoAssociazione->createQueryBuilder('ass')->where('ass.mappaCategoriaArticoli = :mappa OR ass.articolo = :art')->setParameter('mappa', $mappa)->setParameter('art', $articolo);if ($variante) {$qb = $qb->andWhere('ass.variante = :variante')->setParameter('variante', $variante);} else {$qb = $qb->andWhere('ass.variante IS NULL');}if ($cliente) {$qb = $qb->andWhere('ass.cliente = :cliente')->setParameter('cliente', $cliente);} else {$qb = $qb->andWhere('ass.cliente IS NULL');}if ($anagrafica) {$qb = $qb->andWhere('ass.anagrafica = :anagrafica')->setParameter('anagrafica', $anagrafica);} else {$qb = $qb->andWhere('ass.anagrafica IS NULL');}if($data[$indici['codiceArticolo']] != ''){$qb = $qb->andWhere('ass.codiceArticoloOriginale = :codOr')->setParameter('codOr', $data[$indici['codiceArticolo']]);}else{$qb = $qb->andWhere("ass.codiceArticoloOriginale IS NULL OR ass.codiceArticoloOriginale = ''");}if($data[$indici['codiceCliente']] != ''){$qb = $qb->andWhere('ass.codiceAnagrafica = :codAna')->setParameter('codAna', $data[$indici['codiceCliente']]);}else{$qb = $qb->andWhere("ass.codiceAnagrafica IS NULL OR ass.codiceAnagrafica = ''");}$ritorno = $qb->setMaxResults(1)->getQuery()->getResult();$associazioneArticoloCliente = null;if (count($ritorno) > 0) {$associazioneArticoloCliente = $ritorno[0];}if ($data[$indici['operazione']] == 'E') {if ($associazioneArticoloCliente != null) {$em->remove($associazioneArticoloCliente);$query_eseguite++;}} else {if ($associazioneArticoloCliente == null) {$associazioneArticoloCliente = new AssociazioneArticoliCliente();$associazioneArticoloCliente->setMappaCategoriaArticoli($mappa);$associazioneArticoloCliente->setArticolo($articolo);$associazioneArticoloCliente->setVariante($variante);$associazioneArticoloCliente->setCliente($cliente);$associazioneArticoloCliente->setAnagrafica($anagrafica);$associazioneArticoloCliente->setCodiceAnagrafica($data[$indici['codiceCliente']]);$associazioneArticoloCliente->setCodiceArticoloOriginale($data[$indici['codiceArticolo']]);$associazioneArticoloCliente->setDataCreazione(new \DateTime());$associazioneArticoloCliente->setMarca($data[$indici['marca']]);}$associazioneArticoloCliente->setNome($data[$indici['assNome']]);$associazioneArticoloCliente->setCodice($data[$indici['assCodice']]);$associazioneArticoloCliente->setMarca($data[$indici['assMarca']]);$associazioneArticoloCliente->setDescrizione($data[$indici['assDescrizione']]);$associazioneArticoloCliente->setImmagineDimensione1($data[$indici['assImmagineDimensione1']]);$associazioneArticoloCliente->setCodiceDimensione1($data[$indici['assCodiceDimensione1']]);$associazioneArticoloCliente->setDescrizioneDimensione1($data[$indici['assDescrizioneDimensione1']]);$associazioneArticoloCliente->setImmagineDimensione2($data[$indici['assImmagineDimensione2']]);$associazioneArticoloCliente->setCodiceDimensione2($data[$indici['assCodiceDimensione2']]);$associazioneArticoloCliente->setDescrizioneDimensione2($data[$indici['assDescrizioneDimensione2']]);$associazioneArticoloCliente->setImmagineDimensione3($data[$indici['assImmagineDimensione3']]);$associazioneArticoloCliente->setCodiceDimensione3($data[$indici['assCodiceDimensione3']]);$associazioneArticoloCliente->setDescrizioneDimensione3($data[$indici['assDescrizioneDimensione3']]);$associazioneArticoloCliente->setImmagineDimensione4($data[$indici['assImmagineDimensione4']]);$associazioneArticoloCliente->setCodiceDimensione4($data[$indici['assCodiceDimensione4']]);$associazioneArticoloCliente->setDescrizioneDimensione4($data[$indici['assDescrizioneDimensione4']]);$associazioneArticoloCliente->setImmagineDimensione5($data[$indici['assImmagineDimensione5']]);$associazioneArticoloCliente->setCodiceDimensione5($data[$indici['assCodiceDimensione5']]);$associazioneArticoloCliente->setDescrizioneDimensione5($data[$indici['assDescrizioneDimensione5']]);$associazioneArticoloCliente->setDataModifica(new \DateTime());$em->persist($associazioneArticoloCliente);$query_eseguite++;}} else {$errori .= ("RIGA: " . ($contatore + $row) . ' -- Articolo con codice ' . $data[$indici['codiceArticolo']] . ' non trovato!\n');}$row++;}$em->flush();$em->clear();}else{$errori .= "Impossibile aprire il file!";}$row = $contatore + $row;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaAssociazioniArticoliClienti');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), var_export($errori, true), false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaAssociazioniArticoliClienti');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex->getTraceAsString(), false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaAssociazioniArticoliClienti');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}}else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaAssociazioniArticoliClienti');return new Response("ERRORE PERMESSO");}}/*** @Route("/caricaDisponibilita/{batch}/{iterazione}", name="carica_disponibilita", defaults={"batch"="0", "iterazione"="0"})*/public function caricaDisponibilita(Request $request, $batch, $iterazione){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', -1);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$user = $this->servizi->OttieniUtenteCorrente();$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$repoArticoli = $this->servizi->doctrine->getRepository(Articoli::class);$repoCategoria = $this->servizi->doctrine->getRepository(Categorie::class);$repoVarianti = $this->servizi->doctrine->getRepository(Varianti::class);$errori = "";$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaDisponibilita --- Inizio l\' importazione delle disponibilita articoli', null, $collegamentoRnd, 'ImportazioneController', 'caricaDisponibilita');$root_path = $pathFileBase . "disponibilita.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$query_eseguite = 0;$row = 0;$batch_size = 50;/** Index Campo0 codice_articolo1 codice_cat12 codice_cat23 codice_cat34 codice_cat45 codice_cat56 marca7 codice_variante8 disponibilita9 ordini_fornitori10 operazione*/$indici = array("codiceArticolo" => 0,"cat1" => 1,"cat2" => 2,"cat3" => 3,"cat4" => 4,"cat5" => 5,"marca" => 6,"codiceVariante" => 7,'disponibilita' => 8,'ordiniFornitori' => 9,'operazione' => 10);$righeDaSaltareSeBatch = 0;if($batch != 0 && $iterazione != 0){$rrr = $batch * $iterazione; //Esempio iterazione = 1 batch = 5000 = 5000$righeDaSaltareSeBatch = $rrr - $batch;}try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {//Se attivata la funzionalità batch salto le righe che non devo importareif($righeDaSaltareSeBatch > 0){if (($contatore + $row) < $righeDaSaltareSeBatch){$contatore++;continue;}}if($righeDaSaltareSeBatch > 0 && ($contatore + $row - $righeDaSaltareSeBatch) > $batch ){$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, "Batch completato: Iterazione: " . strval($iterazione) . " --- Batch: " . strval(($batch)) . " ( Da riga:" . strval($righeDaSaltareSeBatch + 1) . " a riga: " . strval(($contatore + $row)) . " )", null, $collegamentoRnd, 'ImportazioneController', 'caricaDisponibilita');break;}if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$articolo = null;if ($data[$indici['codiceArticolo']] != '') {$articolo = $repoArticoli->findOneBy(array('codice' => $data[$indici['codiceArticolo']]));}if ($articolo) {$cat1 = null; $cat2 = null; $cat3 = null; $cat4 = null; $cat5 = null;if($data[$indici['cat1']] != '')$cat1 = $repoCategoria->findOneBy(array('codice' => $data[$indici['cat1']]));if($data[$indici['cat2']] != '')$cat2 = $repoCategoria->findOneBy(array('codice' => $data[$indici['cat2']]));if($data[$indici['cat3']] != '')$cat3 = $repoCategoria->findOneBy(array('codice' => $data[$indici['cat3']]));if($data[$indici['cat4']] != '')$cat4 = $repoCategoria->findOneBy(array('codice' => $data[$indici['cat4']]));if($data[$indici['cat5']] != '')$cat5 = $repoCategoria->findOneBy(array('codice' => $data[$indici['cat5']]));$mappa = $this->servizi->ritornaMappaCategoriaArticoliSeInserita($articolo, $cat1, $cat2, $cat3, $cat4, $data[$indici['marca']], $cat5);$variante = null;if($data[$indici['codiceVariante']] != '')$variante = $repoVarianti->findOneBy(array('mappa' => $mappa, 'codiceVariante' => $data[$indici['codiceVariante']]));if($mappa){$mappa->setDisponibile(str_replace(',', '.', $data[$indici['disponibilita']]));$mappa->setOrdiniFornitori(str_replace(',', '.', $data[$indici['ordiniFornitori']]));$em->persist($mappa);$query_eseguite++;}else{$errori .= ("RIGA: " . ($contatore + $row) . ' -- Mappa con codice articolo: ' . $data[$indici['codiceArticolo']] . ' non trovato!\n');}} else {$errori .= ("RIGA: " . ($contatore + $row) . ' -- Articolo con codice ' . $data[$indici['codiceArticolo']] . ' non trovato!\n');}$row++;}$em->flush();$em->clear();}else{$errori .= "Impossibile aprire il file!";}$row = $contatore + $row;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaDisponibilita');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), var_export($errori, true), false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaDisponibilita');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex->getTraceAsString(), false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaDisponibilita');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}}else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaDisponibilita');return new Response("ERRORE PERMESSO");}}/*** @Route("/caricaRisorseAnagrafiche/{svuota}", name="carica_risorse_anagrafiche", defaults={"svuota"="0"})*/public function caricaRisorseAnagrafiche(Request $request, $svuota){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 900);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$user = $this->servizi->OttieniUtenteCorrente();$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$repoRisorse = $this->servizi->doctrine->getRepository(RisorseAnagrafiche::class);$errori = "";$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaRisorseAnagrafiche/' . $svuota . ' --- Inizio l\' importazione delle scontistiche delle anagrafiche', null, $collegamentoRnd, 'ImportazioneController', 'caricaRisorseAnagrafiche');if($svuota == '1'){$this->servizi->doctrine->getConnection()->executeQuery('TRUNCATE TABLE risorse_anagrafiche;');$this->servizi->doctrine->getConnection()->executeQuery('TRUNCATE TABLE risorse_anagrafiche_colonne;');$this->servizi->doctrine->getConnection()->executeQuery('TRUNCATE TABLE risorse_anagrafiche_colonne_valori;');}$root_path = $pathFileBase . "risorse_anagrafiche.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$query_eseguite = 0;$row = 0;$batch_size = 50;/** Index Campo0 codice_anagrafica1 tipo_risorsa2 path_file3 nome_file4 identificativo_unico_risorsa5 categoria6 operazione7 visibile a cliente8 dataRisorsa9 codice_categoria110 codice_categoria211 codice_categoria312 codice_categoria413 codice_categoria514 codice_articolo15 marca16 codice_dimensione117 codice_dimensione218 codice_dimensione319 codice_dimensione420 codice_dimensione521 chiave ricerca esterno22 recupera_con_webservice*/$indici = array("codiceAnagrafica" => 0,"tipoRisorsa" => 1,"pathFile" => 2,"nomeFile" => 3,"identificativoUnicoRisorsa" => 4,"categoria" => 5,"operazione" => 6,"visibileACliente" => 7,'dataRisorsa' => 8,'codiceCategoria1' => 9,'codiceCategoria2' => 10,'codiceCategoria3' => 11,'codiceCategoria4' => 12,'codiceCategoria5' => 13,'codiceArticolo' => 14,'marca' => 15,'codiceDimensione1' => 16,'codiceDimensione2' => 17,'codiceDimensione3' => 18,'codiceDimensione4' => 19,'codiceDimensione5' => 20,'chiaveRicercaEsterna' => 21,'recuperaConWebservice' => 22);$tipiRisorsaAutorizzati = $this->servizi->RitornaArrayTipoRisorsa();$tt = array();foreach ($tipiRisorsaAutorizzati as $key) {array_push($tt, $key);}$tipiRisorsaAutorizzati = $tt;try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}if(in_array($data[$indici['tipoRisorsa']], $tipiRisorsaAutorizzati)) {$risorsa = $repoRisorse->findOneBy(array('identificativoUnico' => $data[$indici['identificativoUnicoRisorsa']]));if($data[$indici['operazione']] == 'E'){if($risorsa){$em->remove($risorsa);$query_eseguite++;}}else {if (!$risorsa) {$risorsa = new RisorseAnagrafiche();$risorsa->setDataModifica(new \DateTime());$risorsa->setDataCreazione(new \DateTime());$risorsa->setCodiceAnagrafica($data[$indici['codiceAnagrafica']]);$risorsa->setCategoria($data[$indici['categoria']]);$risorsa->setIdentificativoUnico($data[$indici['identificativoUnicoRisorsa']]);$risorsa->setNomeFile($data[$indici['nomeFile']]);$risorsa->setPathFile($data[$indici["pathFile"]]);$risorsa->setTipoRisorsa($data[$indici['tipoRisorsa']]);if(count($data) >= 8)$risorsa->setVisibileAlCliente($data[$indici["visibileACliente"]]);if(count($data) >= 9){$valore = $data[$indici['dataRisorsa']];if($valore != '' ){$format = 'Ymd';if(strpos($valore, '-') !== false)$format = 'Y-m-d';$risorsa->setDataRisorsa(\DateTime::createFromFormat($format, $valore));}}if(count($data) >= 10){$risorsa->setCodiceCategoria1($data[$indici['codiceCategoria1']]);$risorsa->setCodiceCategoria2($data[$indici['codiceCategoria2']]);$risorsa->setCodiceCategoria3($data[$indici['codiceCategoria3']]);$risorsa->setCodiceCategoria4($data[$indici['codiceCategoria4']]);$risorsa->setCodiceCategoria5($data[$indici['codiceCategoria5']]);$risorsa->setCodiceArticolo($data[$indici['codiceArticolo']]);$risorsa->setMarca($data[$indici['marca']]);$risorsa->setCodiceDimensione1($data[$indici['codiceDimensione1']]);$risorsa->setCodiceDimensione2($data[$indici['codiceDimensione2']]);$risorsa->setCodiceDimensione3($data[$indici['codiceDimensione3']]);$risorsa->setCodiceDimensione4($data[$indici['codiceDimensione4']]);$risorsa->setCodiceDimensione5($data[$indici['codiceDimensione5']]);}if (count($data) > $indici['chiaveRicercaEsterna']){$risorsa->setChiaveRicercaEsterno($data[$indici['chiaveRicercaEsterna']]);}if (count($data) > $indici['recuperaConWebservice']){$risorsa->setRecuperaConWebservice(self::verificaBool($data[$indici['recuperaConWebservice']]));}$em->persist($risorsa);$query_eseguite++;} else {$risorsa->setDataModifica(new \DateTime());$risorsa->setCodiceAnagrafica($data[$indici['codiceAnagrafica']]);$risorsa->setCategoria($data[$indici['categoria']]);$risorsa->setNomeFile($data[$indici['nomeFile']]);$risorsa->setPathFile($data[$indici["pathFile"]]);$risorsa->setTipoRisorsa($data[$indici['tipoRisorsa']]);if(count($data) > 8)$risorsa->setVisibileAlCliente($data[$indici["visibileACliente"]]);if(count($data) >= 9){$valore = $data[$indici['dataRisorsa']];if($valore != '' ){$format = 'Ymd';if(strpos($valore, '-') !== false)$format = 'Y-m-d';$risorsa->setDataRisorsa(\DateTime::createFromFormat($format, $valore));}}if(count($data) >= 10){$risorsa->setCodiceCategoria1($data[$indici['codiceCategoria1']]);$risorsa->setCodiceCategoria2($data[$indici['codiceCategoria2']]);$risorsa->setCodiceCategoria3($data[$indici['codiceCategoria3']]);$risorsa->setCodiceCategoria4($data[$indici['codiceCategoria4']]);$risorsa->setCodiceCategoria5($data[$indici['codiceCategoria5']]);$risorsa->setCodiceArticolo($data[$indici['codiceArticolo']]);$risorsa->setMarca($data[$indici['marca']]);$risorsa->setCodiceDimensione1($data[$indici['codiceDimensione1']]);$risorsa->setCodiceDimensione2($data[$indici['codiceDimensione2']]);$risorsa->setCodiceDimensione3($data[$indici['codiceDimensione3']]);$risorsa->setCodiceDimensione4($data[$indici['codiceDimensione4']]);$risorsa->setCodiceDimensione5($data[$indici['codiceDimensione5']]);}if (count($data) > $indici['chiaveRicercaEsterna']){$risorsa->setChiaveRicercaEsterno($data[$indici['chiaveRicercaEsterna']]);}if (count($data) > $indici['recuperaConWebservice']){$risorsa->setRecuperaConWebservice(self::verificaBool($data[$indici['recuperaConWebservice']]));}$em->persist($risorsa);$query_eseguite++;}}}else{$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Tipo risorsa: ' . $data[$indici['tipoRisorsa']] . ' non riconosciuto!', $user, $collegamentoRnd, 'ImportazioneController', 'caricaRisorseAnagrafiche');}$row++;}$em->flush();$em->clear();}else{$errori .= "Impossibile aprire il file!";}$row = $contatore + $row;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaRisorseAnagrafiche');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), var_export($errori, true), false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaRisorseAnagrafiche');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex->getTraceAsString(), false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaRisorseAnagrafiche');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaRisorseAnagrafiche');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaReport/{svuota}", name="carica_report", defaults={"svuota"="0"})*/public function caricaReport(Request $request, $svuota){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 900);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$user = $this->servizi->OttieniUtenteCorrente();$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$repo = $this->servizi->doctrine->getRepository(Report::class);$errori = "";$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaReport/' . $svuota . ' --- Inizio l\' importazione dei report', null, $collegamentoRnd, 'ImportazioneController', 'caricaReport');if($svuota == '1'){$this->servizi->doctrine->getConnection()->executeQuery('TRUNCATE TABLE report;');}$root_path = $pathFileBase . "report.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$query_eseguite = 0;$row = 0;$batch_size = 50;/** 0 identificativo_univoco1 titolo2 sottotitolo3 agente4 categoria5 codice_cliente6 chiave_ricerca_esterno7 recupera_con_webservice8 livello_permesso9 raw_html_contenuto10 path_file_recupero_webservice_custom11 operazione12 raw_html_header*/$indici = array("identificativoUnivoco" => 0,"titolo" => 1,"sottotitolo" => 2,"agente" => 3,"categoria" => 4,"codiceCliente" => 5,"chiaveRicercaEsterno" => 6,"recuperaConWebservice" => 7,'livelloPermesso' => 8,'rawHtmlContenuto' => 9,'pathFileRecuperoWebserviceCustom' => 10,'operazione' => 11,'rawHtmlHeader' => 12);try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$report = $repo->findOneBy(array('identificativoUnico' => $data[$indici['identificativoUnivoco']]));if ($data[$indici['operazione']] == 'E') {if ($report) {$em->remove($report);$query_eseguite++;}} else {if (!$report) {$report = new Report();$report->setDataCreazione(new \DateTime());$report->setIdentificativoUnico($data[$indici['identificativoUnivoco']]);$report->setAttivo(true);}$report->setTitolo($data[$indici['titolo']]);$report->setSottoTitolo($data[$indici['sottotitolo']]);$report->setAgente($data[$indici['agente']]);$report->setCategoria($data[$indici['categoria']]);$report->setCodiceCliente($data[$indici['codiceCliente']]);$report->setChiaveRicercaEsterno($data[$indici['chiaveRicercaEsterno']]);$report->setLivelloPermesso($data[$indici['livelloPermesso']]);$report->setRecuperaConWebservice(self::verificaBool($data[$indici['recuperaConWebservice']]));$report->setRawHtmlContenuto($data[$indici['rawHtmlContenuto']]);$report->setPathFileRecuperoWebserviceCustom($data[$indici['pathFileRecuperoWebserviceCustom']]);$report->setRawHtmlHeader($data[$indici['rawHtmlHeader']]);$em->persist($report);$query_eseguite++;}$row++;}$em->flush();$em->clear();}else{$errori .= "Impossibile aprire il file!";}$row = $contatore + $row;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaReport');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), var_export($errori, true), false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaReport');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex->getTraceAsString(), false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaReport');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaReport');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaDisponibilitaPerFascia/{svuota}/{batch}/{iterazione}", name="carica_disponibilita_per_fascia", defaults={"svuota"="0", "batch"="0", "iterazione"="0"})*/public function caricaDisponibilitaPerFascia(Request $request, $svuota, $batch, $iterazione){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', -1);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$user = $this->servizi->OttieniUtenteCorrente();$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$repoMappa = $this->servizi->doctrine->getRepository(MappaCategorieArticoli::class);$repoArticoli = $this->servizi->doctrine->getRepository(Articoli::class);$repo = $this->servizi->doctrine->getRepository(DisponibilitaAFasce::class);$repoVariante = $this->servizi->doctrine->getRepository(Varianti::class);$errori = "";$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaDisponibilitaPerFascia/' . $svuota . ' --- Inizio l\' importazione delle disponibilità per fasce', null, $collegamentoRnd, 'ImportazioneController', 'caricaDisponibilitaPerFascia');if($svuota == '1'){$this->servizi->doctrine->getConnection()->executeQuery('TRUNCATE TABLE disponibilita_afasce;');}$root_path = $pathFileBase . "disponibilita_per_fascia.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$query_eseguite = 0;$row = 0;$batch_size = 50;/*0 codice articolo1 codice categoria 12 codice categoria 23 codice categoria 34 codice categoria 45 codice categoria 56 marca7 disponibilita8 etichetta9 operazione10 principale11 codice_variante*/$indici = array("codiceArticolo" => 0,"categoria1" => 1,"categoria2" => 2,"categoria3" => 3,"categoria4" => 4,"categoria5" => 5,"marca" => 6,"disponiblita" => 7,'etichetta' => 8,'operazione' => 9,'principale' => 10,'codice_variante' => 11);$righeDaSaltareSeBatch = 0;if($batch != 0 && $iterazione != 0){$rrr = $batch * $iterazione; //Esempio iterazione = 1 batch = 5000 = 5000$righeDaSaltareSeBatch = $rrr - $batch;}try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {//Se attivata la funzionalità batch salto le righe che non devo importareif($righeDaSaltareSeBatch > 0){if (($contatore + $row) < $righeDaSaltareSeBatch){$contatore++;continue;}}if($righeDaSaltareSeBatch > 0 && ($contatore + $row - $righeDaSaltareSeBatch) > $batch ){$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, "Batch completato: Iterazione: " . strval($iterazione) . " --- Batch: " . strval(($batch)) . " ( Da riga:" . strval($righeDaSaltareSeBatch + 1) . " a riga: " . strval(($contatore + $row)) . " )", null, $collegamentoRnd, 'ImportazioneController', 'caricaDisponibilitaPerFascia');break;}if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$articolo = $repoArticoli->findOneBy(array('codice' => $data[$indici['codiceArticolo']]));if($articolo){$qbMappa = $repoMappa->createQueryBuilder('mappa_categorie_articoli')->leftJoin('mappa_categorie_articoli.categoria1', 'cat1')->leftJoin('mappa_categorie_articoli.categoria2', 'cat2')->leftJoin('mappa_categorie_articoli.categoria3', 'cat3')->leftJoin('mappa_categorie_articoli.categoria4', 'cat4')->leftJoin('mappa_categorie_articoli.categoria5', 'cat5')->leftJoin('mappa_categorie_articoli.articolo', 'art')->where('art.codice = :art')->setParameter('art', $articolo->getCodice());if($data[$indici['categoria1']] != ''){$qbMappa = $qbMappa->andWhere('cat1.codice = :cat1')->setParameter('cat1', $data[$indici['categoria1']]);}else{$qbMappa = $qbMappa->andWhere('cat1.codice IS NULL');}if($data[$indici['categoria2']] != ''){$qbMappa = $qbMappa->andWhere('cat2.codice = :cat2')->setParameter('cat2', $data[$indici['categoria2']]);}else{$qbMappa = $qbMappa->andWhere('cat2.codice IS NULL');}if($data[$indici['categoria3']] != ''){$qbMappa = $qbMappa->andWhere('cat3.codice = :cat3')->setParameter('cat3', $data[$indici['categoria3']]);}else{$qbMappa = $qbMappa->andWhere('cat3.codice IS NULL');}if($data[$indici['categoria4']] != ''){$qbMappa = $qbMappa->andWhere('cat4.codice = :cat4')->setParameter('cat4', $data[$indici['categoria4']]);}else{$qbMappa = $qbMappa->andWhere('cat4.codice IS NULL');}if($data[$indici['categoria5']] != ''){$qbMappa = $qbMappa->andWhere('cat5.codice = :cat5')->setParameter('cat5', $data[$indici['categoria5']]);}else{$qbMappa = $qbMappa->andWhere('cat5.codice IS NULL');}$qbMappa = $qbMappa->andWhere('mappa_categorie_articoli.marca = :marca')->setParameter('marca', $data[$indici['marca']])->setMaxResults(1)->getQuery()->getResult();if(count($qbMappa) > 0){$mappa = $qbMappa[0];$variante = $repoVariante->findOneBy(array('mappa' => $mappa, 'codiceVariante' => $data[$indici['codice_variante']]));$entita = $repo->findOneBy(array('etichetta' => $data[$indici['etichetta']], 'articolo' => $articolo, 'mappa_categoria_articolo' => $mappa, 'variante' => $variante));if($data[$indici['operazione']] == 'E' && $entita != null){$em->remove($entita);$em->flush();}else if ($data[$indici['operazione']] != 'E'){if(!$entita) {$entita = new DisponibilitaAFasce();$entita->setArticolo($articolo);$entita->setVariante($variante);$entita->setMappaCategoriaArticolo($mappa);$entita->setEtichetta($data[$indici['etichetta']]);$entita->setDataCreazione(new \DateTime());}$entita->setDataModifica(new \DateTime());$entita->setPrincipale($data[$indici['principale']] == '1' ? true : false);$entita->setDisponibilita(str_replace(',', '.', $data[$indici['disponiblita']]));$em->persist($entita);$query_eseguite++;}}else{$errori .= ("RIGA: " . ($contatore + $row) . ' -- Mappa non trovata ');}}else{$errori .= ("RIGA: " . ($contatore + $row) . ' - Articolo: ' . $data[$indici['codiceArticolo']] . ' non trovato!');}$row++;}$em->flush();$em->clear();}else{$errori .= "Impossibile aprire il file!";}$row = $contatore + $row;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaDisponibilitaPerFascia');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), var_export($errori, true), false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaDisponibilitaPerFascia');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex->getTraceAsString(), false, 'Errore importazione: (RIGA: ' . $contatore . ') :' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaDisponibilitaPerFascia');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaDisponibilitaPerFascia');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaAssociazioneArticoliTipoOrdine/{svuota}/{batch}/{iterazione}", name="carica_associazione_articoli_tipo_ordine", defaults={"svuota"="0", "batch"="0", "iterazione"="0"})*/public function caricaAssociazioneArticoliTipoOrdine(Request $request, $svuota, $batch, $iterazione){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', -1);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$repoMappa = $this->servizi->doctrine->getRepository(MappaCategorieArticoli::class);$repoArticoli = $this->servizi->doctrine->getRepository(Articoli::class);$repo = $this->servizi->doctrine->getRepository(AssociazioneArticoliTipoOrdine::class);$repoTipoOrdine = $this->servizi->doctrine->getRepository(TipoOrdine::class);$repoVariante = $this->servizi->doctrine->getRepository(Varianti::class);$errori = "";$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaAssociazioneArticoliTipoOrdine/' . $svuota . ' --- Inizio l\' importazione delle associazione articoli tipo ordine', null, $collegamentoRnd, 'ImportazioneController', 'caricaAssociazioneArticoliTipoOrdine');if($svuota == '1'){$this->servizi->doctrine->getConnection()->executeQuery('TRUNCATE TABLE associazione_articoli_tipo_ordine;');}$root_path = $pathFileBase . "associazione_articoli_tipo_ordine.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$query_eseguite = 0;$row = 0;$batch_size = 50;/*0 codice articolo1 codice categoria 12 codice categoria 23 codice categoria 34 codice categoria 45 codice categoria 56 marca7 codice_variante8 codice_tipo_ordine9 operazione*/$indici = array("codiceArticolo" => 0,"categoria1" => 1,"categoria2" => 2,"categoria3" => 3,"categoria4" => 4,"categoria5" => 5,"marca" => 6,"codiceVariante" => 7,'codiceTipoOrdine' => 8,'operazione' => 9);$righeDaSaltareSeBatch = 0;if($batch != 0 && $iterazione != 0){$rrr = $batch * $iterazione; //Esempio iterazione = 1 batch = 5000 = 5000$righeDaSaltareSeBatch = $rrr - $batch;}try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {//Se attivata la funzionalità batch salto le righe che non devo importareif($righeDaSaltareSeBatch > 0){if (($contatore + $row) < $righeDaSaltareSeBatch){$contatore++;continue;}}if($righeDaSaltareSeBatch > 0 && ($contatore + $row - $righeDaSaltareSeBatch) > $batch ){$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, "Batch completato: Iterazione: " . strval($iterazione) . " --- Batch: " . strval(($batch)) . " ( Da riga:" . strval($righeDaSaltareSeBatch + 1) . " a riga: " . strval(($contatore + $row)) . " )", null, $collegamentoRnd, 'ImportazioneController', 'caricaAssociazioneArticoliTipoOrdine');break;}if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$articolo = $repoArticoli->findOneBy(array('codice' => $data[$indici['codiceArticolo']]));if($articolo){$qbMappa = $repoMappa->createQueryBuilder('mappa_categorie_articoli')->leftJoin('mappa_categorie_articoli.categoria1', 'cat1')->leftJoin('mappa_categorie_articoli.categoria2', 'cat2')->leftJoin('mappa_categorie_articoli.categoria3', 'cat3')->leftJoin('mappa_categorie_articoli.categoria4', 'cat4')->leftJoin('mappa_categorie_articoli.categoria5', 'cat5')->leftJoin('mappa_categorie_articoli.articolo', 'art')->where('art.codice = :art')->setParameter('art', $articolo->getCodice());if($data[$indici['categoria1']] != ''){$qbMappa = $qbMappa->andWhere('cat1.codice = :cat1')->setParameter('cat1', $data[$indici['categoria1']]);}else{$qbMappa = $qbMappa->andWhere('mappa_categorie_articoli.categoria1 IS NULL');}if($data[$indici['categoria2']] != ''){$qbMappa = $qbMappa->andWhere('cat2.codice = :cat2')->setParameter('cat2', $data[$indici['categoria2']]);}else{$qbMappa = $qbMappa->andWhere('mappa_categorie_articoli.categoria2 IS NULL');}if($data[$indici['categoria3']] != ''){$qbMappa = $qbMappa->andWhere('cat3.codice = :cat3')->setParameter('cat3', $data[$indici['categoria3']]);}else{$qbMappa = $qbMappa->andWhere('mappa_categorie_articoli.categoria3 IS NULL');}if($data[$indici['categoria4']] != ''){$qbMappa = $qbMappa->andWhere('cat4.codice = :cat4')->setParameter('cat4', $data[$indici['categoria4']]);}else{$qbMappa = $qbMappa->andWhere('mappa_categorie_articoli.categoria4 IS NULL');}if($data[$indici['categoria5']] != ''){$qbMappa = $qbMappa->andWhere('cat5.codice = :cat5')->setParameter('cat5', $data[$indici['categoria5']]);}else{$qbMappa = $qbMappa->andWhere('mappa_categorie_articoli.categoria5 IS NULL');}$qbMappa = $qbMappa->andWhere('mappa_categorie_articoli.marca = :marca')->setParameter('marca', $data[$indici['marca']])->setMaxResults(1)->getQuery();$query = $qbMappa->getSQL();$risultati = $qbMappa->getResult();if(count($risultati) > 0){$mappa = $risultati[0];$variante = $data[$indici['codiceVariante']] != '' ? $repoVariante->findOneBy(array('mappa' => $mappa, 'codiceVariante' => $data[$indici['codiceVariante']])) : null;$tipoOrdine = $repoTipoOrdine->findOneBy(array('codice' => $data[$indici['codiceTipoOrdine']]));if($tipoOrdine) {$entita = $repo->findOneBy(array('tipoOrdine' => $tipoOrdine, 'articolo' => $articolo, 'mappaCategoriaArticolo' => $mappa, 'variante' => $variante));if ($data[$indici['operazione']] == 'E' && $entita != null) {$em->remove($entita);$em->flush();} else if ($data[$indici['operazione']] != 'E') {if (!$entita) {$entita = new AssociazioneArticoliTipoOrdine();$entita->setArticolo($articolo);$entita->setVariante($variante);$entita->setMappaCategoriaArticolo($mappa);$entita->setTipoOrdine($tipoOrdine);$entita->setDataCreazione(new \DateTime());}$entita->setDataModifica(new \DateTime());$em->persist($entita);$query_eseguite++;}}else{$errori .= ("RIGA: " . ($contatore + $row) . ' -- Tipo ordine non trovato: ' . $data[$indici['codiceTipoOrdine']] . "\n<br/>");}}else{$errori .= ("RIGA: " . ($contatore + $row) . ' -- Mappa non trovata - Art:' . $data[$indici['codiceArticolo']] . ' - Cat: ' . $data[$indici['categoria1']] . '-' . $data[$indici['categoria2']] . '-' .$data[$indici['categoria3']] . '-' .$data[$indici['categoria4']] . '-' .$data[$indici['categoria5']] . '- Marca: ' . $data[$indici['marca']] . '<br/>Query:' . $query . "\n<br/><br/>");}}else{$errori .= ("RIGA: " . ($contatore + $row) . ' - Articolo: ' . $data[$indici['codiceArticolo']] . ' non trovato!' . "\n<br/>");}$row++;}$em->flush();$em->clear();}else{$errori .= "Impossibile aprire il file!";}$row = $contatore + $row;$this->generaAlberoAction($request, "1");if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaAssociazioneArticoliTipoOrdine');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), var_export($errori, true), false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaAssociazioneArticoliTipoOrdine');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex->getTraceAsString(), false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaAssociazioneArticoliTipoOrdine');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaAssociazioneArticoliTipoOrdine');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaTipoOrdine/{svuota}", name="carica_tipo_ordine", defaults={"svuota"="0"})*/public function caricaTipoOrdine(Request $request, $svuota){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 900);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$repo = $this->servizi->doctrine->getRepository(TipoOrdine::class);$errori = "";$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaTipoOrdine/' . $svuota . ' --- Inizio l\' importazione dei tipi ordine', null, $collegamentoRnd, 'ImportazioneController', 'caricaTipoOrdine');if($svuota == '1'){$this->servizi->doctrine->getConnection()->executeQuery('TRUNCATE TABLE tipo_ordine;');}$root_path = $pathFileBase . "tipo_ordine.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$query_eseguite = 0;$row = 0;$batch_size = 50;/*0 codice1 descrizione2 testo visualizzato3 codice esportazione4 operazione5 mostra tutto6 nascondi disponibilita*/$indici = array('codice' => 0,'descrizione' => 1,'testoVisualizzato' => 2,'codiceEsportazione' => 3,'operazione' => 4,'mostraTutto' => 5,'nascondiDisponibilita' => 6);try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$tipoOrdine = $repo->findOneBy(array('codice' => $data[$indici['codice']]));if ($tipoOrdine && $data[$indici['operazione']] == 'E') {$em->remove($tipoOrdine);$query_eseguite++;} else {if (!$tipoOrdine) {$tipoOrdine = new TipoOrdine();$tipoOrdine->setDataCreazione(new \DateTime());$tipoOrdine->setCodice($data[$indici['codice']]);}$tipoOrdine->setDescrizione($data[$indici['descrizione']]);$tipoOrdine->setTestoVisualizzato($data[$indici['testoVisualizzato']]);$tipoOrdine->setCodiceEsportazione($data[$indici['codiceEsportazione']]);$tipoOrdine->setMostraTutto($data[$indici['mostraTutto']] == '1' ? true : false);if(count($data) >= 5){$tipoOrdine->setNascondiDisponibilita($data[$indici['nascondiDisponibilita']] == '1' ? true : false);}$tipoOrdine->setDataModifica(new \DateTime());$tipoOrdine->setUtenteModifica($this->servizi->OttieniUtenteCorrente());$em->persist($tipoOrdine);$query_eseguite++;}$em->flush();$em->clear();$row = $contatore + $row;}}else{$errori .= "Impossibile aprire il file!";}if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaTipoOrdine');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), var_export($errori, true), false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaTipoOrdine');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex->getTraceAsString(), false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaTipoOrdine');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaTipoOrdine');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/aggiornaOrdini/{batch}/{iterazione}", name="aggiorna_ordini", defaults={"batch"="0", "iterazione"="0"})*/public function aggiornaOrdini(Request $request, $batch, $iterazione){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', -1);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$repo = $this->servizi->doctrine->getRepository(Ordini::class);$errori = "";$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /aggiornaOrdini --- Inizio l\' aggiornamento degli ordini', null, $collegamentoRnd, 'ImportazioneController', 'aggiornaOrdini');$root_path = $pathFileBase . "aggiornamento_ordini.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$query_eseguite = 0;$row = 0;$batch_size = 50;/*0 id_ordine1 fattura2 nome_file_fattura3 ddt4 nome_file_ddt5 ordine6 nome_file_ordine7 offerta8 nome_file_offerta9 url_tracking_vettore10 vettore11 codice_tracking_vettore*/$indici = array('idOrdine' => 0,'fattura' => 1,'nomeFileFattura' => 2,'ddt' => 3,'nomeFileDdt' => 4,'ordine' => 5,'nomeFileOrdine' => 6,'offerta' => 7,'nomeFileOfferta' => 8,'urlTrackingVettore' => 9,'vettore' => 10,'codiceTrackingVettore' => 11);$righeDaSaltareSeBatch = 0;if($batch != 0 && $iterazione != 0){$rrr = $batch * $iterazione; //Esempio iterazione = 1 batch = 5000 = 5000$righeDaSaltareSeBatch = $rrr - $batch;}try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {//Se attivata la funzionalità batch salto le righe che non devo importareif($righeDaSaltareSeBatch > 0){if (($contatore + $row) < $righeDaSaltareSeBatch){$contatore++;continue;}}if($righeDaSaltareSeBatch > 0 && ($contatore + $row - $righeDaSaltareSeBatch) > $batch ){$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, "Batch completato: Iterazione: " . strval($iterazione) . " --- Batch: " . strval(($batch)) . " ( Da riga:" . strval($righeDaSaltareSeBatch + 1) . " a riga: " . strval(($contatore + $row)) . " )", null, $collegamentoRnd, 'ImportazioneController', 'aggiornaOrdini');break;}if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}/** $ordine Ordini */$ordine = $repo->find($data[$indici['idOrdine']]);if($ordine) {$ordine->setFattura($data[$indici["fattura"]]);$ordine->setNomeFileFattura($data[$indici["nomeFileFattura"]]);$ordine->setDdt($data[$indici['ddt']]);$ordine->setNomeFileDdt($data[$indici['nomeFileDdt']]);$ordine->setOrdine($data[$indici["ordine"]]);$ordine->setNomeFileOrdine($data[$indici["nomeFileOrdine"]]);$ordine->setOfferta($data[$indici["offerta"]]);$ordine->setNomeFileOfferta($data[$indici["nomeFileOfferta"]]);$ordine->setUrlTrackingVettore($data[$indici["urlTrackingVettore"]]);$ordine->setVettore($data[$indici["vettore"]]);$ordine->setCodiceTrackingVettore($data[$indici["codiceTrackingVettore"]]);$em->persist($ordine);$query_eseguite++;}else{$errori .= ("Ordine cond id: " . $data[$indici['idOrdine']] . " non trovato!");}$row = $contatore + $row;}$em->flush();$em->clear();}else{$errori .= "Impossibile aprire il file!";}if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'aggiornaOrdini');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), var_export($errori, true), false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'aggiornaOrdini');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex->getTraceAsString(), false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'aggiornaOrdini');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'aggiornaOrdini');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaFiltriVisualizzazioneArticoli/{svuota}", name="carica_filtri_visualizzazione_articoli", defaults={"svuota"="0"})*/public function caricaFiltriVisualizzazioneArticoli(Request $request, $svuota){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 900);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$repoUser = $this->servizi->doctrine->getRepository(User::class);$repo = $this->servizi->doctrine->getRepository(FiltroVisualizzazioneArticoliClienti::class);$errori = "";$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaFiltriVisualizzazioneArticoli/' . $svuota . ' --- Inizio l\' importazione dei filtri visualizzazione articoli', null, $collegamentoRnd, 'ImportazioneController', 'caricaFiltriVisualizzazioneArticoli');if($svuota == '1'){$this->servizi->doctrine->getConnection()->exec('UPDATE fos_user SET filtro_visualizzazione_articoli_clienti_id = NULL;');}$root_path = $pathFileBase . "filtri_visualizzazione_articoli.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$query_eseguite = 0;$row = 0;$batch_size = 50;/*0 username1 categorie2 mostra3 operazione*/$indici = array("username" => 0,"categorie" => 1,"mostra" => 2,"operazione" => 3);try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$utente = $repoUser->findOneBy(array('username' => $data[$indici['username']]));if ($utente) {//Verifico se il filtro esiste$entita = $repo->findOneBy(array('elencoCategorie' => $data[$indici['categorie']], 'mostra' => $data[$indici['mostra']] == '1' ? true : false));if ($entita != null) {$utente->setFiltroVisualizzazioneArticoliClienti($entita);$em->persist($utente);} else {$entita = new FiltroVisualizzazioneArticoliClienti();$entita->setNome(randomString(15));$entita->setUtenteModifica($this->servizi->OttieniUtenteCorrente());$entita->setDataModifica(new \DateTime());$entita->setDataCreazione(new \DateTime());$entita->setMostra($data[$indici['mostra']] == '1' ? true : false);$entita->setElencoCategorie($data[$indici['categorie']]);$em->persist($entita);$utente->setFiltroVisualizzazioneArticoliClienti($entita);$em->persist($utente);$query_eseguite++;}} else {$errori .= ("RIGA: " . $contatore . ' - Utente con username: ' . $data[$indici['username']] . ' non trovato!');}$row++;}$em->flush();$em->clear();$row = $contatore + $row;}else{$errori .= "Impossibile aprire il file!";}if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaFiltriVisualizzazioneArticoli');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), var_export($errori, true), false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaFiltriVisualizzazioneArticoli');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex->getTraceAsString(), false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaFiltriVisualizzazioneArticoli');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaFiltriVisualizzazioneArticoli');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaScontiClientiAnagrafiche/{svuota}/{batch}/{iterazione}", name="carica_sconti_clienti_anagrafiche", defaults={"svuota"="0", "batch"="0", "iterazione"="0"})*/public function caricaScontiAnagraficheAction(Request $request, $svuota, $batch, $iterazione){$rit = ['esecuzione' => '','chiamata' => '','identificativo_chiamata' => '','errori' => '','messaggio' => ''];$collegamentoRnd = $this->servizi->randomString2();$rit['identificativo_chiamata'] = $collegamentoRnd;$rit['chiamata'] = $request->getRequestUri();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 1800);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaScontiAnagrafiche/' . $svuota . ' --- Inizio l\' importazione delle scontistiche delle anagrafiche', null, $collegamentoRnd, 'ImportazioneController', 'caricaScontiClientiAnagrafiche');$repoScontiClientiBase = $this->servizi->doctrine->getRepository(ScontiAnagrafiche::class);$errori = "";$connection = $this->servizi->doctrine->getConnection();if($svuota == "1"){$em = $this->servizi->doctrine->getManager();$connection->beginTransaction();try {$connection->query("SET FOREIGN_KEY_CHECKS=0;");$connection->executeUpdate("TRUNCATE `sconti_anagrafiche`;");$connection->query("SET FOREIGN_KEY_CHECKS=1;");$connection->commit();}catch (\Exception|\Throwable|\Throwable $ex){$this->servizi->DebuggaException($ex, "Errore pulizia sconti anagrafiche", false, null, $collegamentoRnd, 'ImportazioneController', 'caricaScontiClientiAnagrafiche');}}$root_path = $pathFileBase . "articoli_sconti.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$query_eseguite = 0;$row = 0;$batch_size = 50;/** Index Campo0 codice_anagrafica1 codice_articolo2 codice_variante3 etichetta4 sconto5 operazione6 applica_sempre7 codice_categorie*/$indici = array("codiceAnagrafica" => 0,"codiceGruppoAnagrafica" => '',"codiceGruppoArticoli" => '',"codiceArticolo" => 1,"codiceVariante" => 2,"etichetta" => 3,"sconto" => 4,"operazione" => 5,'applicaSempre' => 6,'codiceGruppoCategorie' => 7);$righeDaSaltareSeBatch = 0;if($batch != 0 && $iterazione != 0){$rrr = $batch * $iterazione; //Esempio iterazione = 1 batch = 5000 = 5000$righeDaSaltareSeBatch = $rrr - $batch;}try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {//Se attivata la funzionalità batch salto le righe che non devo importareif($righeDaSaltareSeBatch > 0){if (($contatore + $row) < $righeDaSaltareSeBatch){$contatore++;continue;}}if($righeDaSaltareSeBatch > 0 && ($contatore + $row - $righeDaSaltareSeBatch) > $batch ){$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, "Batch completato: Iterazione: " . strval($iterazione) . " --- Batch: " . strval(($batch)) . " ( Da riga:" . strval($righeDaSaltareSeBatch + 1) . " a riga: " . strval(($contatore + $row)) . " )", null, $collegamentoRnd, 'ImportazioneController', 'caricaScontiClientiAnagrafiche');break;}if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');$criterioRicerca = ['codiceAnagrafica' => $indici["codiceAnagrafica"] !== '' ? $data[$indici["codiceAnagrafica"]] : "",'codiceGruppoAnagrafica' => $indici["codiceGruppoAnagrafica"] !== '' ? $data[$indici["codiceGruppoAnagrafica"]] : "",'codiceGruppoArticoli' => $indici["codiceGruppoArticoli"] !== '' ? $data[$indici["codiceGruppoArticoli"]] : "",'codiceVariante' => $indici["codiceVariante"] !== '' ? $data[$indici["codiceVariante"]] : "",'codiceArticolo' => $indici["codiceArticolo"] !== '' ? $data[$indici["codiceArticolo"]] : "",];if(count($data) > 7){$criterioRicerca['codiceGruppoCategorie'] = $indici['codiceGruppoCategorie'] !== '' ? $data[$indici['codiceGruppoCategorie']] : "";}if(count($data) > 6 ) {$criterioRicerca['applicaSempre'] = $data[$indici['applicaSempre']] == '1' ? true : false;}$scontoPresente = $repoScontiClientiBase->findOneBy($criterioRicerca);if ($scontoPresente) {if ($data[$indici["operazione"]] == "E") {$em->remove($scontoPresente);$query_eseguite++;} else {$scontoPresente->setSconto($indici["sconto"] !== '' ? $data[$indici["sconto"]] : "");if(count($data) > 6 ){$scontoPresente->setApplicaSempre($data[$indici['applicaSempre']]);}$scontoPresente->setEtichetta($indici["etichetta"] !== '' ? $data[$indici["etichetta"]] : "");$scontoPresente->setDataModifica($now);$em->persist($scontoPresente);$query_eseguite++;}} else {$scontoPresente = new ScontiAnagrafiche();$scontoPresente->setCodiceAnagrafica($indici["codiceAnagrafica"] !== '' ? $data[$indici["codiceAnagrafica"]] : "");$scontoPresente->setCodiceGruppoAnagrafica($indici["codiceGruppoAnagrafica"] !== '' ? $data[$indici["codiceGruppoAnagrafica"]] : "");$scontoPresente->setCodiceGruppoArticoli($indici["codiceGruppoArticoli"] !== '' ? $data[$indici["codiceGruppoArticoli"]] : "");$scontoPresente->setCodiceArticolo($indici["codiceArticolo"] !== '' ? $data[$indici["codiceArticolo"]] : "");$scontoPresente->setCodiceVariante($indici["codiceVariante"] !== '' ? $data[$indici["codiceVariante"]] : "");$scontoPresente->setSconto($indici["sconto"] !== '' ? $data[$indici["sconto"]] : "");if(count($data) > 6 ){$scontoPresente->setApplicaSempre($data[$indici['applicaSempre']]);}if(count($data) > 7){$scontoPresente->setCodiceGruppoCategorie($indici['codiceGruppoCategorie'] !== '' ? $data[$indici['codiceGruppoCategorie']] : "");}$scontoPresente->setEtichetta($indici["etichetta"] !== '' ? $data[$indici["etichetta"]] : "");$scontoPresente->setDataCreazione($now);$scontoPresente->setDataModifica($now);$em->persist($scontoPresente);$query_eseguite++;}$row++;$em->flush();}$em->flush();$em->clear();}else{$errori .= "Impossibile aprire il file!";}$row = $contatore + $row;$rit['messaggio'] = ('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);$rit['esecuzione'] = $time_elapsed_secs = microtime(true) - $start;$rit['identificativo_chiamata'] = $collegamentoRnd;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaScontiClientiAnagrafiche');return new JsonResponse($rit);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), var_export($errori, true), false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaScontiClientiAnagrafiche');$rit['errori'] = $errori;return new JsonResponse($rit);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex->getTraceAsString(), false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaScontiClientiAnagrafiche');$rit['errori'] = $ex->getMessage();$rit['messaggio'] = ('Errore importazione (RIGA: ' . $contatore . ')');return new JsonResponse($rit);}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaScontiClientiAnagrafiche');$rit['errori'] = 'ERRORE PERMESSO';$rit['messaggio'] = ('ERRORE PERMESSO');return new JsonResponse($rit);}} //OK/*** @Route("/caricaAnagraficheOpzioniAggiuntive/{svuota}", name="carica_anagrafiche_opzioni_aggiuntive", defaults={"svuota"="0"})*/public function caricaAnagraficheOpzioniAggiuntive(Request $request, $svuota){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 900);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$repo = $this->servizi->doctrine->getRepository(AnagraficaOpzioniAggiuntive::class);$errori = "";$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaAnagraficheOpzioniAggiuntive/' . $svuota . ' --- Inizio l\' importazione delle scontistiche delle anagrafiche', null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagraficheOpzioniAggiuntive');if($svuota == '1'){$this->servizi->doctrine->getConnection()->executeQuery('TRUNCATE TABLE anagrafica_opzioni_aggiuntive;');}$root_path = $pathFileBase . "anagrafiche_opzioni_aggiuntive.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$query_eseguite = 0;$row = 0;$batch_size = 50;/*Index Campo0 codice_anagrafica1 ordine2 identificativo3 etichetta4 valore5 operazione6 tipo7 livello_permesso*/$indici = array("codiceAnagrafica" => 0,"ordine" => 1,"identificativo" => 2,"etichetta" => 3,"valore" => 4,"tipo" => 6,"operazione" => 5,"livelloPermesso" => 7);try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');try {$opzioneAgg = $repo->findOneBy(array('codiceAnagrafica' => $data[$indici["codiceAnagrafica"]],'identificativo' => $data[$indici["identificativo"]]));if ($opzioneAgg) {if ($data[$indici["operazione"]] == "E") {$em->remove($opzioneAgg);$query_eseguite++;} else {$opzioneAgg->setEtichetta($indici["etichetta"] !== '' ? $data[$indici["etichetta"]] : '');$opzioneAgg->setOrdine($indici["ordine"] !== '' ? $data[$indici["ordine"]] : '');$opzioneAgg->setValore($indici["valore"] !== '' ? $data[$indici["valore"]] : '');$opzioneAgg->setTipo($indici["tipo"] !== '' ? $data[$indici["tipo"]] : '');if(count($data) > $indici["livelloPermesso"])$opzioneAgg->setLivelloPermesso($indici["livelloPermesso"] !== '' ? $data[$indici["livelloPermesso"]] : null);$opzioneAgg->setDataModifica($now);$em->persist($opzioneAgg);$query_eseguite++;}} else {$opzioneAgg = new AnagraficaOpzioniAggiuntive();$opzioneAgg->setCodiceAnagrafica($indici["codiceAnagrafica"] !== '' ? $data[$indici["codiceAnagrafica"]] : '');$opzioneAgg->setOrdine($indici["ordine"] !== '' ? $data[$indici["ordine"]] : '');$opzioneAgg->setIdentificativo($indici["identificativo"] !== '' ? $data[$indici["identificativo"]] : '');$opzioneAgg->setEtichetta($indici["etichetta"] !== '' ? $data[$indici["etichetta"]] : '');$opzioneAgg->setValore($indici["valore"] !== '' ? $data[$indici["valore"]] : '');$opzioneAgg->setTipo($indici["tipo"] !== '' ? $data[$indici["tipo"]] : '');if(count($data) > $indici["livelloPermesso"])$opzioneAgg->setLivelloPermesso($indici["livelloPermesso"] !== '' ? $data[$indici["livelloPermesso"]] : null);$opzioneAgg->setDataCreazione($now);$opzioneAgg->setDataModifica($now);$em->persist($opzioneAgg);$query_eseguite++;}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex->getTraceAsString(), false, 'Errore importazione: (RIGA: ' . $contatore . '): ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagraficheOpzioniAggiuntive');$errori .= ('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage() . '<br>');}$row++;$em->flush();}$em->flush();$em->clear();}else{$errori .= "Impossibile aprire il file!";}$row = $contatore + $row;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagraficheOpzioniAggiuntive');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), var_export($errori, true), false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagraficheOpzioniAggiuntive');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), $ex->getTraceAsString(), false, 'Errore importazione: (RIGA: ' . $contatore . '): ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagraficheOpzioniAggiuntive');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagraficheOpzioniAggiuntive');return new Response("ERRORE PERMESSO");}} //OKfunction randomString($length = 6){$str = "";$characters = array_merge(range('A', 'Z'), range('a', 'z'), range('0', '9'));$max = count($characters) - 1;for ($i = 0; $i < $length; $i++) {$rand = mt_rand(0, $max);$str .= $characters[$rand];}return $str;}/*** @Route("/caricaUnitaDiMisura", name="carica_unita_misura")*/public function caricaUnitaDiMisura(Request $request){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 1200);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$repo = $this->servizi->doctrine->getRepository(UnitaMisura::class);$errori = "";$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaUnitaDiMisura --- Inizio l\' importazione dei dati', null, $collegamentoRnd, 'ImportazioneController', 'caricaUnitaDiMisura');$errori = "";$root_path = $pathFileBase . "um.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 50;/** 0 codice1 descrizione2 fattore conversione3 numero decimali*/try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');try {$umDb = $repo->findOneBy(array('codice' => $data[0]));if ($umDb) {$umDb->setDescrizione($data[1]);$umDb->setFattoreConversione(str_replace(',', '.', $data[2]));$umDb->setNumeroDecimali(str_replace(',', '.', $data[3]));$umDb->setDataModifica(new \DateTime());} else {$umDb = new UnitaMisura();$umDb->setCodice($data[0]);$umDb->setDescrizione($data[1]);$umDb->setFattoreConversione(str_replace(',', '.', $data[2]));$umDb->setNumeroDecimali(str_replace(',', '.', $data[3]));$umDb->setAttivo(true);$umDb->setDataCreazione(new \DateTime());$umDb->setDataModifica(new \DateTime());}$em->persist($umDb);} catch (\PDOException $ex) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaUnitaDiMisura');} catch (\Exception|\Throwable $exception) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $exception->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaUnitaDiMisura');}$row++;$em->flush();}}else{$errori .= "Impossibile aprire il file!";}$em->flush();$row = $contatore + $row - 1;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaUnitaDiMisura');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaUnitaDiMisura');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaUnitaDiMisura');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaUnitaDiMisura');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaNazioni", name="carica_nazioni")*/public function caricaNazioni(Request $request){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 1200);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$repo = $this->servizi->doctrine->getRepository(Nazioni::class);$errori = "";$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaNazioni --- Inizio l\' importazione dei dati', null, $collegamentoRnd, 'ImportazioneController', 'caricaNazioni');$errori = "";$root_path = $pathFileBase . "nazioni.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 50;/** 0 sigla iso1 descrizione2 flag paese cee3 flag black list4 operazione*/try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');try {$entity = $repo->findOneBy(array('siglaIso' => $data[0]));if ($entity) {if ($data[4] == "E") {$em->remove($entity);$query_eseguite++;} else {$entity->setDataModifica($now);$entity->setDescrizione($data[1]);$entity->setPaeseCee($data[2] == "1" ? true : false);$entity->setBlacklist($data[3] == "1" ? true : false);$em->persist($entity);$query_eseguite++;}} else {$entity = new Nazioni();$entity->setSiglaIso($data[0]);$entity->setDescrizione($data[1]);$entity->setPaeseCee($data[2] == "1" ? true : false);$entity->setBlacklist($data[3] == "1" ? true : false);$entity->setDataCreazione($now);$entity->setDataModifica($now);$em->persist($entity);$query_eseguite++;}} catch (\PDOException $ex) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaNazioni');} catch (\Exception|\Throwable $exception) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $exception->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaNazioni');}$row++;$em->flush();}}else{$errori .= "Impossibile aprire il file!";}$em->flush();$row = $contatore + $row - 1;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaNazioni');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaNazioni');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaNazioni');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaNazioni');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaBlocchiAnagrafiche/{svuota}", name="carica_blocchi_anagrafiche", defaults={"svuota" = 0})*/public function caricaBlocchiAnagrafiche(Request $request, $svuota = 0){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 1200);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$repo = $this->servizi->doctrine->getRepository(AnagraficheBlocchi::class);$errori = "";/** @var User|null $user */$user = $this->servizi->OttieniUtenteCorrente();$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$svuota = ($svuota == '1' ? true : false);$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaBlocchiAnagrafiche --- Inizio l\' importazione dei dati' . ($svuota ? ' con svuotamento tabella' : ''), null, $collegamentoRnd, 'ImportazioneController', 'caricaBlocchiAnagrafiche');$errori = "";$root_path = $pathFileBase . "blocchi_anagrafiche.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 50;if($svuota){$this->servizi->doctrine->getConnection()->executeQuery("TRUNCATE TABLE anagrafiche_blocchi;");}/** 0 codice_cliente1 identificativo_blocco2 tipo_blocco3 mostra_avviso4 testo_avviso5 vincola_a_codice_agente6 operazione*/$indici = array("codiceCliente" => 0,"identificativoBlocco" => 1,"tipoBlocco" => 2,"mostraAvviso" => 3,"testoAvviso" => 4,"vincolaACodiceAgente" => 5,"operazione" => 6);try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}try {$entity = null;if (!$svuota && $data[$indici['identificativoBlocco']] != ''){$entity = $repo->findOneBy(array('codiceCliente' => $data[$indici['codiceCliente']], 'identificativoBlocco' => $data[$indici['identificativoBlocco']]));}if ($entity) {if ($data[$indici['operazione']] == "E") {$em->remove($entity);$query_eseguite++;} else {$entity->setDataModifica(new \DateTime());$entity->setTipoBlocco($data[$indici['tipoBlocco']]);$entity->setMostraAvviso($data[$indici['mostraAvviso']] == '1' ? true : false);$entity->setTestoAvviso($data[$indici['testoAvviso']]);$entity->setVincolaACodiceAgente($data[$indici['vincolaACodiceAgente']]);$em->persist($entity);$query_eseguite++;}} else {$entity = new AnagraficheBlocchi();$entity->setDataModifica(new \DateTime());$entity->setTipoBlocco($data[$indici['tipoBlocco']]);$entity->setMostraAvviso($data[$indici['mostraAvviso']] == '1' ? true : false);$entity->setTestoAvviso($data[$indici['testoAvviso']]);$entity->setVincolaACodiceAgente($data[$indici['vincolaACodiceAgente']]);$entity->setCodiceCliente($data[$indici['codiceCliente']]);$entity->setDataCreazione(new \DateTime());$em->persist($entity);$query_eseguite++;}} catch (\PDOException $ex) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaBlocchiAnagrafiche');} catch (\Exception|\Throwable $exception) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $exception->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaBlocchiAnagrafiche');}$row++;$em->flush();}}else{$errori .= "Impossibile aprire il file!";}$em->flush();$row = $contatore + $row - 1;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaBlocchiAnagrafiche');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaBlocchiAnagrafiche');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaBlocchiAnagrafiche');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaBlocchiAnagrafiche');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaAttributiArticoli/{svuota}", name="carica_attributi_articoli", defaults={"svuota" = 0})*/public function carticaAttributiArticoli(Request $request, $svuota = 0){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', -1);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$repo = $this->servizi->doctrine->getRepository(Attributi::class);$repoAssociazioneAtt = $this->servizi->doctrine->getRepository(AssociazioneAttributi::class);$repoMappa = $this->servizi->doctrine->getRepository(MappaCategorieArticoli::class);$repoArticoli = $this->servizi->doctrine->getRepository(Articoli::class);$errori = "";/** @var User|null $user */$user = $this->servizi->OttieniUtenteCorrente();$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaAttributiArticoli --- Inizio l\' importazione dei dati' . ($svuota ? ' con svuotamento tabella' : ''), null, $collegamentoRnd, 'ImportazioneController', 'caricaAttributiArticoli');$errori = "";$root_path = $pathFileBase . "attributi_articoli.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 100;$indiciPrimaRiga = array();try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {var_dump("AAA PRIMA");if ($row == 0) {for($i = 0; $i < count($data); $i++){$indiciPrimaRiga[$i] = $data[$i];}$row = 1;continue;}var_dump($indiciPrimaRiga);if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}try {$articolo = $repoArticoli->findOneBy(array('codice' => $data[0]));if($articolo){$mappa = $repoMappa->findOneBy(array('articolo' => $articolo, 'marca' => $data[1]));if($mappa){for($i = 2; $i < count($indiciPrimaRiga) + 2; $i++){if($data[$i] != '') {$attributo = $repo->findOneBy(array('nome' => $indiciPrimaRiga[$i]));if (!$attributo) {$attributo = new Attributi();$attributo->setNome($indiciPrimaRiga[$i]);$attributo->setTestoVisualizzato($indiciPrimaRiga[$i]);$attributo->setCodiceIdentificativo($indiciPrimaRiga[$i]);$attributo->setDataCreazione(new \DateTime());$attributo->setDataModifica(new \DateTime());$em->persist($attributo);$em->flush();}$assAtt = $repoAssociazioneAtt->findOneBy(array('mappaCategoriaArticolo' => $mappa, 'articolo' => $articolo, 'attributo' => $attributo));if (!$assAtt) {$assAtt = new AssociazioneAttributi();$assAtt->setDataCreazione(new \DateTime());$assAtt->setDataModifica(new \DateTime());$assAtt->setMappaCategoriaArticolo($mappa);$assAtt->setArticolo($articolo);$assAtt->setAttributo($attributo);$assAtt->setValore(str_replace(',', '.', $data[$i]));$em->persist($assAtt);$query_eseguite++;} else {$assAtt->setDataModifica(new \DateTime());$assAtt->setValore(str_replace(',', '.', $data[$i]));$em->persist($assAtt);$query_eseguite++;}}}}else{$errori .= ('Errore carica attributi articoli! Mappa articolo con codice articolo: ' . $data[0] . ' e marca: ' . $data[1] . ' non trovata!<br/>');}}else{$errori .= ('Errore carica attributi articoli! Articolo con codice: ' . $data[0] . ' non trovato!<br/>');}} catch (\PDOException $ex) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaAttributiArticoli');} catch (\Exception|\Throwable $exception) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $exception->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaAttributiArticoli');}$row++;$em->flush();}}else{$errori .= "Impossibile aprire il file!";}$em->flush();$row = $contatore + $row - 1;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaAttributiArticoli');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaAttributiArticoli');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaAttributiArticoli');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaAttributiArticoli');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaVarianti", name="carica_varianti")*/public function caricaVarianti(Request $request){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 1200);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$repo = $this->servizi->doctrine->getRepository(Varianti::class);$errori = "";$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaVarianti --- Inizio l\' importazione dei dati', null, $collegamentoRnd, 'ImportazioneController', 'caricaVarianti');$errori = "";$root_path = $pathFileBase . "articoli_varianti.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 50;/* 0 codice articolo1 codice dimensione 012 descrizione dimensione 013 posizione dimensione 014 immagine dimensione 015 codice dimensione 026 descrizione dimensione 027 posizione dimensione 028 immagine dimensione 029 codice dimensione 0210 descrizione dimensione 0211 posizione dimensione 0212 immagine dimensione 0213 codice dimensione 0214 descrizione dimensione 0215 posizione dimensione 0216 immagine dimensione 0217 codice dimensione 0218 descrizione dimensione 0219 posizione dimensione 0220 immagine dimensione 0221 codice variante22 disponibilita23 operazione24 um_peso25 peso netto26 peso lordo*/$indici = array("codiceArticolo" => 0,"codiceDimensione1" => 1,"descrizioneDimenisone1" => 2,"posizioneDimensione1" => 3,"immagineDimensione1" => 4,"codiceDimensione2" => 5,"descrizioneDimenisone2" => 6,"posizioneDimensione2" => 7,"immagineDimensione2" => 8,"codiceDimensione3" => 9,"descrizioneDimenisone3" => 10,"posizioneDimensione3" => 11,"immagineDimensione3" => 12,"codiceDimensione4" => 13,"descrizioneDimenisone4" => 14,"posizioneDimensione4" => 15,"immagineDimensione4" => 16,"codiceDimensione5" => 17,"descrizioneDimenisone5" => 18,"posizioneDimensione5" => 19,"immagineDimensione5" => 20,"codiceVariante" => 21,"disponibilita" => 22,"operazione" => 23,"umPeso" => 24,"pesoNetto" => 25,"pesoLordo" => 26);try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');try {$entita = null;$umPeso = null;if(count($data) >= 25) {$umPeso = $this->servizi->doctrine->getRepository(UnitaMisura::class)->findOneBy(array('codice' => $data[$indici['umPeso']]));if (!$umPeso && $data[$indici['umPeso']] != '') {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, "Nuova unita di misura peso trovata: " . $data[20], null);$umPeso = new UnitaMisura();$umPeso->setDataCreazione(new \DateTime());$umPeso->setDataModifica(new \DateTime());$umPeso->setAttivo(true);$umPeso->setFattoreConversione(1);$umPeso->setCodice($data[20]);$umPeso->setNumeroDecimali(3);$em->persist($umPeso);$query_eseguite++;}}/** @var $listaVarianti Varianti[] */$listaVarianti = $repo->createQueryBuilder('varianti')->leftJoin('varianti.mappa', 'mappa')->leftJoin('mappa.articolo', 'articolo')->where('articolo.codice = :codArt')->setParameter('codArt', $data[$indici["codiceArticolo"]])->andWhere('varianti.codiceVariante = :codVar')->setParameter('codVar', $data[$indici["codiceVariante"]])->andWhere('varianti.codiceDimensione1 = :codDim1')->setParameter('codDim1', $data[$indici["codiceDimensione1"]])->andWhere('varianti.codiceDimensione2 = :codDim2')->setParameter('codDim2', $data[$indici["codiceDimensione2"]])->andWhere('varianti.codiceDimensione3 = :codDim3')->setParameter('codDim3', $data[$indici["codiceDimensione3"]])->andWhere('varianti.codiceDimensione4 = :codDim4')->setParameter('codDim4', $data[$indici["codiceDimensione4"]])->andWhere('varianti.codiceDimensione5 = :codDim5')->setParameter('codDim5', $data[$indici["codiceDimensione5"]])->getQuery()->getResult();if (count($listaVarianti) > 0) {$entita = $listaVarianti[0];if ($data[$indici["operazione"]] == "E") {$entita->setDataModifica(new \DateTime());$entita->setAttivo(false);$em->persist($entita);$query_eseguite++;} else {$entita->setDescrizioneDimensione1($data[$indici["descrizioneDimenisone1"]]);$entita->setPosizioneDimensione1($data[$indici["posizioneDimensione1"]]);$entita->setImmagineDimensione1($data[$indici["immagineDimensione1"]]);$entita->setDescrizioneDimensione2($data[$indici["descrizioneDimenisone2"]]);$entita->setPosizioneDimensione2($data[$indici["posizioneDimensione2"]]);$entita->setImmagineDimensione2($data[$indici["immagineDimensione2"]]);$entita->setDescrizioneDimensione3($data[$indici["descrizioneDimenisone3"]]);$entita->setPosizioneDimensione3($data[$indici["posizioneDimensione3"]]);$entita->setImmagineDimensione3($data[$indici["immagineDimensione3"]]);$entita->setDescrizioneDimensione4($data[$indici["descrizioneDimenisone4"]]);$entita->setPosizioneDimensione4($data[$indici["posizioneDimensione4"]]);$entita->setImmagineDimensione4($data[$indici["immagineDimensione4"]]);$entita->setDescrizioneDimensione5($data[$indici["descrizioneDimenisone5"]]);$entita->setPosizioneDimensione5($data[$indici["posizioneDimensione5"]]);$entita->setImmagineDimensione5($data[$indici["immagineDimensione5"]]);$entita->setDisponibile(str_replace(',', '.', $data[$indici["disponibilita"]]));$entita->setUmPeso($umPeso);$entita->setPesoNetto(str_replace(',', '.', (count($data) >= 26 ? $data[$indici["pesoNetto"]] : 0)));$entita->setPesoLordo(str_replace(',', '.', (count($data) >= 27 ? $data[$indici["pesoLordo"]] : 0)));$entita->setOrdiniFornitori(0);$entita->setAttivo(true);$entita->setDataModifica($now);$em->persist($entita);$mappa = $entita->getMappa();$mappa->setVariantiPresenti(true);$em->persist($mappa);$query_eseguite += 2;}} else {$listaMappe = $this->servizi->doctrine->getRepository(MappaCategorieArticoli::class)->createQueryBuilder('mappa_categorie_articoli')->leftJoin('mappa_categorie_articoli.articolo', 'articolo')->where('articolo.codice = :cod')->setParameter('cod', $data[0])->getQuery()->getResult();if (count($listaMappe) > 0) {/** @var MappaCategorieArticoli $mp */$mp = $listaMappe[0];if (!$mp->getVariantiPresenti()) {$mp->setVariantiPresenti(true);$em->persist($mp);$query_eseguite++;}$entita = new Varianti();$entita->setMappa($listaMappe[0]);$entita->setCodiceVariante($data[$indici["codiceVariante"]]);$entita->setCodiceDimensione1($data[$indici["codiceDimensione1"]]);$entita->setDescrizioneDimensione1($data[$indici["descrizioneDimenisone1"]]);$entita->setPosizioneDimensione1($data[$indici["posizioneDimensione1"]]);$entita->setImmagineDimensione1($data[$indici["immagineDimensione1"]]);$entita->setCodiceDimensione2($data[$indici["codiceDimensione2"]]);$entita->setDescrizioneDimensione2($data[$indici["descrizioneDimenisone2"]]);$entita->setPosizioneDimensione2($data[$indici["posizioneDimensione2"]]);$entita->setImmagineDimensione2($data[$indici["immagineDimensione2"]]);$entita->setCodiceDimensione3($data[$indici["codiceDimensione3"]]);$entita->setDescrizioneDimensione3($data[$indici["descrizioneDimenisone3"]]);$entita->setPosizioneDimensione3($data[$indici["posizioneDimensione3"]]);$entita->setImmagineDimensione3($data[$indici["immagineDimensione3"]]);$entita->setCodiceDimensione4($data[$indici["codiceDimensione4"]]);$entita->setDescrizioneDimensione4($data[$indici["descrizioneDimenisone4"]]);$entita->setPosizioneDimensione4($data[$indici["posizioneDimensione4"]]);$entita->setImmagineDimensione4($data[$indici["immagineDimensione4"]]);$entita->setCodiceDimensione5($data[$indici["codiceDimensione5"]]);$entita->setDescrizioneDimensione5($data[$indici["descrizioneDimenisone5"]]);$entita->setPosizioneDimensione5($data[$indici["posizioneDimensione5"]]);$entita->setImmagineDimensione5($data[$indici["immagineDimensione5"]]);$entita->setDisponibile(str_replace(',', '.', $data[$indici["disponibilita"]]));$entita->setUmPeso($umPeso);$entita->setAttivo(true);$entita->setPesoNetto(str_replace(',', '.', (count($data) >= 26 ? $data[$indici["pesoNetto"]] : 0)));$entita->setPesoLordo(str_replace(',', '.', (count($data) >= 27 ? $data[$indici["pesoLordo"]] : 0)));$entita->setOrdiniFornitori(0);$entita->setDataModifica($now);$entita->setDataCreazione($now);$em->persist($entita);$query_eseguite++;} else {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione variante. Mappa con codice articolo: ' . $data[$indici["codiceArticolo"]] . ' non trovata! ', null, $collegamentoRnd, 'ImportazioneController', 'caricaVarianti');}}} catch (\PDOException $ex) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaVarianti');} catch (\Exception|\Throwable $exception) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $exception->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaVarianti');}$row++;$em->flush();}}else{$errori .= "Impossibile aprire il file!";}$em->flush();$row = $contatore + $row - 1;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaVarianti');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaVarianti');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaVarianti');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaVarianti');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaPagamenti", name="carica_pagamenti")*/public function caricaPagamenti(Request $request){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 1200);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$repo = $this->servizi->doctrine->getRepository(Pagamenti::class);$errori = "";$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaPagamenti --- Inizio l\' importazione dei dati', null, $collegamentoRnd, 'ImportazioneController', 'caricaPagamenti');$errori = "";$root_path = $pathFileBase . "pagamenti.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 50;/** 0 codice1 descrizione2 operazione*/try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');try {$entita = null;$nuovo = false;$entita = $repo->findOneBy(array('codice' => $data[0]));if (!$entita) {$entita = new Pagamenti();$nuovo = true;}if ($data[2] == "E") {$em->remove($entita);$query_eseguite++;} else {$entita->setCodice($data[0]);$entita->setNome($data[1]);$entita->setDescrizione($data[1]);$entita->setCodiceEsportazione($data[0]);$entita->setDataModifica($now);if ($nuovo)$entita->setDataCreazione($now);$em->persist($entita);$query_eseguite++;}} catch (\PDOException $ex) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaPagamenti');} catch (\Exception|\Throwable $exception) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $exception->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaPagamenti');}$row++;$em->flush();}}else{$errori .= "Impossibile aprire il file!";}$em->flush();$row = $contatore + $row - 1;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaPagamenti');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaPagamenti');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaPagamenti');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaPagamenti');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaLimitazioneOrdinazioni", name="carica_limitazioni_ordinazioni")*/public function caricaLimitazioneOrdinazioni(Request $request){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 1200);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$repo = $this->servizi->doctrine->getRepository(LimitazioniOrdinazioniArticoli::class);$errori = "";$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaLimitazioneOrdinazioni --- Inizio l\' importazione dei dati', null, $collegamentoRnd, 'ImportazioneController', 'caricaLimitazioneOrdinazioni');$errori = "";$root_path = $pathFileBase . "limitazione_ordinazioni.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 50;/** 0 codice_variante1 identificativo_campo2 nome3 multipli_di4 qta_minima5 messaggio_errore6 attivo7 operazione8 codice_articolo*/try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {if ($row == 0) {$row = 1;continue;}$contatore++;if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');try {$entita = null;$nuovo = false;$variante = $this->servizi->doctrine->getRepository(Varianti::class)->findOneBy(array('codiceVariante' => $data[0]));if($variante) {$entita = $repo->findOneBy(array('identificativoCampo' => $data[1]));if (!$entita) {$entita = new LimitazioniOrdinazioniArticoli();$nuovo = true;}if ($data[7] == "E") {if ($data[0] != '') {$variante = $this->servizi->doctrine->getRepository(Varianti::class)->findOneBy(array('codiceVariante' => $data[0]));if ($entita->getVarianti()->contains($variante->getId())){$entita->removeVarianti($variante);$em->persist($entita);}}else if (count($data) >= 9 && $data[8] != '') {$articolo = $this->servizi->doctrine->getRepository(Articoli::class)->findOneBy(array('codice' => $data[8]));if($entita->getArticoli()->contains($articolo->getId())){$entita->removeArticoli($articolo);$em->persist($entita);}}if($entita->getArticoli()->count() <= 0&& $entita->getVarianti()->count() <= 0&& $entita->getCategorie1()->count() <= 0&& $entita->getCategorie2()->count() <= 0&& $entita->getCategorie3()->count() <= 0&& $entita->getCategorie4()->count() <= 0&& $entita->getCategorie5()->count() <= 0&& $entita->getMappeCategorieArticoli()->count() <= 0){$em->remove($entita);$query_eseguite++;}} else {$variante = null;$articolo = null;if ($data[0] != '')$variante = $this->servizi->doctrine->getRepository(Varianti::class)->findOneBy(array('codiceVariante' => $data[0]));if (count($data) >= 9 && $data[8] != '')$articolo = $this->servizi->doctrine->getRepository(Articoli::class)->findOneBy(array('codice' => $data[8]));if ($variante || $articolo) {if($variante){$entita->addVarianti($variante);} else if($articolo){$entita->addArticoli($articolo);}$entita->setIdentificativoCampo($data[1]);$entita->setNome($data[2]);$entita->setBloccaOrdinazioneSeEsaurito(false);$entita->setMultipliDi(str_replace(",", ".", $data[3]));$entita->setQtaMinima(str_replace(",", ".", $data[4]));if ($data[5] != "")$entita->setMessaggioErrore($data[5]);else$entita->setMessaggioErrore("Attenzione la quantità minima ordinabile è di " . number_format($entita->getQtaMinima(), 0) . "<br />sono ammessi solo multipli di " . number_format($entita->getMultipliDi(), 0));$entita->setAttivo($data[6] == '1' ? true : false);$entita->setDataModifica($now);if ($nuovo)$entita->setDataCreazione($now);$em->persist($entita);$query_eseguite++;} else {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione limitazione ordinazione articoli - Variante articolo con codice variante: ' . $data[0] . ' non trovata!', null, $collegamentoRnd, 'ImportazioneController', 'caricaLimitazioneOrdinazioni');}}}else{$errori .= ('Errore importazione (RIGA: ' . $contatore . ') : Variante con codice: ' . $data[0] . ' non trovata!\n' );}} catch (\PDOException $ex) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: (RIGA: ' . $contatore . ') : ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaLimitazioneOrdinazioni');} catch (\Exception|\Throwable $exception) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: (RIGA: ' . $contatore . ') : ' . $exception->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaLimitazioneOrdinazioni');}$row++;$em->flush();}}else{$errori .= "Impossibile aprire il file!";}$em->flush();$row = $contatore + $row - 1;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaLimitazioneOrdinazioni');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaLimitazioneOrdinazioni');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: (RIGA: ' . $contatore . ') : ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaLimitazioneOrdinazioni');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaLimitazioneOrdinazioni');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaAnagraficheIndirizzi", name="carica_anagrafiche_indirizzi")*/public function caricaAnagraficheIndirizzi(Request $request){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 1200);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$repo = $this->servizi->doctrine->getRepository(Anagrafiche::class);$repoIndirizzi = $this->servizi->doctrine->getRepository(AnagraficheIndirizzi::class);$repoFosUser = $this->servizi->doctrine->getRepository(User::class);$errori = "";$this->imp->caricaCacheImpostazioniDaFamiglie(['Google']);$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaAnagraficheIndirizzi --- Inizio l\' importazione dei dati', null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagraficheIndirizzi');$errori = "";$root_path = $pathFileBase . "anagrafiche_indirizzi.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 50;/** 0 codice_cliente1 tipo_indirizzo2 ragione_sociale3 indirizzo4 cap5 citta6 provincia7 nazione8 latitudine9 longitudine10 operazione*/try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');try {$nuova = false;$indirizzo = $repoIndirizzi->findOneBy(array('codice' => $data[0], 'tipoIndirizzo' => $data[1]));if ($data[10] == "E") //trovata operazione E quindi devo eliminare la riga{if ($indirizzo) {$em->remove($indirizzo);$query_eseguite++;}} else {$clienteAttivoOnline = $this->servizi->doctrine->getRepository(User::class)->findOneBy(array('codiceCliente' => $data[0]));if (!$indirizzo) {$indirizzo = new AnagraficheIndirizzi();$indirizzo->setCodice($data[0]);$indirizzo->setTipoIndirizzo($data[1]);$indirizzo->setDataCreazione($now);}$indirizzo->setRagioneSociale($data[2]);$indirizzo->setIndirizzo($data[3]);$indirizzo->setCap($data[4]);$indirizzo->setCitta($data[5]);$indirizzo->setProvincia($data[6]);$indirizzo->setNazione($data[7]);$indirizzo->setLatitudine(str_replace(",", ".", $data[8]));$indirizzo->setLongitudine(str_replace(",", ".", $data[9]));if($data[8] != '' && $data[8] != 0 && $data[9] != '' && $data[9] != 0 && $this->imp->ritornaImpostazioneDaNome('GoogleMapsAPIAttiva') == '1' && $this->imp->ritornaImpostazioneDaNome('GoogleMapsAPIRecuperaInAutomaticoImportAnagrafiche') == '1'){$gogl = new GoogleMapsAPI($this->imp, $this->servizi);$latLon = $gogl->OttieniLatitudineLongitudine($indirizzo->getIndirizzo() . ' ' . $indirizzo->getCitta() . ' ' . $indirizzo->getProvincia() . ' ' . $indirizzo->getCap() . ' ' . $indirizzo->getNazione());$indirizzo->setLatitudine($latLon['latitudine']);$indirizzo->setLongitudine($latLon['longitudine']);}$indirizzo->setDataModifica($now);$em->persist($indirizzo);$query_eseguite++;if ($clienteAttivoOnline) {//verifico se presente la destinazione altrimenti la creo$destinazione = $this->servizi->doctrine->getRepository(Destinazioni::class)->findOneBy(array('azienda' => $clienteAttivoOnline, 'codiceGestionale' => $data[1]));if (!$destinazione) {$destinazione = new Destinazioni();$destinazione->setAzienda($clienteAttivoOnline);$destinazione->setUtente($clienteAttivoOnline);$destinazione->setCodiceGestionale($data[1]);$destinazione->setDataCreazione($now);}$destinazione->setRagioneSociale($data[2]);$destinazione->setEmail($clienteAttivoOnline->getEmail());$destinazione->setIndirizzo($data[3]);$destinazione->setCap($data[4]);$destinazione->setCitta($data[5]);$destinazione->setProvincia($data[6]);$destinazione->setStato($data[7]);$destinazione->setTelefono($clienteAttivoOnline->getTelefono());$destinazione->setDataModifica($now);$destinazione->setDenominazioneDestinazioneDiversa($data[1]);$destinazione->setUnivocoIndirizzo($data[1]);// codice AA perchè indirizzo base$em->persist($destinazione);$query_eseguite++;}}} catch (\PDOException $ex) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagraficheIndirizzi');} catch (\Exception|\Throwable $exception) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $exception->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagraficheIndirizzi');}$row++;$em->flush();}}else{$errori .= "Impossibile aprire il file!";}$em->flush();$row = $contatore + $row - 1;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagraficheIndirizzi');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagraficheIndirizzi');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagraficheIndirizzi');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagraficheIndirizzi');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaAnagrafiche/{svuota}", name="carica_anagrafiche", defaults={"svuota"="0"})*/public function caricaAnagrafiche(Request $request, $svuota){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 1200);ini_set('memory_limit', '4G');$this->imp->caricaCacheImpostazioniDaFamiglie(['Google']);$inviaMail = $this->imp->ritornaImpostazioneDaNome("InviaMailNuoviClienti");$ccMail = $this->imp->ritornaImpostazioneDaNome("MailCcComunicazioni");$from = $this->imp->ritornaImpostazioneDaNome("IndirizzoMailFromInvioComunicazioni");$nomeShop = $this->imp->ritornaImpostazioneDaNome("NomeShop");$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$repo = $this->servizi->doctrine->getRepository(Anagrafiche::class);$repoIndirizzi = $this->servizi->doctrine->getRepository(AnagraficheIndirizzi::class);$repoFosUser = $this->servizi->doctrine->getRepository(User::class);$repoSpedizione = $this->servizi->doctrine->getRepository(Spedizione::class);$repoConsegna = $this->servizi->doctrine->getRepository(Consegna::class);$errori = "";$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaAnagrafiche/' . $svuota . ' --- Inizio l\' importazione dei dati', null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagrafiche');switch ($svuota){case "1":{ //Svuoto tutte le tabelle collegate$em = $this->servizi->doctrine->getManager();$connection = $this->servizi->doctrine->getConnection();$connection->executeQuery("SET FOREIGN_KEY_CHECKS=0;");$connection->executeQuery("TRUNCATE `anagrafica_opzioni_aggiuntive`;");$connection->executeQuery("TRUNCATE `anagrafiche`;");$connection->executeQuery("TRUNCATE `anagrafiche_indirizzi`;");$connection->executeQuery("TRUNCATE `risorse_anagrafiche_colonne_valori`;");$connection->executeQuery("TRUNCATE `risorse_anagrafiche`;");$connection->executeQuery("TRUNCATE `risorse_anagrafiche_colonne`;");$connection->executeQuery("TRUNCATE `sconti_anagrafiche`;");$connection->executeQuery("TRUNCATE `anagrafiche_blocchi`;");$connection->executeQuery("SET FOREIGN_KEY_CHECKS=1;");break;}}$errori = "";$root_path = $pathFileBase . "anagrafiche.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 50;/** 0 codice_cliente1 ragione_sociale2 indirizzo3 cap4 citta5 provincia6 nazione7 codice_zona8 descrizione_zona9 telefono10 fax11 cellulare12 sito_web13 indirizzi_mail14 codice_fiscale15 partita_iva16 codice_assoggettamento_fiscale17 descrizione_assoggettamento_fiscale18 codice_abi19 codice_cab20 iban21 codice_pagamnto22 descrizione_pagamento23 sconto_commerciale24 sconto_pagamento25 codice_riclassifica_amm_126 descrizione_riclassifica_amministrativa_127 codice_spedizione28 descrizione_spedizione29 codice_consegna30 descrizione_consegna31 codice_agente32 descrizione_agente33 codice_canale_commerciale34 descrizione_canale_commerciale35 latitudine36 longitudine37 note_anagrafica38 operazione39 codice_listino40 descrizione_listino41 attiva_online42 mail_attivazione_online43 valore_aliquota_iva44 codice_aliquota_iva45 ruolo46 associazione_codici_agenti_fornitori47 andamento generale fatturato48 importo_minimo_ordine*/try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');try {$nuova = false;$anagrafica = $repo->findOneBy(array('codice' => $data[0]));if ($data[38] == "E") //trovata operazione E quindi devo eliminare la riga{if ($anagrafica) {$anagrafica->setAttivo(false);$anagrafica->setDataModifica(new \DateTime());$em->persist($anagrafica);$utente = $this->servizi->doctrine->getRepository(User::class)->findOneBy(array('codiceCliente' => $data[0]));if ($utente) ;{$utente->setEnabled(false);$em->persist($utente);$query_eseguite++;}$query_eseguite++;}}if (!$anagrafica) {$anagrafica = new Anagrafiche();$nuova = true;}$anagrafica->setCodice($data[0]);$anagrafica->setRagioneSociale($data[1]);$anagrafica->setIndirizzo($data[2]);$anagrafica->setComune($data[4]);$anagrafica->setProvincia($data[5]);$anagrafica->setCap($data[3]);$anagrafica->setNazione($data[6]);$anagrafica->setCodiceZona($data[7]);$anagrafica->setDescrizioneZona($data[8]);$anagrafica->setTelefono($data[9]);$anagrafica->setFax($data[10]);$anagrafica->setCellulare($data[11]);$anagrafica->setSitoWeb($data[12]);$anagrafica->setIndirizziMail($data[13]);$anagrafica->setCodiceFiscale($data[14]);$anagrafica->setPartitaIva($data[15]);$anagrafica->setCodiceAssoggettamentoFiscale($data[16]);$anagrafica->setDescrizioneAssoggettamentoFiscale($data[17]);$anagrafica->setCodiceAbi($data[18]);$anagrafica->setCodiceCab($data[19]);$anagrafica->setIban($data[20]);$anagrafica->setCodicePagamento($data[21]);$anagrafica->setDescrizionePagamento($data[22]);$anagrafica->setScontoCommerciale(str_replace(',', '.', $data[23] ? $data[23] : "0"));$anagrafica->setScontoPagamento(str_replace(',', '.', $data[24] ? $data[24] : "0"));$anagrafica->setCodiceRiclassificaAmministrativa1($data[25]);$anagrafica->setDescrizioneRiclassificaAmministrativa1($data[26]);$anagrafica->setCodiceSpedizione($data[27]);$anagrafica->setDescrizioneSpedizione($data[28]);$anagrafica->setCodiceConsegna($data[29]);$anagrafica->setDescrizioneConsegna($data[30]);$anagrafica->setCodiceAgente($data[31]);$anagrafica->setDescrizioneAgente($data[32]);$anagrafica->setCodiceCanaleCommerciale($data[33]);$anagrafica->setDescrizioneCanaleCommerciale($data[34]);$anagrafica->setLatitudine(str_replace(',', '.', $data[35] ? $data[35] : "0"));$anagrafica->setLongitudine(str_replace(',', '.', $data[36] ? $data[36] : "0"));if($data[35] != '' && $data[35] != 0 && $data[36] != '' && $data[36] != 0 && $this->imp->ritornaImpostazioneDaNome('GoogleMapsAPIAttiva') == '1' && $this->imp->ritornaImpostazioneDaNome('GoogleMapsAPIRecuperaInAutomaticoImportAnagrafiche') == '1'){$gogl = new GoogleMapsAPI($this->imp, $this->servizi);$latLon = $gogl->OttieniLatitudineLongitudine($anagrafica->getIndirizzo() . ' ' . $anagrafica->getComune() . ' ' . $anagrafica->getProvincia() . ' ' . $anagrafica->getCap() . ' ' . $anagrafica->getNazione());$anagrafica->setLatitudine($latLon['latitudine']);$anagrafica->setLongitudine($latLon['longitudine']);}$anagrafica->setNoteAnagrafica($data[37]);$anagrafica->setCodiceListinoVendita($data[39]);$anagrafica->setDescrizioneListinoVendita($data[40]);$anagrafica->setAttivo(true);if(isset($data[43]))$anagrafica->setValoreAliquotaIva(str_replace(',', '.', $data[43] ? $data[43] : "0"));if(isset($data[44]))$anagrafica->setCodiceAliquotaIva($data[44]);if(isset($data[45])) {$tipo = strtoupper($data[44]);if(!in_array($tipo, ['COMMERCIALE', 'AGENTE', 'CLIENTE', 'FORNITORE'])){$tipo = 'CLIENTE';}$anagrafica->setTipo($tipo);}if (isset($data[47])){$anagrafica->setAndamentoGeneraleFatturato(str_replace(',', '.', $data[47] ? $data[43] : "0"));}if(!$anagrafica->getTipo())$anagrafica->setTipo('CLIENTE');$now = new \DateTime('now');if ($nuova)$anagrafica->setDataCreazione($now);$anagrafica->setDataModifica($now);$em->persist($anagrafica);$query_eseguite++;if ($data[41] == "1") { //devo attivarlo online$clienteOnline = $repoFosUser->findOneBy(array('codiceCliente' => $anagrafica->getCodice()));if (!$clienteOnline) {$newPass = $this->randomString(8);/** @var $clienteOnline User */$clienteOnline = new User();$clienteOnline->setCodiceCliente($data[0]);$clienteOnline->setRagioneSociale($data[1]);$clienteOnline->setEmail($data[42]);$clienteOnline->setIndirizzo($data[2]);$clienteOnline->setCap($data[3]);$clienteOnline->setCitta($data[4]);$clienteOnline->setProvincia($data[5]);$clienteOnline->setNazione($data[6]);$clienteOnline->setTelefono($data[9]);$clienteOnline->setCodiceFiscale($data[14]);$clienteOnline->setPartitaIva($data[15]);$clienteOnline->setCodiceListinoVendita($data[39]);$clienteOnline->setPassword($this->passwordHasher->hashPassword($clienteOnline, $newPass));$clienteOnline->setUsername($data[0]);$clienteOnline->setEnabled(true);$clienteOnline->setRoles(array('ROLE_USER'));$clienteOnline->setAgente(false);$clienteOnline->setUtenteComune(false);$clienteOnline->setPrivato(false);$clienteOnline->setCommerciale(false);$clienteOnline->setCodiceAssoggettamentoFiscale($data[16]);if(isset($data[43]))$clienteOnline->setValoreAliquotaIva(str_replace(',', '.', $data[43] ? $data[43] : "0"));if(isset($data[44]))$clienteOnline->setCodiceAliquotaIva($data[44]);if (isset($data[48]))$clienteOnline->setImportoImponibileMinimoOrdine(str_replace(',', '.', $data[48] ? $data[48] : "-1"));$anagraficaDaMail = $this->servizi->doctrine->getRepository(User::class)->findOneBy(array('email' => strtolower($data[42])));//Controllo esistenza di un'account con lo stesso indirizzo mail se è presente annullo la registrazione e passo ad un altra rigaif (!$anagraficaDaMail) {$em = $this->servizi->doctrine->getManager();$em->persist($clienteOnline);$em->flush();} else {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Anagrafica con codice: ' . $data[0] . ' ---- indirizzo email: ' . $data[42] . " già presente!", null);continue;}$adresses = explode(";", $data[13]);$mailSecondarie = $this->servizi->doctrine->getRepository(MailSecondarieUtenti::class);array_push($adresses, $ccMail);foreach ($adresses as $item) {$ms = new MailSecondarieUtenti();$ms->setInviaConfermaOrdine(false);$ms->setUtenteModifica(null);$ms->setAzienda($clienteOnline);$ms->setDataModifica($now);$ms->setDataCreazione($now);$ms->setRuolo("");$ms->setNominativo("");$ms->setIndirizzoMail($item);$em->persist($ms);}$em->flush();unset($adresses[0]);//Associo il ruolo corretto e i vari codici agente associatiif(count($data) > 46){if(strtoupper($data[45]) == 'AGENTE'){$clienteOnline->setRoles(array("ROLE_AGENTE"));$clienteOnline->setAgente(true);$em->persist($clienteOnline);$em->flush();if(isset($data[46])){$elenco = explode(',', $data[46]);if($elenco){$assAg = $this->servizi->doctrine->getRepository(AssociazioneCodiciAgentiUtente::class);foreach ($elenco as $i){$entitaAssAg = new AssociazioneCodiciAgentiUtente();$entitaAssAg->setCodice($i);$entitaAssAg->setDataCreazione(new \DateTime());$entitaAssAg->setDataModifica(new \DateTime());$entitaAssAg->setUtente($clienteOnline);$em->persist($entitaAssAg);}$em->flush();}}}elseif(strtoupper($data[45]) == 'COMMERCIALE'){$clienteOnline->setRoles(array("ROLE_COMMERCIALE"));$clienteOnline->setCommerciale(true);$em->persist($clienteOnline);$em->flush();}elseif (strtoupper($data[45] == "FORNITORE")){$clienteOnline->setRoles(array("ROLE_FORNITORE"));$clienteOnline->setCommerciale(false);$clienteOnline->setAgente(false);if(count($data) > 47) {$clienteOnline->setCodiceFornitore($data[46]);}$em->persist($clienteOnline);$em->flush();}}$translator = $this->translating;/** @var $clienteOnline User */if ($clienteOnline->getNazione() != 'IT') {$translator->CaricaTraduzioniDaFamiglia('mail_benvenuto', 'en');}else{$translator->CaricaTraduzioniDaFamiglia('mail_benvenuto', 'it');}try {if ($inviaMail) {$header = $translator->OttieniElementoDizionario('mail_benvenuto_header_mail', 'mail_benvenuto')->valoreUscita;$mailer = $this->mailer;$mailer->SendMail($header . " " . $nomeShop,$this->renderView('email/registrazione/nuovo_inserimento.html.twig',array('utente' => $clienteOnline,'password' => $newPass)),$clienteOnline->getEmail(),$adresses,$from,"text/html");}} catch (\Exception|\Throwable $e) {$this->logger->critical("Errore invio mail: " . $e->getMessage());$this->ScriviRegistroAttivita($em, $request->getClientIp(), $e->getMessage(), true, 'Errore invio mail conferma inserimento nuova azienda ' . $clienteOnline->getCodiceCliente() . ' - ' . $clienteOnline->getRagioneSociale() . ' all\'indirizzo ' . $clienteOnline->getEmail() . " --- Errore: " . $e->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagrafiche');$query_eseguite++;}$indirizzo_mail = $data[13];if (!strpos($indirizzo_mail, ";") === false) {$indirizzi = explode(";", $indirizzo_mail);$mailSecondarie = $this->servizi->doctrine->getRepository(MailSecondarieUtenti::class);foreach ($indirizzi as $item) {if (!$mailSecondarie->findOneBy(array('azienda' => $clienteOnline, 'indirizzoMail' => $item))) {$ms = new MailSecondarieUtenti();$ms->setInviaConfermaOrdine(true);$ms->setUtenteModifica(null);$ms->setAzienda($clienteOnline);$ms->setDataModifica($now);$ms->setDataCreazione($now);$ms->setRuolo("");$ms->setNominativo("");$ms->setIndirizzoMail($item);$em->persist($ms);}}$indirizzo_mail = $indirizzi[0];}}else{$clienteOnline->setRagioneSociale($data[1]);$clienteOnline->setIndirizzo($data[2]);$clienteOnline->setCap($data[3]);$clienteOnline->setCitta($data[4]);$clienteOnline->setProvincia($data[5]);$clienteOnline->setNazione($data[6]);$clienteOnline->setTelefono($data[9]);$clienteOnline->setCodiceFiscale($data[14]);$clienteOnline->setPartitaIva($data[15]);$clienteOnline->setCodiceListinoVendita($data[39]);$em->persist($clienteOnline);}if ($data[27] != "" && $data[29] != "") {$sped = $repoSpedizione->findOneBy(array('codice' => $data[27]));$cons = $repoConsegna->findOneBy(array('codice' => $data[29]));if (!$sped) {$sped = new Spedizione();$sped->setCodice($data[27]);$sped->setDescrizione($data[28]);$em->persist($sped);$query_eseguite++;$query_eseguite++;$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Spedizione con codice ' . $sped->getCodice() . ' creata perchè inesistente!' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagrafiche');}if (!$cons) {$cons = new Consegna();$cons->setCodice($data[29]);$cons->setDescrizione($data[30]);$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Consegna con codice ' . $cons->getCodice() . ' creata perchè inesistente!' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagrafiche');$em->persist($cons);$query_eseguite++;$query_eseguite++;}$ass = $this->servizi->doctrine->getRepository(AssociazioneSpedizioniClienti::class)->findOneBy(['consegna' => $cons, 'spedizione' => $sped, 'azienda' => $clienteOnline]);if(!$ass){$ass = new AssociazioneSpedizioniClienti();$ass->setAzienda($clienteOnline);$ass->setConsegna($cons);$ass->setSpedizione($sped);$ass->setPrimaria(true);$em->persist($ass);$query_eseguite++;}}}} catch (\PDOException $ex) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagrafiche');} catch (\Exception|\Throwable $exception) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $exception->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagrafiche');}$row++;$em->flush();}}else{$errori .= "Impossibile aprire il file!";}$em->flush();$row = $contatore + $row - 1;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagrafiche');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagrafiche');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagrafiche');return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaAnagrafiche');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaListiniVendita/{svuota}/{batch}/{iterazione}", name="carica_listini_vendita", defaults={"svuota"="0", "batch"="0", "iterazione"="0"})*/public function caricaListiniVendita(Request $request, $svuota, $batch, $iterazione){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', -1);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$repo = $this->servizi->doctrine->getRepository(ListiniVendita::class);$repoMappe = $this->servizi->doctrine->getRepository(MappaCategorieArticoli::class);$repoVarianti = $this->servizi->doctrine->getRepository(Varianti::class);$errori = "";$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaListiniVendita/' . $svuota . ' --- Inizio l\' importazione dei dati', null, $collegamentoRnd, 'ImportazioneController', 'caricaListiniVendita');$connection = $this->servizi->doctrine->getConnection();if($svuota == "1"){$em = $this->servizi->doctrine->getManager();$connection->beginTransaction();try {$connection->executeQuery("SET FOREIGN_KEY_CHECKS=0;");$connection->executeQuery("TRUNCATE `listini_vendita`;");$connection->executeQuery("SET FOREIGN_KEY_CHECKS=1;");$connection->commit();}catch (\Exception|\Throwable $ex){$this->servizi->DebuggaException($ex, "Errore pulizia listini vendita", false, null, $collegamentoRnd, 'ImportazioneController', 'caricaListiniVendita');}}$errori = "";$root_path = $pathFileBase . "articoli_listini_vendita.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 50;/** 0 codice listino1 descrizione listino2 codice_anagrafica3 codice articolo4 codice variante5 prezzo6 operazione7 flag_prezzo_netto8 codice_cat_19 codice_cat_210 codice_cat_311 codice_cat_412 codice_cat_513 marca14 costo15 codice_tipo_ordine16 chiave_esterna*/$indici = array('codiceListino' => 0,'descrizioneListino' => 1,'codiceAnagrafica' => 2,'codiceArticolo' => 3,'codiceVariante' => 4,'prezzo' => 5,'flagPrezzoNetto' => 7,'operazione' => 6,'cat1' => 8,'cat2' => 9,'cat3' => 10,'cat4' => 11,'cat5' => 12,'marca' => 13,'costo' => 14,'codiceTipoOrdine' => 15,'chiaveEsterna' => 16);$righeDaSaltareSeBatch = 0;if($batch != 0 && $iterazione != 0){$rrr = $batch * $iterazione; //Esempio iterazione = 1 batch = 5000 = 5000$righeDaSaltareSeBatch = $rrr - $batch;}try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {//Se attivata la funzionalità batch salto le righe che non devo importareif($righeDaSaltareSeBatch > 0){if (($contatore + $row) < $righeDaSaltareSeBatch){$contatore++;continue;}}if($righeDaSaltareSeBatch > 0 && ($contatore + $row - $righeDaSaltareSeBatch) > $batch ){$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, "Batch completato: Iterazione: " . strval($iterazione) . " --- Batch: " . strval(($batch)) . " ( Da riga:" . strval($righeDaSaltareSeBatch + 1) . " a riga: " . strval(($contatore + $row)) . " )", null, $collegamentoRnd, 'ImportazioneController', 'caricaListiniVendita');break;}if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');try {$listaMappe = $repoMappe->createQueryBuilder('mappa_categorie_articoli')->leftJoin('mappa_categorie_articoli.articolo', 'articolo')->leftJoin('mappa_categorie_articoli.categoria1', 'cat1')->leftJoin('mappa_categorie_articoli.categoria2', 'cat2')->leftJoin('mappa_categorie_articoli.categoria3', 'cat3')->leftJoin('mappa_categorie_articoli.categoria4', 'cat4')->leftJoin('mappa_categorie_articoli.categoria5', 'cat5')->where('articolo.codice = :cod')->setParameter('cod', $data[$indici['codiceArticolo']]);if ($data[$indici['cat1']] != '') {$listaMappe->andWhere('cat1.codice = :cat1')->setParameter('cat1', $data[$indici['cat1']]);}if ($data[$indici['cat2']] != '') {$listaMappe->andWhere('cat2.codice = :cat2')->setParameter('cat2', $data[$indici['cat2']]);}if ($data[$indici['cat3']] != '') {$listaMappe->andWhere('cat3.codice = :cat3')->setParameter('cat3', $data[$indici['cat3']]);}if ($data[$indici['cat4']] != '') {$listaMappe->andWhere('cat4.codice = :cat4')->setParameter('cat4', $data[$indici['cat4']]);}if ($data[$indici['cat5']] != '') {$listaMappe->andWhere('cat5.codice = :cat5')->setParameter('cat5', $data[$indici['cat5']]);}if ($data[$indici['marca']] != '') {$listaMappe->andWhere('mappa_categorie_articoli.marca = :marca')->setParameter('marca', $data[$indici['marca']]);}$listaMappe = $listaMappe->getQuery()->getResult();if (count($listaMappe) > 0) {/** @var MappaCategorieArticoli $mappa */$mappa = $listaMappe[0];$codiceTipoOrdine = null;if (count($data) > $indici['codiceTipoOrdine'] && $data[$indici['codiceTipoOrdine']] != ''){$codiceTipoOrdine = $this->servizi->doctrine->getRepository(TipoOrdine::class)->findOneBy(array('codice' => $data[$indici['codiceTipoOrdine']]));if(!$codiceTipoOrdine){$errori .= ('Errore importazione listino (RIGA: ' . $contatore . ') : - Codice Listino: ' . $data[$indici['codiceListino']] . ' - Codice Articolo: ' . $data[$indici['codiceArticolo']] . ' - Codice Variante: ' . $data[$indici['codiceVariante']] . ' - Tipo ordine: ' . $data[$indici['codiceTipoOrdine']] . ' ERRORE: TIPO ORDINE NON TROVATO<br/>');continue;}}if ($data[$indici['codiceVariante']] != '') {$listaVarianti = $repoVarianti->createQueryBuilder('varianti')->where('varianti.mappa = :mappa')->setParameter('mappa', $mappa)->andWhere('varianti.codiceVariante = :codvar')->setParameter('codvar', $data[$indici["codiceVariante"]])->getQuery()->getResult();if (count($listaVarianti) > 0) {$variante = $listaVarianti[0];$array = array('variante' => $variante,'codiceListino' => $data[$indici['codiceListino']],'mappaCategorieArticoli' => $mappa,'tipoOrdine' => $codiceTipoOrdine);if ($data[$indici['codiceAnagrafica']] != '') {$array['codiceAnagrafica'] = $data[$indici['codiceAnagrafica']];}/** @var ListiniVendita $listino */$listino = $repo->findOneBy($array);if ($listino) {if ($data[$indici['operazione']] == 'E') {$em->remove($listino);$query_eseguite++;} else {$listino->setPrezzo(ServiziController::convertiInNumero($data[$indici["prezzo"]]));$listino->setFlagPrezzoNetto($data[$indici['flagPrezzoNetto']]);$listino->setCodiceAnagrafica($data[$indici["codiceAnagrafica"]]);$listino->setTipoOrdine($codiceTipoOrdine);if(count($data) > $indici['costo'] && $data[$indici['costo']] != '') {$listino->setCosto(ServiziController::convertiInNumero($data[$indici["costo"]]));}if (count($data) > $indici['chiaveEsterna'])$listino->setChiaveEsterna($data[$indici['chiaveEsterna']]);$listino->setDataModifica($now);$em->persist($listino);$query_eseguite++;}} else {$listino = new ListiniVendita();$listino->setVariante($variante);$listino->setCodiceListino($data[$indici["codiceListino"]]);$listino->setPrezzo(ServiziController::convertiInNumero($data[$indici["prezzo"]]));$listino->setFlagPrezzoNetto($data[$indici['flagPrezzoNetto']]);$listino->setMappaCategorieArticoli($mappa);$listino->setTipoOrdine($codiceTipoOrdine);$listino->setCodiceAnagrafica($data[$indici["codiceAnagrafica"]]);$listino->setDataCreazione($now);$listino->setDataModifica($now);if(count($data) > $indici['costo'] && $data[$indici['costo']] != '') {$listino->setCosto(ServiziController::convertiInNumero($data[$indici["costo"]]));}if (count($data) > $indici['chiaveEsterna'])$listino->setChiaveEsterna($data[$indici['chiaveEsterna']]);$em->persist($listino);$query_eseguite++;}} else {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione listino - Codice Listino: ' . $data[$indici['codiceListino']] . ' - Codice Articolo: ' . $data[$indici['codiceArticolo']] . ' - Codice Variante: ' . $data[$indici['codiceVariante']] . ' ERRORE: VARIANTE NON TROVATA', null, $collegamentoRnd, 'ImportazioneController', 'caricaListiniVendita');}} else {/** @var $listino ListiniVendita */$array = array('variante' => null,'codiceListino' => $data[$indici['codiceListino']],'mappaCategorieArticoli' => $mappa,'tipoOrdine' => $codiceTipoOrdine);if ($data[$indici['codiceAnagrafica']] != '') {$array['codiceAnagrafica'] = $data[$indici['codiceAnagrafica']];}$listino = $repo->findOneBy($array);if ($listino) {if ($data[$indici['operazione']] == "E") {$em->remove($listino);$query_eseguite++;} else {$listino->setPrezzo(ServiziController::convertiInNumero($data[$indici["prezzo"]]));$listino->setFlagPrezzoNetto($data[$indici['flagPrezzoNetto']]);$listino->setCodiceAnagrafica($data[$indici["codiceAnagrafica"]]);$listino->setDataModifica($now);$listino->setTipoOrdine($codiceTipoOrdine);if(count($data) > $indici['costo']){$listino->setCosto(ServiziController::convertiInNumero($data[$indici["costo"]]));}if (count($data) > $indici['chiaveEsterna'])$listino->setChiaveEsterna($data[$indici['chiaveEsterna']]);$em->persist($listino);$query_eseguite++;}} else {$listino = new ListiniVendita();$listino->setVariante(null);$listino->setCodiceListino($data[$indici["codiceListino"]]);$listino->setPrezzo(ServiziController::convertiInNumero($data[$indici["prezzo"]]));$listino->setFlagPrezzoNetto($data[$indici['flagPrezzoNetto']]);$listino->setMappaCategorieArticoli($mappa);$listino->setTipoOrdine($codiceTipoOrdine);$listino->setCodiceAnagrafica($data[$indici["codiceAnagrafica"]]);$listino->setDataCreazione($now);$listino->setDataModifica($now);if(count($data) > $indici['costo']){$listino->setCosto(ServiziController::convertiInNumero($data[$indici["costo"]]));}if (count($data) > $indici['chiaveEsterna'])$listino->setChiaveEsterna($data[$indici['chiaveEsterna']]);$em->persist($listino);$query_eseguite++;}}} else {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione listino (RIGA: ' . ($contatore + $row) . ') : - Codice Listino: ' . $data[$indici['codiceListino']] . ' - Codice Articolo: ' . $data[$indici['codiceArticolo']] . ' - Codice Variante: ' . $data[$indici['codiceVariante']] . ' ERRORE: MAPPA NON TROVATA', null, $collegamentoRnd, 'ImportazioneController', 'caricaListiniVendita');$errori .= 'Errore importazione listino (RIGA: ' . ($contatore + $row) . ') : - Codice Listino: ' . $data[$indici['codiceListino']] . ' - Codice Articolo: ' . $data[$indici['codiceArticolo']] . ' - Codice Variante: ' . $data[$indici['codiceVariante']] . ' ERRORE: MAPPA NON TROVATA<br/>';}} catch (\PDOException $ex) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaListiniVendita');} catch (\Exception|\Throwable $exception) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $exception->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaListiniVendita');}$row++;$em->flush();}}else{$errori .= "Impossibile aprire il file!";}$em->flush();$row = $contatore + $row - 1;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaListiniVendita');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaListiniVendita');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaListiniVendita');return new Response('Errore importazione: ' . $ex->getMessage() . '<br/>' . $ex->getTraceAsString());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaListiniVendita');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaOfferte/{batch}/{iterazione}", name="carica_offerte", defaults={"batch"="0", "iterazione"="0"})*/public function caricaOfferte(Request $request, $batch = 0, $iterazione = 0){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 1200);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$repo = $this->servizi->doctrine->getRepository(Offerte::class);$repoAnagrafica = $this->servizi->doctrine->getRepository(Anagrafiche::class);$errori = "";$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaOfferte --- Inizio l\' importazione dei dati', null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferte');$errori = "";$root_path = $pathFileBase . "offerte.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 50;/** 0 codice_cliente1 ragione_sociale2 descrizione_breve3 descrizione_lunga4 data_documento5 importo6 stato7 documento8 numero9 anno10 moneta11 importante12 path_pdf_originale13 operazione*/$indici = array('codiceCliente' => 0,'ragioneSociale' => 1,'descrizioneBreve' => 2,'descrizioneLunga' => 3,'dataDocumento' => 4,'importo' => 5,'stato' => 6,'documento' => 7,'numero' => 8,'anno' => 9,'moneta' => 10,'importante' => 11,'pathPdfOriginale' => 12,'operazione' => 13);$righeDaSaltareSeBatch = 0;if($batch != 0 && $iterazione != 0){$rrr = $batch * $iterazione; //Esempio iterazione = 1 batch = 5000 = 5000$righeDaSaltareSeBatch = $rrr - $batch;}try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {//Se attivata la funzionalità batch salto le righe che non devo importareif($righeDaSaltareSeBatch > 0){if (($contatore + $row) < $righeDaSaltareSeBatch){$contatore++;continue;}}if($righeDaSaltareSeBatch > 0 && ($contatore + $row - $righeDaSaltareSeBatch) > $batch ){$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, "Batch completato: Iterazione: " . strval($iterazione) . " --- Batch: " . strval(($batch)) . " ( Da riga:" . strval($righeDaSaltareSeBatch + 1) . " a riga: " . strval(($contatore + $row)) . " )", null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferte');break;}if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');try {//Verifico se presente già un offerte$offerta = $repo->findOneBy(array('documento' => $data[$indici['documento']], 'numero' => $data[$indici['numero']], 'anno' => $data[$indici['anno']]));if($offerta){if($data[$indici['operazione']] == 'E'){foreach ($offerta->getAllegati() as $all)$em->remove($all);foreach ($offerta->getContattiClienti() as $cont)$em->remove($cont);foreach ($offerta->getRegistroEventi() as $reg)$em->remove($reg);$em->remove($offerta);$query_eseguite++;}else if ($data[$indici['operazione']] != 'E'){$offerta->setDataModifica($now);}}else if ($data[$indici['operazione']] != 'E'){$offerta = new Offerte();$offerta->setDataCreazione($now);$offerta->setDataModifica($now);$offerta->setDocumento($data[$indici['documento']]);$offerta->setNumero($data[$indici['numero']]);$offerta->setAnno($data[$indici['anno']]);}if($data[$indici['operazione']] != 'E'){$offerta->setCodiceCliente($data[$indici['codiceCliente']]);$offerta->setRagioneSociale($data[$indici['ragioneSociale']]);$offerta->setDescrizioneBreve($data[$indici['descrizioneBreve']]);$offerta->setDescrizioneLunga($data[$indici['descrizioneLunga']]);$offerta->setDataDocumento(ServiziController::convertiInDatetime($data[$indici['dataDocumento']], false, 'Y-m-d'));$offerta->setImporto(ServiziController::convertiInNumero($data[$indici['importo']]));$offerta->setStato($data[$indici['stato']]);$collegamentoAnagrafica = $repoAnagrafica->findOneBy(array('codice' => $offerta->getCodiceCliente()));$offerta->setCollegamentoAnagrafica($collegamentoAnagrafica);$offerta->setMoneta($data[$indici['moneta']]);$offerta->setImportante($data[$indici['importante']] == 1 ? true : false);$offerta->setPathPdfOriginale($data[$indici['pathPdfOriginale']]);$em->persist($offerta);$query_eseguite++;}} catch (\PDOException $ex) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferte');} catch (\Exception|\Throwable $exception) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $exception->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferte');}$row++;}}else{$errori .= "Impossibile aprire il file!";}$em->flush();$row = $contatore + $row - 1;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferte');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferte');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferte');return new Response('Errore importazione: ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferte');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaDocumenti/{svuota}/{batch}/{iterazione}", name="carica_documenti", defaults={"svuota"="0", "batch"="0", "iterazione"="0"})*/public function caricaDocumenti(Request $request, $svuota = "0", $batch = "0", $iterazione = "0"){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', -1);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$repo = $this->servizi->doctrine->getRepository(Documenti::class);$repoAnagrafiche = $this->servizi->doctrine->getRepository(Anagrafiche::class);$errori = "";$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaDocumenti/' . $svuota . ' --- Inizio l\' importazione dei dati', null, $collegamentoRnd, 'ImportazioneController', 'caricaDocumenti');$connection = $this->servizi->doctrine->getConnection();if($svuota == "1"){$em = $this->servizi->doctrine->getManager();$connection->beginTransaction();try {$connection->query("SET FOREIGN_KEY_CHECKS=0;");$connection->executeUpdate("TRUNCATE `documenti`;");$connection->executeUpdate("TRUNCATE `documenti_righe`;");$connection->query("SET FOREIGN_KEY_CHECKS=1;");$connection->commit();}catch (\Exception|\Throwable $ex){$this->servizi->DebuggaException($ex, "Errore pulizia documenti e documenti_righe DB", false, null, $collegamentoRnd, 'ImportazioneController', 'caricaDocumenti');}}$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$errori = "";$root_path = $pathFileBase . "documenti.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 50;/*0 identificativo Identificativo univoco documento1 documento2 anno3 data_documento 2021-12-314 numero5 numero_fattura6 data_fattura 2021-12-317 numero_ddt8 data_ddt 2021-12-319 agente10 codice_anagrafica11 tipo_anagrafica cliente/fornitore/agente/altro12 ragione_sociale13 indirizzo14 citta15 provincia16 cap17 regione18 codice_fiscale19 partita_iva20 modalita_pagamento21 modalita_spedizione22 modalita_consegna23 totale_documento_netto decimal(18,5)24 totale_costo_netto decimal(18,5)25 zona26 mercato27 sub_agente28 capo_area29 nome_file_pdf_documento30 nome_file_pdf_fattura31 nome_file_pdf_ddt32 stato_avanzamento33 indirizzo_tracking_corriere34 utente35 data_consegna 2021-12-3136 operazione E=Elimina - A=Aggiorna - N=Aggiungi37 codice_agente38 variabile stringa 139 variabile stringa 240 variabile stringa 341 variabile stringa 442 variabile stringa 543 variabile decimale 144 variabile decimale 245 variabile decimale 346 variabile decimale 447 variabile decimale 548 variabile data ora 149 variabile data ora 250 variabile data ora 351 variabile booleana 152 variabile booleana 253 variabile booleana 354 codice_fornitore55 tipo_documento56 identificativo_utente*/$indici = array('identificativo' => 0,'documento' => 1,'anno' => 2,'dataDocumento' => 3,'numero' => 4,'numeroFattura' => 5,'dataFattura' => 6,'numeroDdt' => 7,'dataDdt' => 8,'agente' => 9,'codiceAnagrafica' => 10,'tipoAnagrafica' => 11,'ragioneSociale' => 12,'indirizzo' => 13,'citta' => 14,'provincia' => 15,'cap' => 16,'regione' => 17,'codiceFiscale' => 18,'partitaIva' => 19,'modalitaPagamento' => 20,'modalitaSpedizione' => 21,'modalitaConsegna' => 22,'totaleDocumentoNetto' => 23,'totaleCostoNetto' => 24,'zona' => 25,'mercato' => 26,'subAgente' => 27,'capoArea' => 28,'nomeFilePdfDocumento' => 29,'nomeFilePdfFattura' => 30,'nomeFilePdfDdt' => 31,'statoAvanzamento' => 32,'indirizzoTrackingCorriere' => 33,'utente' => 34,'dataConsegna' => 35,'operazione' => 36,'codiceAgente' => 37,'variabileStringa1' => 38,'variabileStringa2' => 39,'variabileStringa3' => 40,'variabileStringa4' => 41,'variabileStringa5' => 42,'variabileDecimale1' => 43,'variabileDecimale2' => 44,'variabileDecimale3' => 45,'variabileDecimale4' => 46,'variabileDecimale5' => 47,'variabileDataora1' => 48,'variabileDataora2' => 49,'variabileDataora3' => 50,'variabileBooleana1' => 51,'variabileBooleana2' => 52,'variabileBooleana3' => 53,'codiceFornitore' => 54,'tipoDocumento' => 55,'identificativoUtente' => 56);$righeDaSaltareSeBatch = 0;if($batch != 0 && $iterazione != 0){$rrr = $batch * $iterazione; //Esempio iterazione = 1 batch = 5000 = 5000$righeDaSaltareSeBatch = $rrr - $batch;}try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {//Se attivata la funzionalità batch salto le righe che non devo importareif($righeDaSaltareSeBatch > 0){if (($contatore + $row) < $righeDaSaltareSeBatch){$contatore++;continue;}}if($righeDaSaltareSeBatch > 0 && ($contatore + $row - $righeDaSaltareSeBatch) > $batch ){$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, "Batch completato: Iterazione: " . strval($iterazione) . " --- Batch: " . strval(($batch)) . " ( Da riga:" . strval($righeDaSaltareSeBatch + 1) . " a riga: " . strval(($contatore + $row)) . " )", null, $collegamentoRnd, 'ImportazioneController', 'caricaDocumenti');break;}if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');try {//Verifico se presente già un offerte$doc = $repo->findOneBy(array('identificativo' => $data[$indici['identificativo']]));if($doc){if($data[$indici['operazione']] == 'E'){foreach ($doc->getRighe() as $all)$em->remove($all);$em->remove($doc);$query_eseguite++;} else if ($data[$indici['operazione']] != 'E'){$doc->setDataModifica($now);}} else if ($data[$indici['operazione']] != 'E'){$doc = new Documenti();$doc->setDataCreazione(new \DateTime());$doc->setIdentificativo($data[$indici['identificativo']]);}if($data[$indici['operazione']] != 'E'){$doc->setDocumento($data[$indici['documento']]);$doc->setAnno($data[$indici['anno']]);$doc->setDataDocumento(self::OttieniDataDaStringa($data[$indici['dataDocumento']], false));$doc->setNumero($data[$indici['numero']]);$doc->setNumeroDdt($data[$indici['numeroDdt']]);$doc->setDataDdt(self::OttieniDataDaStringa($data[$indici['dataDdt']], false));$doc->setNumeroFattura($data[$indici['numeroFattura']]);$doc->setDataFattura(self::OttieniDataDaStringa($data[$indici['dataFattura']], false));$doc->setAgente($data[$indici['agente']]);$doc->setCodiceAnagrafica($data[$indici['codiceAnagrafica']]);$doc->setTipoAnagrafica($data[$indici['tipoAnagrafica']]);$doc->setRagioneSociale($data[$indici['ragioneSociale']]);$doc->setIndirizzo($data[$indici['indirizzo']]);$doc->setCitta($data[$indici['citta']]);$doc->setProvincia($data[$indici['provincia']]);$doc->setCap($data[$indici['cap']]);$doc->setRegione($data[$indici['regione']]);$doc->setCodiceFiscale($data[$indici['codiceFiscale']]);$doc->setPartitaIva($data[$indici['partitaIva']]);$doc->setModalitaPagamento($data[$indici['modalitaPagamento']]);$doc->setModalitaSpedizione($data[$indici['modalitaSpedizione']]);$doc->setModalitaConsegna($data[$indici['modalitaConsegna']]);$doc->setTotaleDocumentoNetto(str_replace(',','.', $data[$indici['totaleDocumentoNetto']]));$doc->setTotaleCostoNetto(str_replace(',','.',$data[$indici['totaleCostoNetto']]));$doc->setZona($data[$indici['zona']]);$doc->setMercato($data[$indici['mercato']]);$doc->setSubAgente($data[$indici['subAgente']]);$doc->setCapoArea($data[$indici['capoArea']]);$doc->setNomeFilePdfDocumento($data[$indici['nomeFilePdfDocumento']]);$doc->setNomeFilePdfFattura($data[$indici['nomeFilePdfFattura']]);$doc->setNomefilePdfDdt($data[$indici['nomeFilePdfDdt']]);$doc->setStatoAvanzamento($data[$indici['statoAvanzamento']]);$doc->setIndirizzoTrackingCorriere($data[$indici['indirizzoTrackingCorriere']]);$doc->setUtente($data[$indici['utente']]);$doc->setDataConsegna(self::OttieniDataDaStringa($data[$indici['dataConsegna']], false));$doc->setCodiceAgente($data[$indici['codiceAgente']]);$doc->setDataModifica(new \DateTime());$doc->setVariabileStringa1($data[$indici['variabileStringa1']]);$doc->setVariabileStringa2($data[$indici['variabileStringa2']]);$doc->setVariabileStringa3($data[$indici['variabileStringa3']]);$doc->setVariabileStringa4($data[$indici['variabileStringa4']]);$doc->setVariabileStringa5($data[$indici['variabileStringa5']]);$doc->setVariabileDecimale1(ServiziController::convertiInNumero($data[$indici['variabileDecimale1']]));$doc->setVariabileDecimale2(ServiziController::convertiInNumero($data[$indici['variabileDecimale2']]));$doc->setVariabileDecimale3(ServiziController::convertiInNumero($data[$indici['variabileDecimale3']]));$doc->setVariabileDecimale4(ServiziController::convertiInNumero($data[$indici['variabileDecimale4']]));$doc->setVariabileDecimale5(ServiziController::convertiInNumero($data[$indici['variabileDecimale5']]));$doc->setVariabileDataora1(self::OttieniDataDaStringa($data[$indici['variabileDataora1']], true));$doc->setVariabileDataora2(self::OttieniDataDaStringa($data[$indici['variabileDataora2']], true));$doc->setVariabileDataora3(self::OttieniDataDaStringa($data[$indici['variabileDataora3']], true));$doc->setVariabileBooleana1(ServiziController::convertiInBoolean($data[$indici['variabileBooleana1']]));$doc->setVariabileBooleana2(ServiziController::convertiInBoolean($data[$indici['variabileBooleana2']]));$doc->setVariabileBooleana3(ServiziController::convertiInBoolean($data[$indici['variabileBooleana3']]));if(count($data) > $indici['codiceFornitore'])$doc->setCodiceFornitore($data[$indici['codiceFornitore']]);if(count($data) > $indici['tipoDocumento'])$doc->setTipoDocumento($data[$indici['tipoDocumento']]);if(count($data) > $indici['identificativoUtente'])$doc->setVincolaIdentificativoUtente($data[$indici['identificativoUtente']]);$em->persist($doc);$query_eseguite++;}} catch (\PDOException $ex) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione (RIGA: ' . ($contatore + $row) . ') : ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaDocumenti');} catch (\Exception|\Throwable $exception) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: (RIGA: ' . ($contatore + $row) . ') : ' . $exception->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaDocumenti');}$row++;}}else{$errori .= "Impossibile aprire il file!";}$em->flush();$row = $contatore + $row - 1;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaDocumenti');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaDocumenti');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaDocumenti');return new Response('Errore importazione: ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaDocumenti');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaRigheDocumenti/{svuota}/{batch}/{iterazione}", name="carica_documenti_righe", defaults={"svuota"="0", "batch"="0", "iterazione"="0"})*/public function caricaRigheDocumenti(Request $request, $svuota = "0", $batch = "0", $iterazione = "0"){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 1200);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$repo = $this->servizi->doctrine->getRepository(DocumentiRighe::class);$repoDoc = $this->servizi->doctrine->getRepository(Documenti::class);$errori = "";$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaDocumentiRighe/' . $svuota . ' --- Inizio l\' importazione dei dati', null, $collegamentoRnd, 'ImportazioneController', 'caricaRigheDocumenti');$connection = $this->servizi->doctrine->getConnection();if($svuota == "1"){$em = $this->servizi->doctrine->getManager();$connection->beginTransaction();try {$connection->query("SET FOREIGN_KEY_CHECKS=0;");$connection->executeUpdate("TRUNCATE `documenti_righe`;");$connection->query("SET FOREIGN_KEY_CHECKS=1;");$connection->commit();}catch (\Exception|\Throwable $ex){$this->servizi->DebuggaException($ex, "Errore pulizia documenti_righe DB", false, null, $collegamentoRnd, 'ImportazioneController', 'caricaRigheDocumenti');}}$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$errori = "";$root_path = $pathFileBase . "righe_documenti.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 50;/*0 identificativo_documento Collegamento con documento1 numero_riga intero che identifica la riga (Chiave univoca)2 codice_articolo3 descrizione_articolo4 marca5 um6 data_consegna 2021-12-317 quantita decimal(18,5)8 prezzo_netto_totale decimal(18,5)9 prezzo_netto_cad decimal(18,5)10 prezzo_lordo_totale decimal(18,5)11 prezzo_lordo_cad decimal(18,5)12 sconti_maggiorazioni -0.00#-3.00#+10.00#-0.00#-0.00#-0.0013 descrizione_articolo_agg114 descrizione_articolo_agg215 variabile_116 variabile_217 variabile_318 variabile_419 variabile_520 qta_alt_121 qta_alt_222 qta_alt_323 costo_cad decimal(18,5)24 costo_totale decimal(18,5)25 stato_avanzamento26 numero_riga_alternativo intero27 operazione E=Elimina - A=Aggiorna - N=Aggiungi28 variabile stringa 129 variabile stringa 230 variabile stringa 331 variabile stringa 432 variabile stringa 533 variabile decimale 134 variabile decimale 235 variabile decimale 336 variabile decimale 437 variabile decimale 538 variabile data ora 139 variabile data ora 240 variabile data ora 341 variabile booleana 142 variabile booleana 243 variabile booleana 344 stato*/$indici = array('identificativoDocumento' => 0,'numeroRiga' => 1,'codiceArticolo' => 2,'descrizioneArticolo' => 3,'marca' => 4,'um' => 5,'dataConsegna' => 6,'quantita' => 7,'prezzoNettoTotale' => 8,'prezzoNettoCad' => 9,'prezzoLordoTotale' => 10,'prezzoLordoCad' => 11,'scontiMaggiorazioni' => 12,'descrizioneArticoloAgg1' => 13,'descrizioneArticoloAgg2' => 14,'variabile1' => 15,'variabile2' => 16,'variabile3' => 17,'variabile4' => 18,'variabile5' => 19,'qtaAlt1' => 20,'qtaAlt2' => 21,'qtaAlt3' => 22,'costoCad' => 23,'costoTotale' => 24,'statoAvanzamento' => 25,'numeroRigaAlternativo' => 26,'operazione' => 27,'variabileStringa1' => 28,'variabileStringa2' => 29,'variabileStringa3' => 30,'variabileStringa4' => 31,'variabileStringa5' => 32,'variabileDecimale1' => 33,'variabileDecimale2' => 34,'variabileDecimale3' => 35,'variabileDecimale4' => 36,'variabileDecimale5' => 37,'variabileDataora1' => 38,'variabileDataora2' => 39,'variabileDataora3' => 40,'variabileBooleana1' => 41,'variabileBooleana2' => 42,'variabileBooleana3' => 43,'stato' => 44);$righeDaSaltareSeBatch = 0;if($batch != 0 && $iterazione != 0){$rrr = $batch * $iterazione; //Esempio iterazione = 1 batch = 5000 = 5000$righeDaSaltareSeBatch = $rrr - $batch;}try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {//Se attivata la funzionalità batch salto le righe che non devo importareif($righeDaSaltareSeBatch > 0){if (($contatore + $row) < $righeDaSaltareSeBatch){$contatore++;continue;}}if($righeDaSaltareSeBatch > 0 && ($contatore + $row - $righeDaSaltareSeBatch) > $batch ){$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, "Batch completato: Iterazione: " . strval($iterazione) . " --- Batch: " . strval(($batch)) . " ( Da riga:" . strval($righeDaSaltareSeBatch + 1) . " a riga: " . strval(($contatore + $row)) . " )", null, $collegamentoRnd, 'ImportazioneController', 'caricaRigheDocumenti');break;}if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');try {$doc = $repoDoc->findOneBy(array('identificativo' => $data[$indici['identificativoDocumento']]));if($doc) {//Verifico se presente già un offerte$rigaDoc = $repo->findOneBy(array('identificativoDocumento' => $data[$indici['identificativoDocumento']], 'numeroRiga' => $data[$indici['numeroRiga']]));if ($rigaDoc) {if ($data[$indici['operazione']] == 'E') {$em->remove($rigaDoc);$query_eseguite++;} else if ($data[$indici['operazione']] != 'E') {$rigaDoc->setDataModifica($now);}} else if ($data[$indici['operazione']] != 'E') {$rigaDoc = new DocumentiRighe();$rigaDoc->setDataCreazione(new \DateTime());$rigaDoc->setIdentificativoDocumento($doc);$rigaDoc->setNumeroRiga($data[$indici['numeroRiga']]);}if ($data[$indici['operazione']] != 'E') {$rigaDoc->setCodiceArticolo($data[$indici['codiceArticolo']]);$rigaDoc->setDescrizioneArticolo($data[$indici['descrizioneArticolo']]);$rigaDoc->setMarca($data[$indici['marca']]);$rigaDoc->setUm($data[$indici['um']]);$rigaDoc->setDataConsegna(self::OttieniDataDaStringa($data[$indici['dataConsegna']], false));$rigaDoc->setQuantita(ServiziController::convertiInNumero($data[$indici['quantita']]));$rigaDoc->setPrezzoNettoTotale(ServiziController::convertiInNumero($data[$indici['prezzoNettoTotale']]));$rigaDoc->setPrezzoNettoCad(ServiziController::convertiInNumero($data[$indici['prezzoNettoCad']]));$rigaDoc->setPrezzoLordoTotale(ServiziController::convertiInNumero($data[$indici['prezzoLordoTotale']]));$rigaDoc->setPrezzoLordoCad(ServiziController::convertiInNumero($data[$indici['prezzoLordoCad']]));$rigaDoc->setScontiMaggiorazioni($data[$indici['scontiMaggiorazioni']]);$rigaDoc->setDescrizioneArticoloAgg1($data[$indici['descrizioneArticoloAgg1']]);$rigaDoc->setDescrizioneArticoloAgg2($data[$indici['descrizioneArticoloAgg2']]);$rigaDoc->setVariabile1($data[$indici['variabile1']]);$rigaDoc->setVariabile2($data[$indici['variabile2']]);$rigaDoc->setVariabile3($data[$indici['variabile3']]);$rigaDoc->setVariabile4($data[$indici['variabile4']]);$rigaDoc->setVariabile5($data[$indici['variabile5']]);$rigaDoc->setQtaAlt1(ServiziController::convertiInNumero($data[$indici['qtaAlt1']]));$rigaDoc->setQtaAlt2(ServiziController::convertiInNumero($data[$indici['qtaAlt2']]));$rigaDoc->setQtaAlt3(ServiziController::convertiInNumero($data[$indici['qtaAlt3']]));$rigaDoc->setCostoCad(ServiziController::convertiInNumero($data[$indici['costoCad']]));$rigaDoc->setCostoTotale(ServiziController::convertiInNumero($data[$indici['costoTotale']]));$rigaDoc->setStatoAvanzamento($data[$indici['statoAvanzamento']]);$rigaDoc->setNumeroRigaAlternativo(ServiziController::convertiInNumero($data[$indici['numeroRigaAlternativo']]));$rigaDoc->setDataModifica(new \DateTime());$rigaDoc->setVariabileStringa1($data[$indici['variabileStringa1']]);$rigaDoc->setVariabileStringa2($data[$indici['variabileStringa2']]);$rigaDoc->setVariabileStringa3($data[$indici['variabileStringa3']]);$rigaDoc->setVariabileStringa4($data[$indici['variabileStringa4']]);$rigaDoc->setVariabileStringa5($data[$indici['variabileStringa5']]);$rigaDoc->setVariabileDecimale1(ServiziController::convertiInNumero($data[$indici['variabileDecimale1']]));$rigaDoc->setVariabileDecimale2(ServiziController::convertiInNumero($data[$indici['variabileDecimale2']]));$rigaDoc->setVariabileDecimale3(ServiziController::convertiInNumero($data[$indici['variabileDecimale3']]));$rigaDoc->setVariabileDecimale4(ServiziController::convertiInNumero($data[$indici['variabileDecimale4']]));$rigaDoc->setVariabileDecimale5(ServiziController::convertiInNumero($data[$indici['variabileDecimale5']]));$rigaDoc->setVariabileDataora1(self::OttieniDataDaStringa($data[$indici['variabileDataora1']], true));$rigaDoc->setVariabileDataora2(self::OttieniDataDaStringa($data[$indici['variabileDataora2']], true));$rigaDoc->setVariabileDataora3(self::OttieniDataDaStringa($data[$indici['variabileDataora3']], true));$rigaDoc->setVariabileBooleana1(ServiziController::convertiInBoolean($data[$indici['variabileBooleana1']]));$rigaDoc->setVariabileBooleana2(ServiziController::convertiInBoolean($data[$indici['variabileBooleana2']]));$rigaDoc->setVariabileBooleana3(ServiziController::convertiInBoolean($data[$indici['variabileBooleana3']]));if (count($data) >= $indici['stato'] - 1){$rigaDoc->setStato($data[$indici['stato']]);}$em->persist($rigaDoc);$query_eseguite++;}}else{$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione (RIGA: ' . ($row + $contatore) . ') : Documento non trovato!' , null, $collegamentoRnd, 'ImportazioneController', 'caricaRigheDocumenti');$errori .= ('Errore importazione (RIGA: ' . $contatore . ') : Documento non trovato!');}} catch (\PDOException $ex) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione (RIGA: ' . ($row + $contatore) . ') : ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaRigheDocumenti');} catch (\Exception|\Throwable $exception) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: (RIGA: ' . ($row + $contatore) . ') : ' . $exception->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaRigheDocumenti');}$row++;}}else{$errori .= "Impossibile aprire il file!";}$em->flush();$row = $contatore + $row - 1;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaRigheDocumenti');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaRigheDocumenti');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaRigheDocumenti');return new Response('Errore importazione: ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaRigheDocumenti');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaOfferteRighe/{batch}/{iterazione}", name="carica_offerte_righe", defaults={"batch"="0", "iterazione"="0"})*/public function caricaOfferteRighe(Request $request, $batch, $iterazione){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 1200);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$repo = $this->servizi->doctrine->getRepository(OfferteRighe::class);$repoOfferte = $this->servizi->doctrine->getRepository(Offerte::class);$errori = "";$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaOfferteRighe --- Inizio l\' importazione dei dati', null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteRighe');$errori = "";$root_path = $pathFileBase . "offerte_righe.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 50;/*0 documento1 numero2 anno3 macro_categoria_articolo4 codice_articolo5 marca_articolo6 descrizione_articolo7 descrizione_seconaria_articolo8 um9 stringa_sconti10 qta11 nota_riga12 netto_cad13 lordo_cad14 netto_totale15 lordo_totale16 imposta17 imponibile18 operazione19 numeroRiga20 stato*/$indici = array('documento' => 0,'numero' => 1,'anno' => 2,'macroCategoriaArticolo' => 3,'codiceArticolo' => 4,'marcaArticolo' => 5,'descrizioneArticolo' => 6,'descrizioneSecondariaArticolo' => 7,'um' => 8,'stringaSconti' => 9,'qta' => 10,'notaRiga' => 11,'nettoCad' => 12,'lordoCad' => 13,'nettoTotale' => 14,'lordoTotale' => 15,'imposta' => 16,'imponibile' => 17,'operazione' => 18,'numeroRiga' => 19,'stato' => 20);$righeDaSaltareSeBatch = 0;if($batch != 0 && $iterazione != 0){$rrr = $batch * $iterazione; //Esempio iterazione = 1 batch = 5000 = 5000$righeDaSaltareSeBatch = $rrr - $batch;}try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {//Se attivata la funzionalità batch salto le righe che non devo importareif($righeDaSaltareSeBatch > 0){if (($contatore + $row) < $righeDaSaltareSeBatch){$contatore++;continue;}}if($righeDaSaltareSeBatch > 0 && ($contatore + $row - $righeDaSaltareSeBatch) > $batch ){$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, "Batch completato: Iterazione: " . strval($iterazione) . " --- Batch: " . strval(($batch)) . " ( Da riga:" . strval($righeDaSaltareSeBatch + 1) . " a riga: " . strval(($contatore + $row)) . " )", null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteRighe');break;}if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');try {//Recupero l'offerta$offerta = $repoOfferte->findOneBy(array('documento' => $data[$indici['documento']], 'numero' => $data[$indici['numero']], 'anno' => $data[$indici['anno']]));if($offerta){/** @var OfferteRighe $riga */$riga = $offerta->RitornaRigaDaNumero($data[$indici['numeroRiga']]);if($riga && $data[$indici['operazione']] == 'E'){$em->remove($riga);$query_eseguite++;}if($data[$indici['operazione']] != "E"){if(!$riga) {$riga = new OfferteRighe();$riga->setDataCreazione($now);$riga->setOfferta($offerta);}$riga->setDataModifica($now);$riga->setMacroCategoria($data[$indici['macroCategoriaArticolo']]);$riga->setCodiceArticolo($data[$indici['codiceArticolo']]);$riga->setDescrizioneArticolo($data[$indici['descrizioneArticolo']]);$riga->setDescrizioneSecondariaArticolo($data[$indici['descrizioneSecondariaArticolo']]);$riga->setMarca($data[$indici['marcaArticolo']]);$riga->setNumeroRiga($data[$indici['numeroRiga']]);$riga->setUm($data[$indici['um']]);$riga->setStringaSconti($data[$indici['stringaSconti']]);$riga->setQta(ServiziController::convertiInNumero($data[$indici['qta']]));$riga->setNotaRiga($data[$indici['notaRiga']]);$riga->setNettoCad(ServiziController::convertiInNumero($data[$indici['nettoCad']]));$riga->setLordoCad(ServiziController::convertiInNumero($data[$indici['lordoCad']]));$riga->setNettoTotale(ServiziController::convertiInNumero($data[$indici['nettoTotale']]));$riga->setLordoTotale(ServiziController::convertiInNumero($data[$indici['lordoTotale']]));$riga->setImposta(ServiziController::convertiInNumero($data[$indici['imposta']]));$riga->setImponibile(ServiziController::convertiInNumero($data[$indici['imponibile']]));if (count($data) >= $indici['stato'] - 1){$riga->setStato($data[$indici['stato']]);}//Vedo se presente un collegamento con una mappa articolo dell'ecommerce$articoloTrovato = $this->servizi->doctrine->getRepository(MappaCategorieArticoli::class)->createQueryBuilder('mappa_categorie_articoli')->leftJoin('mappa_categorie_articoli.articolo', 'articolo')->where('articolo.codice = :cod')->setParameter('cod', $data[$indici['codiceArticolo']])->andWhere('articolo.macroCategoria = :macro')->setParameter('macro', $data[$indici['macroCategoriaArticolo']])->andWhere('mappa_categorie_articoli.marca = :marca')->setParameter('marca', $data[$indici['marcaArticolo']])->setMaxResults(1)->getQuery()->getResult();if(count($articoloTrovato) > 0)$riga->setCollegamentoMappaCategorieArticoli($articoloTrovato[0]);$em->persist($riga);$query_eseguite++;}}else {$errori .= ("Riga: " . $contatore . " -- Offerta non trovata con Documento: " . $data[$indici['documento']] . " - Numero: " . $data[$indici['numero']] . " - Anno: " . $data[$indici['anno']] . "\n");}} catch (\PDOException $ex) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteRighe');} catch (\Exception|\Throwable $exception) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $exception->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteRighe');}$row++;}}else{$errori .= "Impossibile aprire il file!";}$em->flush();$row = $contatore + $row - 1;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteRighe');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteRighe');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteRighe');return new Response('Errore importazione: ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteRighe');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaOfferteRegistroEventi", name="carica_offerte_registro_eventi")*/public function caricaOfferteRegistroEventi(Request $request){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 1200);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$repo = $this->servizi->doctrine->getRepository(OfferteRegistroEventi::class);$repoOfferte = $this->servizi->doctrine->getRepository(Offerte::class);$errori = "";$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaOfferteRegistroEventi --- Inizio l\' importazione dei dati', null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteRegistroEventi');$errori = "";$root_path = $pathFileBase . "offerte_registro_eventi.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 50;/*0 documento1 numero2 anno3 titolo4 descrizione5 operazione6 identificativo7 data_ora*/$indici = array('documento' => 0,'numero' => 1,'anno' => 2,'titolo' => 3,'descrizione' => 4,'operazione' => 5,'identificativo' => 6,'dataOra' => 7);try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');try {//Recupero l'offerta$offerta = $repoOfferte->findOneBy(array('documento' => $data[$indici['documento']], 'numero' => $data[$indici['numero']], 'anno' => $data[$indici['anno']]));if($offerta){/** @var OffertaRegistroEventi $reg */$reg = $offerta->RitornaRegistroEventoDaIdentificativo($data[$indici['identificativo']]);if($reg && $data[$indici['operazione']] == 'E'){$em->remove($reg);$query_eseguite++;}if($data[$indici['operazione']] != "E"){if(!$reg){$reg = new OfferteRegistroEventi();$reg->setDataCreazione($now);$reg->setOfferta($offerta);}if(count($data) >= 8){$reg->setDataModifica(self::OttieniDataDaStringa($data[$indici['dataOra']], true));}else {$reg->setDataModifica($now);}if($data[$indici['identificativo']] != ''){$reg->setIdentificativo($data[$indici['identificativo']]);}else {$reg->setIdentificativo($this->servizi->generaStringaCasuale(20));}$reg->setTitolo($data[$indici['titolo']]);$reg->setDescrizione($data[$indici['descrizione']]);$em->persist($reg);$query_eseguite++;}}else {$errori .= ("RIGA: " . $contatore . " -- Offerta non trovata con Documento: " . $data[$indici['documento']] . " - Numero: " . $data[$indici['numero']] . " - Anno: " . $data[$indici['anno']] . "\n");}} catch (\PDOException $ex) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteRegistroEventi');} catch (\Exception|\Throwable $exception) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $exception->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteRegistroEventi');}$row++;}}else{$errori .= "Impossibile aprire il file!";}$em->flush();$row = $contatore + $row - 1;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteRegistroEventi');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteRegistroEventi');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteRegistroEventi');return new Response('Errore importazione: ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteRegistroEventi');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/caricaOfferteAllegati", name="carica_offerte_allegati")*/public function caricaOfferteAllegati(Request $request){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 1200);ini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$repo = $this->servizi->doctrine->getRepository(OfferteAllegati::class);$repoOfferte = $this->servizi->doctrine->getRepository(Offerte::class);$errori = "";$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /caricaOfferteAllegati--- Inizio l\' importazione dei dati', null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteAllegati');$errori = "";$root_path = $pathFileBase . "offerte_allegati.csv";$separator = $this->imp->ritornaImpostazioneDaNome("ImportazioniFileCsvSeparatore");$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 50;/*0 documento1 numero2 anno3 nome4 file finale5 tipo_file6 operazione7 identificativo*/$indici = array('documento' => 0,'numero' => 1,'anno' => 2,'nome' => 3,'tipoFile' => 4,'operazione' => 5,'identificativo' => 6);try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {if ($row == 0) {$row = 1;continue;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}$now = new \DateTime('now');try {//Recupero l'offerta$offerta = $repoOfferte->findOneBy(array('documento' => $data[$indici['documento']], 'numero' => $data[$indici['numero']], 'anno' => $data[$indici['anno']]));if($offerta){/** @var OfferteAllegati $all */$all = $offerta->RitornaAllegatoDaIdentificativo($data[$indici['identificativo']]);if($all && $data[$indici['operazione']] == 'E'){$em->remove($all);$query_eseguite++;}if($data[$indici['operazione']] != "E"){if(!$all){$all = new OfferteAllegati();$all->setDataCaricamento($now);$all->setOfferta($offerta);}$all->setNome($data[$indici['nome']]);$all->setTipoFile($data[$indici['tipoFile']]);$all->setIdentificativo($this->servizi->generaStringaCasuale(20));$pathFile = $pathFileBase . $all->getNome();if(file_exists($pathFile)){$all->setFile(file_get_contents($pathFile));if(!unlink($pathFile)){$errori .= ("RIGA: " . $contatore . " --- il file non può essere eliminato dal disco!");}}else{$errori .= ("RIGA: " . $contatore . " --- Il file " . $pathFile . " non esiste!");}$em->persist($all);$query_eseguite++;}}else {$errori .= ("RIGA: " . $contatore . " -- Offerta non trovata con Documento: " . $data[$indici['documento']] . " - Numero: " . $data[$indici['numero']] . " - Anno: " . $data[$indici['anno']] . "\n");}} catch (\PDOException $ex) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteAllegati');} catch (\Exception|\Throwable $exception) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", false, 'Errore importazione: ' . $exception->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteAllegati');}$row++;}}else{$errori .= "Impossibile aprire il file!";}$em->flush();$row = $contatore + $row - 1;if ($errori == "") {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteAllegati');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteAllegati');return new Response('Importazione completata con errori in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row . "</br>Lista Errori:</br>" . $errori);}} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteAllegati');return new Response('Errore importazione: ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaOfferteAllegati');return new Response("ERRORE PERMESSO");}} //OK/*** @Route("/importaImmaginiPicard", name="carica_immagini_picard")*/public function importaImmaginiPicard(Request $request){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 21600); // 4 oreini_set('memory_limit', '4G');$start = microtime(true);$this->imp->caricaCacheImpostazioniDaFamiglie(['Importazioni']);//IMPORTO LE IMMAGINItry {$usr = $this->imp->ritornaImpostazioneDaNome('ImportazioniPicardUsername');$psw = $this->imp->ritornaImpostazioneDaNome('ImportazioniPicardPassword');$file_contents = file_get_contents("http://" . $usr . ":" . $psw . "@stock.picard.de/bmecat/bilder.zip");$pathTemp = tempnam(sys_get_temp_dir(), 'imgPicard');$zp = new \ZipArchive;if($file_contents){$res = $zp->open($pathTemp);if($res === true){$zp->extractTo("uploads/PK/");$zp->close();}}}catch (\Exception|\Throwable $ex){$this->servizi->DebuggaException($ex, '', false, null, $collegamentoRnd, 'ImportazioneController', 'importaImmaginiPicard');return new Response('Errore importazione: ' . $ex->getMessage());}$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>', null, $collegamentoRnd, 'ImportazioneController', 'importaImmaginiPicard');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' );} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'importaImmaginiPicard');return new Response("ERRORE PERMESSO");}}/*** @Route("/importaGiacenzeArticoliPicardXML", name="carica_giacenze_lista_articoli_picard")*/public function importaGiacenzePicardXML(Request $request){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 21600); // 4 oreini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$repo = $this->servizi->doctrine->getRepository(MagazzinoSecondarioDisponibilita::class);$repoMappa = $this->servizi->doctrine->getRepository(MappaCategorieArticoli::class);$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');$this->imp->caricaCacheImpostazioniDaFamiglie(['Importazioni']);if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$categorieEscluseDaImportazione = explode(',', $this->imp->ritornaImpostazioneDaNome('ImportazioniPicardCategorieEscluseImportazione'));$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /importaGiacenzaArticoliPicardXML --- Inizio l\' importazione dei dati', null, $collegamentoRnd, 'ImportazioneController', 'importaGiacenzaArticoliPicardXML');try {$filesystem = new Filesystem();//Verifico che esista la cartella pkif (!$filesystem->exists($pathFileBase . 'pk/')) {$filesystem->mkdir($pathFileBase . 'pk/', 0777);}// set up basic connection$conn_id = ftp_connect($this->imp->ritornaImpostazioneDaNome('ImportazioniPicardIndirizzoServerFtp'));// login with username and password$login_result = ftp_login($conn_id, $this->imp->ritornaImpostazioneDaNome('ImportazioniPicardUsername'), $this->imp->ritornaImpostazioneDaNome('ImportazioniPicardPassword'));//Set passive modeftp_pasv($conn_id, true);// try to download $server_file and save to $local_fileftp_get($conn_id, $pathFileBase . 'pk/bestand.csv', '/OUT/bestand.csv', FTP_BINARY);// close the connectionftp_close($conn_id);} catch (\Exception|\Throwable $ex) {$this->servizi->DebuggaException($ex, '', false, null, $collegamentoRnd, 'ImportazioneController', 'importaGiacenzaArticoliPicardXML');die('Errore ' . $ex->getMessage());}$root_path = $pathFileBase . 'pk/bestand.csv';$separator = ";";$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 50;$magazzinoSecondario = $this->servizi->doctrine->getRepository(MagazziniSecondari::class)->findOneBy(array('nome' => 'PICARD'));if (!$magazzinoSecondario) {$magazzinoSecondario = new MagazziniSecondari();$magazzinoSecondario->setNome('PICARD');$magazzinoSecondario->setApprovvigionamentoStimato('4/5 gg lavorativi');$magazzinoSecondario->setAttivo(true);$magazzinoSecondario->setDataCreazione(new \DateTime());$magazzinoSecondario->setDataModifica(new \DateTime());$magazzinoSecondario->setPercentualeDecremento(0);$magazzinoSecondario->setPercentualeIncremento(0);$magazzinoSecondario->setMetodoAcquisizioneDati('');$magazzinoSecondario->setFondiCategorie(false);$magazzinoSecondario->setImportazioneInCorso(false);$em->persist($magazzinoSecondario);$em->flush();$magazzinoSecondario = $this->servizi->doctrine->getRepository(MagazziniSecondari::class)->findOneBy(array('nome' => 'PICARD'));}try {if (($handle = fopen($root_path, "r")) !== false) {while (($data = fgetcsv($handle, 0, $separator, $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEnclosure"), $this->imp->ritornaImpostazioneDaNome("ImportazioneFileCsvEscape"))) !== false) {if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row - 1;$row = 1;$query_eseguite = 0;$em->flush();}$mappa = $repoMappa->createQueryBuilder('mappa')->leftJoin('mappa.articolo', 'articolo')->where('articolo.codiceImportazione = :cod')->setParameter('cod', $data[0])->setMaxResults(1)->getQuery()->getResult();if ($mappa) {$mappa = $mappa[0];$disp = $repo->findOneBy(array('mappaCategorieArticoli' => $mappa, 'magazzinoSecondario' => $magazzinoSecondario));if (!$disp) {$disp = new MagazzinoSecondarioDisponibilita();$disp->setDataCreazione(new \DateTime());$disp->setMagazzinoSecondario($magazzinoSecondario);$disp->setMappaCategorieArticoli($mappa);}$disp->setDisponibilita($data[1]);$disp->setDataModifica(new \DateTime());$em->merge($disp);$query_eseguite++;} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Articolo con codice importazione: ' . $data[0] . ' non trovato!', null, $collegamentoRnd, 'ImportazioneController', 'importaGiacenzaArticoliPicardXML');}}}else{$errori .= "Impossibile aprire il file!";}$em->flush();$em->clear();$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'importaGiacenzaArticoliPicardXML');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} catch (\Exception|\Throwable $ex) {$this->servizi->DebuggaException($ex, '', false, null, $collegamentoRnd, 'ImportazioneController', 'importaGiacenzaArticoliPicardXML');return new Response('Errore importazione: ' . $ex->getMessage());}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'importaGiacenzaArticoliPicardXML');return new Response("ERRORE PERMESSO");}}/*** @Route("/importaArticoliPicardXML", name="carica_lista_articoli_picard")*/public function importaPicardXML(Request $request){$collegamentoRnd = $this->servizi->randomString2();if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {ini_set('max_execution_time', 21600); // 4 oreini_set('memory_limit', '4G');$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$conn = $this->servizi->doctrine->getConnection();$repoListini = $this->servizi->doctrine->getRepository(ListiniVendita::class);$repoCategorie = $this->servizi->doctrine->getRepository(Categorie::class);$repoAttributi = $this->servizi->doctrine->getRepository(Attributi::class);$repoAssociazioneAttributi = $this->servizi->doctrine->getRepository(AssociazioneAttributi::class);$repoArticoli = $this->servizi->doctrine->getRepository(Articoli::class);$codiceListinoBase = $this->imp->ritornaImpostazioneDaNome('CodiceListinoShopComune');$this->imp->caricaCacheImpostazioniDaFamiglie(['Importazioni']);$pathFileBase = $this->imp->ritornaImpostazioneDaNome('PathFileBaseScambioDati');if (!$this->endsWith($pathFileBase, DIRECTORY_SEPARATOR))$pathFileBase .= DIRECTORY_SEPARATOR;$pathFileBase .= ('IN' . DIRECTORY_SEPARATOR);$cacheUmEsistenti = array();$stmt = $conn->prepare('SELECT DISTINCT codice FROM unita_misura');$rst = $stmt->executeQuery();$umEsis = $rst->fetchAllAssociative();foreach ($umEsis as $it) {array_push($cacheUmEsistenti, $it['codice']);}$categorieEscluseDaImportazione = explode(',', $this->imp->ritornaImpostazioneDaNome('ImportazioniPicardCategorieEscluseImportazione'));$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Chiamata effettuata a /importaArticoliPicardXML --- Inizio l\' importazione dei dati', null, $collegamentoRnd, 'ImportazioneController', 'importaArticoliPicardXML');try {$filesystem = new Filesystem();//Verifico che esista la cartella pkif (!$filesystem->exists($pathFileBase . 'pk/')) {$filesystem->mkdir($pathFileBase . 'pk/', 0777);}// set up basic connection$conn_id = ftp_connect($this->imp->ritornaImpostazioneDaNome('ImportazioniPicardIndirizzoServerFtp'));// login with username and password$login_result = ftp_login($conn_id, $this->imp->ritornaImpostazioneDaNome('ImportazioniPicardUsername'), $this->imp->ritornaImpostazioneDaNome('ImportazioniPicardPassword'));//Set passive modeftp_pasv($conn_id, true);// try to download $server_file and save to $local_fileftp_get($conn_id, $pathFileBase . 'pk/picard_bmecat_it.zip', '/OUT/picard_bmecat_it.zip', FTP_BINARY);// close the connectionftp_close($conn_id);$zp = new \ZipArchive;$res = $zp->open($pathFileBase . 'pk/picard_bmecat_it.zip');if ($res === true) {$zp->extractTo($pathFileBase . 'pk/');$zp->close();chmod($pathFileBase . 'pk/picard_bmecat_it.xml', 0755);}} catch (\Exception|\Throwable $ex) {$this->servizi->DebuggaException($ex, '', false, null, $collegamentoRnd, 'ImportazioneController', 'importaArticoliPicardXML');die('Errore ' . $ex->getMessage());}$root_path = $pathFileBase . 'pk/picard_bmecat_it.xml';$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 50;$cacheAttributi = array(); // Chiave codice identificativoif (!in_array('NR', $cacheUmEsistenti)) {$sql = "INSERT INTO unita_misura(codice, descrizione, fattore_conversione, numero_decimali, data_creazione, data_modifica, attivo) VALUES (?,?,?,?,NOW(), NOW(), 1)";$stmt = $conn->prepare($sql);$stmt->bindValue(1, 'NR');$stmt->bindValue(2, 'Numero');$stmt->bindValue(3, 1);$stmt->bindValue(4, 0);$stmt->execute();array_push($cacheUmEsistenti, 'NR');}$umNR = $this->servizi->doctrine->getRepository(UnitaMisura::class)->findOneBy(array('codice' => 'NR'));if (!in_array('KG', $cacheUmEsistenti)) {$sql = "INSERT INTO unita_misura(codice, descrizione, fattore_conversione, numero_decimali, data_creazione, data_modifica, attivo) VALUES (?,?,?,?,NOW(), NOW(), 1)";$stmt = $conn->prepare($sql);$stmt->bindValue(1, 'KG');$stmt->bindValue(2, 'Chilogrammi');$stmt->bindValue(3, 1);$stmt->bindValue(4, 3);$stmt->execute();array_push($cacheUmEsistenti, 'KG');}$strutturaCategorie = array(); //array di array con dentro le varie categorie come chiave ho il group id$listaArticoli = array(); //array di array con chiave il supplier_pidtry {$xmlReader = new \XMLReader();if (!$xmlReader->open($root_path, null, 1 << 19)) {$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Impossibile aprire il file: ' . $root_path, null);die('Failed to open file');}while ($xmlReader->read()) {if ($xmlReader->nodeType == \XMLReader::ELEMENT && $xmlReader->name == 'CATALOG_STRUCTURE') {$nodo = new \SimpleXMLElement($xmlReader->readOuterXml());$img = '';if (isset($nodo->MIME_INFO) && isset($nodo->MIME_INFO->MIME) && isset($nodo->MIME_INFO->MIME->MIME_SOURCE)) {$img = '/uploads/PK/' . strval($nodo->MIME_INFO->MIME->MIME_SOURCE);}$strutturaCategorie[strval($nodo->GROUP_ID)] = array(strval($nodo->GROUP_ID), strval($nodo->GROUP_NAME), strval($nodo->PARENT_ID));if (!in_array(strval($nodo->GROUP_ID), $categorieEscluseDaImportazione)) {//Salvo categoria db se inesistente altrimenti la aggiorno$cat = $repoCategorie->findOneBy(array('codiceOriginale' => strval($nodo->GROUP_ID), 'codice' => ('PKR_' . strval($nodo->GROUP_ID))));if ($cat) {//Categoria esistente aggiorno nome$cat->setNome(strval($nodo->GROUP_NAME));$cat->setDataModifica(new \DateTime());$em->persist($cat);$query_eseguite++;} else {//Nuova categoria la creo$cat = new Categorie();$cat->setNome(strval($nodo->GROUP_NAME));$cat->setCodiceOriginale(strval($nodo->GROUP_ID));$cat->setImmagine($img);$cat->setCodice('PKR_' . strval($nodo->GROUP_ID));$cat->setNomeUnivoco($cat->getCodiceOriginale());$cat->setDataCreazione(new \DateTime());$cat->setDataModifica(new \DateTime());$cat->setAttivo(true);$em->persist($cat);$query_eseguite++;}$query_eseguite = 0;$em->flush();}unset($nodo);} else if ($xmlReader->nodeType == \XMLReader::ELEMENT && $xmlReader->name == 'PRODUCT') {//Dettaglio prodotti$nodo = new \SimpleXMLElement($xmlReader->readOuterXml());$articolo = null;$articolo = $repoArticoli->findOneBy(array('codiceImportazione' => strval($nodo->SUPPLIER_PID)));if ($articolo) {$articolo->setDataModifica(new \DateTime());$articolo->setNome(strval($nodo->MIME_INFO->MIME->MIME_ALT));$articolo->setDescrizioneBreve(strval($nodo->PRODUCT_DETAILS->DESCRIPTION_SHORT));} else {$articolo = new Articoli();$articolo->setUm($umNR);$articolo->setUsaTipologiePreimpostate(false);$articolo->setMacroCategoria('PK');$articolo->setNome(strval($nodo->MIME_INFO->MIME->MIME_ALT));$articolo->setDescrizioneBreve(strval($nodo->PRODUCT_DETAILS->DESCRIPTION_SHORT));$articolo->setCodice(strval($nodo->PRODUCT_DETAILS->MANUFACTURER_PID));$articolo->setCodiceImportazione(strval($nodo->SUPPLIER_PID));$articolo->setDataCreazione(new \DateTime());$articolo->setDataModifica(new \DateTime());}$listaAttributi = array(); //Ricordarsi di iterare alla fine ed associare i vari attributi agli articoliif (isset($nodo->PRODUCT_FEATURES)) {foreach ($nodo->PRODUCT_FEATURES->FEATURE as $feature) {if (strval($feature->FNAME) == 'Peso') {if (strval($feature->FUNIT) == 'kg') {$articolo->setPesoLordo(floatval($feature->FVALUE));if (!$articolo->getUmPeso())$articolo->setUmPeso($this->servizi->doctrine->getRepository(UnitaMisura::class)->findOneBy(array('codice' => 'KG')));}} else {$listaAttributi[strval($feature->FNAME)] = strval($feature->FVALUE);}}}$em->merge($articolo);$query_eseguite++;$prezzo = 0;$costo = 0;if (isset($nodo->PRODUCT_PRICE_DETAILS->PRODUCT_PRICE->PRICE_AMOUNT)) {foreach ($nodo->PRODUCT_PRICE_DETAILS->PRODUCT_PRICE as $price) {$att = $price->attributes();if ($att['price_type'] && $att['price_type'] == 'nrp') {$prezzo = strval($price->PRICE_AMOUNT);} else if ($att['price_type'] && $att['price_type'] == 'net_list') {$costo = strval($price->PRICE_AMOUNT);}}}$listaArticoli[strval($nodo->SUPPLIER_PID)] = array(strval($nodo->SUPPLIER_PID), strval($nodo->PRODUCT_DETAILS->MANUFACTURER_PID), strval($nodo->PRODUCT_DETAILS->MANUFACTURER_NAME), $listaAttributi, $prezzo, $costo);if ($query_eseguite >= $batch_size) {$query_eseguite = 0;$em->flush();}unset($nodo);} else if ($xmlReader->nodeType == \XMLReader::ELEMENT && $xmlReader->name == 'PRODUCT_TO_CATALOGGROUP_MAP') {$nodo = new \SimpleXMLElement($xmlReader->readOuterXml());$prodId = strval($nodo->PROD_ID);$catGrId = strval($nodo->CATALOG_GROUP_ID); //riferimento alla categoria//qui creo le varie categorie, mappe e associo il valore attributiif (!in_array($catGrId, $categorieEscluseDaImportazione)) {//Ottengo le categorie$arraySequenzaCategorie = $this->ritornaCategoria($catGrId, $strutturaCategorie, array());if (count($arraySequenzaCategorie) >= 5) {$cat1 = isset($arraySequenzaCategorie[4]) ? $arraySequenzaCategorie[4] : null;$cat2 = isset($arraySequenzaCategorie[3]) ? $arraySequenzaCategorie[3] : null;$cat3 = isset($arraySequenzaCategorie[2]) ? $arraySequenzaCategorie[2] : null;$cat4 = isset($arraySequenzaCategorie[1]) ? $arraySequenzaCategorie[1] : null;$cat5 = isset($arraySequenzaCategorie[0]) ? $arraySequenzaCategorie[0] : null;} else if (count($arraySequenzaCategorie) == 4) {$cat1 = isset($arraySequenzaCategorie[3]) ? $arraySequenzaCategorie[3] : null;$cat2 = isset($arraySequenzaCategorie[2]) ? $arraySequenzaCategorie[2] : null;$cat3 = isset($arraySequenzaCategorie[1]) ? $arraySequenzaCategorie[1] : null;$cat4 = isset($arraySequenzaCategorie[0]) ? $arraySequenzaCategorie[0] : null;$cat5 = null;} else if (count($arraySequenzaCategorie) == 3) {$cat1 = isset($arraySequenzaCategorie[2]) ? $arraySequenzaCategorie[2] : null;$cat2 = isset($arraySequenzaCategorie[1]) ? $arraySequenzaCategorie[1] : null;$cat3 = isset($arraySequenzaCategorie[0]) ? $arraySequenzaCategorie[0] : null;$cat4 = null;$cat5 = null;} else if (count($arraySequenzaCategorie) == 2) {$cat1 = isset($arraySequenzaCategorie[1]) ? $arraySequenzaCategorie[1] : null;$cat2 = isset($arraySequenzaCategorie[0]) ? $arraySequenzaCategorie[0] : null;$cat3 = null;$cat4 = null;$cat5 = null;} else if (count($arraySequenzaCategorie) == 1) {$cat1 = isset($arraySequenzaCategorie[0]) ? $arraySequenzaCategorie[0] : null;$cat2 = null;$cat3 = null;$cat4 = null;$cat5 = null;} else {$cat1 = null;$cat2 = null;$cat3 = null;$cat4 = null;$cat5 = null;}//Ottengo l'articolo$articolo = $repoArticoli->findOneBy(array('codiceImportazione' => $prodId, 'macroCategoria' => 'PK'));$art = $listaArticoli[$prodId];$marca = '';if ($art && count($art) > 3) {$marca = $art[2];}$mappa = $this->servizi->doctrine->getRepository(MappaCategorieArticoli::class)->findOneBy(array('articolo' => $articolo,'marca' => $marca,'categoria1' => $cat1,'categoria2' => $cat2,'categoria3' => $cat3,'categoria4' => $cat4,'categoria5' => $cat5));if ($articolo && $art) {if (!$mappa) {$mappa = new MappaCategorieArticoli();$mappa->setArticolo($articolo);$mappa->setCategoria1($cat1);$mappa->setCategoria2($cat2);$mappa->setCategoria3($cat3);$mappa->setCategoria4($cat4);$mappa->setCategoria5($cat5);$mappa->setMarca($marca);$mappa->setDisponibile(0);$mappa->setVariantiPresenti(false);$mappa->setDataCreazione(new \DateTime());$mappa->setDataModifica(new \DateTime());$em->merge($mappa);$em->flush();$mappa = $this->servizi->doctrine->getRepository(MappaCategorieArticoli::class)->findOneBy(array('articolo' => $articolo,'marca' => $marca,'categoria1' => $cat1,'categoria2' => $cat2,'categoria3' => $cat3,'categoria4' => $cat4,'categoria5' => $cat5));}if ($art[4] && $art[4] != '0' && floatval($art[4]) > 0) {$listino = $repoListini->findOneBy(array('mappaCategorieArticoli' => $mappa, 'codiceListino' => $codiceListinoBase, 'codiceAnagrafica' => null));if (!$listino) {$listino = new ListiniVendita();$listino->setDataCreazione(new \DateTime());$listino->setMappaCategorieArticoli($mappa);$listino->setCodiceListino($codiceListinoBase);}$listino->setDataModifica(new \DateTime());$listino->setFlagPrezzoNetto(false);$listino->setPrezzo($art[4]);$listino->setCosto($art[5]);$em->persist($listino);$query_eseguite++;}//Gestisco gli attributiforeach ($art[3] as $key => $val) {$value = $art[3][$key];/** @var Attributi $attributo */$attributo = null;if ($value != '' && $value !== false) {if (!array_key_exists($key, $cacheAttributi)) {$attributo = $repoAttributi->findOneBy(array('codiceIdentificativo' => $key));if (!$attributo) {$attributo = new Attributi();$attributo->setNome($key);$attributo->setTestoVisualizzato($key);$attributo->setDataCreazione(new \DateTime());$attributo->setDataModifica(new \DateTime());$attributo->setCodiceIdentificativo($key);$em->persist($attributo);$em->flush();$attributo = $repoAttributi->findOneBy(array('codiceIdentificativo' => $key));$cacheAttributi[$key] = $attributo;}} else {$attributo = $cacheAttributi[$key];}if ($attributo) {$associazione = $repoAssociazioneAttributi->findOneBy(array('articolo' => $articolo, 'mappaCategoriaArticolo' => $mappa, 'attributo' => $attributo));if (!$associazione) {$associazione = new AssociazioneAttributi();$associazione->setArticolo($articolo);$associazione->setMappaCategoriaArticolo($mappa);$associazione->setAttributo($attributo);$associazione->setDataCreazione(new \DateTime());}$associazione->setDataModifica(new \DateTime());$associazione->setValore($value);$em->persist($associazione);$query_eseguite++;}}}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Errore articolo: ' . $prodId . ' - GroupId: ' . $catGrId . ' non trvoato!', null, $collegamentoRnd, 'ImportazioneController', 'importaArticoliPicardXML');}}if ($query_eseguite >= $batch_size) {$query_eseguite = 0;$em->flush();}unset($nodo);}}$em->flush();$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row, null, $collegamentoRnd, 'ImportazioneController', 'importaArticoliPicardXML');return new Response('Importazione completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds</br>' . $row);} catch (\Exception|\Throwable $ex) {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ' . $ex->getMessage(), null, $collegamentoRnd, 'ImportazioneController', 'importaArticoliPicardXML');//unlink($root_path); //Elimino il file temporaneoreturn new Response('Errore importazione: ' . $ex->getMessage() . '<br/>' . $this->servizi->DebuggaException($ex, '', true, $collegamentoRnd, 'ImportazioneController', 'importaArticoliPicardXML'));}} else {$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'importaArticoliPicardXML');return new Response("ERRORE PERMESSO");}}function ritornaCategoria($catalogGroupId, $strutturaCategorie, $arrayCategorie = array()){if(isset($strutturaCategorie[$catalogGroupId])) {$elemento = $strutturaCategorie[$catalogGroupId];if ($elemento) {$categoria = $this->servizi->doctrine->getRepository(Categorie::class)->findOneBy(array('codice' => ('PKR_' . $catalogGroupId)));if ($categoria) {array_push($arrayCategorie, $categoria);if ($elemento[2] != '0') {$arrayCategorie = self::ritornaCategoria($elemento[2], $strutturaCategorie, $arrayCategorie);}}}}return $arrayCategorie;}}