src/Controller/ImportazioneController.php line 3062
<?php
namespace 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\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}", name="carica_articoli_db", defaults={"svuota"="0", "dbg"="0"})
*/
public function caricaArticoliDbAction(Request $request, $svuota, $dbg)
{
$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 articolo
1 nome articolo
2 descrizione breve
3 descrizione estesa articolo
4 immagine minuatura
5 immagine
6 codice aliquota
7 valore aliquota
8 unita di misura
9 codice categoria
10 descrizione categoria
11 codice sub-categoria 1
12 descrizione sub-categoria 1
13 codice sub-categoria 2
14 descrizione sub-categoria 2
15 codice sub-categoria 3
16 descrizione sub-categoria 3
17 marca
18 operazione
19 disponibilita
20 um_peso
21 peso netto
22 peso lordo
23 codice originale importazione
24 prezzo a richiesta
25 codice sub-categoria 4
26 descrizione sub-categoria 4
27 immagine cat1
28 immagine cat2
29 immagine cat3
30 immagine cat4
31 immagine cat5
32 ordine_categoria1
33 ordine_categoria2
34 ordine_categoria3
35 ordine_categoria4
36 ordine_categoria5
37 ordine_articolo
38 ordine_mappa
39 barcode
50 ordini_fornitori
*/
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()
);
}*/
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 {
//categoria
if ($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 1
if ($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 2
if ($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 3
if ($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 4
if (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));
//articolo
if ($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);
$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);
$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_articoli
if ($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);
$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);
$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}", name="carica_categorie_albero", defaults={"svuota"="0", "dbg"="0"})
*/
public function caricaCategorieAlbero(Request $request, $svuota, $dbg)
{
$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 finale
0 codice articolo
1 codice_cat1
2 codice_cat2
3 codice_cat3
4 codice_cat4
5 codice_cat5
6 marca
7 codice_catAlbero1
8 descrizione_catAlbero1
9 immagine_catAlbero1
10 ordine_catAlbero1
11 prezzoARichiesta_catAlbero1
12 codice_catAlbero2
13 descrizione_catAlbero2
14 immagine_catAlbero2
15 ordine_catAlbero2
16 prezzoARichiesta_catAlbero2
17 codice_catAlbero3
18 descrizione_catAlbero3
19 immagine_catAlbero3
20 ordine_catAlbero3
21 prezzoARichiesta_catAlbero3
22 codice_catAlbero4
23 descrizione_catAlbero4
24 immagine_catAlbero4
25 ordine_catAlbero4
26 prezzoARichiesta_catAlbero4
27 codice_catAlbero5
28 descrizione_catAlbero5
29 immagine_catAlbero5
30 ordine_catAlbero5
31 prezzoARichiesta_catAlbero5
32 operazione
33 codice_catAlbero6
34 descrizione_catAlbero6
35 immagine_catAlbero6
36 ordine_catAlbero6
37 prezzoARichiesta_catAlbero6
38 codice_catAlbero7
39 descrizione_catAlbero7
40 immagine_catAlbero7
41 ordine_catAlbero7
42 prezzoARichiesta_catAlbero7
43 codice_catAlbero8
44 descrizione_catAlbero8
45 immagine_catAlbero8
46 ordine_catAlbero8
47 prezzoARichiesta_catAlbero8
48 codice_catAlbero9
49 descrizione_catAlbero9
50 immagine_catAlbero9
51 ordine_catAlbero9
52 prezzoARichiesta_catAlbero9
53 codice_catAlbero10
54 descrizione_catAlbero10
55 immagine_catAlbero10
56 ordine_catAlbero10
57 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
);
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()
);
}*/
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_articoli
if ($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 DISTINCT
att.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` assAtt
LEFT JOIN attributi att ON att.id = assAtt.attributo_id
LEFT JOIN mappa_categorie_articoli mappa ON mappa.id = assAtt.mappa_categoria_articolo_id
LEFT 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 DISTINCT
att.id,
mappa.categoria1_id,
mappa.categoria2_id,
mappa.categoria3_id,
mappa.categoria4_id,
mappa.categoria5_id,
NOW(),
NOW()
FROM `associazione_attributi` assAtt
LEFT JOIN attributi att ON att.id = assAtt.attributo_id
LEFT 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');
else
return 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());
else
return 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 indicato
try {
$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 conta
FROM 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 conta
FROM 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 = 'SELECT
mappa.categoria1_id AS cat1,
mappa.categoria2_id AS cat2,
mappa.categoria3_id AS cat3,
mappa.categoria4_id AS cat4,
mappa.categoria5_id AS cat5
FROM mappa_categorie_articoli mappa
LEFT JOIN categorie c1 ON c1.id = mappa.categoria1_id
LEFT JOIN categorie c2 ON c2.id = mappa.categoria2_id
LEFT JOIN categorie c3 ON c3.id = mappa.categoria3_id
LEFT JOIN categorie c4 ON c4.id = mappa.categoria4_id
LEFT JOIN categorie c5 ON c5.id = mappa.categoria5_id
LEFT JOIN articoli a on mappa.articolo_id = a.id
WHERE mappa.attivo = 1 AND a.attivo = 1
AND (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_id
ORDER BY c1.ordinamento, c1.nome, c2.ordinamento, c2.nome, c3.ordinamento, c3.nome, c4.ordinamento, c4.nome, c5.ordinamento, c5.nome
LIMIT ' . $batch . " OFFSET " . $inizio;
if($usaCategorieAlbero){
$sql = 'SELECT
ass.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 cat10
FROM mappa_categorie_articoli mappa
LEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass ON ass.mappa_categoria_articolo_id = mappa.id
LEFT JOIN categorie_albero c1 ON c1.id = ass.categoria_albero1_id
LEFT JOIN categorie_albero c2 ON c2.id = ass.categoria_albero2_id
LEFT JOIN categorie_albero c3 ON c3.id = ass.categoria_albero3_id
LEFT JOIN categorie_albero c4 ON c4.id = ass.categoria_albero4_id
LEFT JOIN categorie_albero c5 ON c5.id = ass.categoria_albero5_id
LEFT JOIN categorie_albero c6 ON c6.id = ass.categoria_albero6_id
LEFT JOIN categorie_albero c7 ON c7.id = ass.categoria_albero7_id
LEFT JOIN categorie_albero c8 ON c8.id = ass.categoria_albero8_id
LEFT JOIN categorie_albero c9 ON c9.id = ass.categoria_albero9_id
LEFT JOIN categorie_albero c10 ON c10.id = ass.categoria_albero10_id
LEFT JOIN articoli a on mappa.articolo_id = a.id
WHERE mappa.attivo = 1 AND a.attivo = 1
AND (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_id
ORDER 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.nome
LIMIT ' . $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 NULL
THEN (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 WHERE
ris.codice_anagrafica = '' AND
ris.codice_categoria1 = ? AND
ris.codice_categoria2 = '' AND
ris.codice_categoria3 = '' AND
ris.codice_categoria4 = '' AND
ris.codice_categoria5 = '' AND
ris.codice_articolo = '' AND
ris.marca = '' AND
ris.codice_dimensione1 = '' AND
ris.codice_dimensione2 = '' AND
ris.codice_dimensione3 = '' AND
ris.codice_dimensione4 = '' AND
ris.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) SELECT
DISTINCT(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 ass
LEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_id
LEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.id
WHERE " . ($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 NULL
THEN (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 WHERE
ris.codice_anagrafica = '' AND
ris.codice_categoria1 = ? AND
ris.codice_categoria2 = ? AND
ris.codice_categoria3 = '' AND
ris.codice_categoria4 = '' AND
ris.codice_categoria5 = '' AND
ris.codice_articolo = '' AND
ris.marca = '' AND
ris.codice_dimensione1 = '' AND
ris.codice_dimensione2 = '' AND
ris.codice_dimensione3 = '' AND
ris.codice_dimensione4 = '' AND
ris.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) SELECT
DISTINCT(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 ass
LEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_id
LEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.id
WHERE " . ($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 NULL
THEN (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 WHERE
ris.codice_anagrafica = '' AND
ris.codice_categoria1 = ? AND
ris.codice_categoria2 = ? AND
ris.codice_categoria3 = ? AND
ris.codice_categoria4 = '' AND
ris.codice_categoria5 = '' AND
ris.codice_articolo = '' AND
ris.marca = '' AND
ris.codice_dimensione1 = '' AND
ris.codice_dimensione2 = '' AND
ris.codice_dimensione3 = '' AND
ris.codice_dimensione4 = '' AND
ris.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) SELECT
DISTINCT(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 ass
LEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_id
LEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass.mappa_categoria_articolo_id = mappa.id
WHERE " . ($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 NULL
THEN (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 WHERE
ris.codice_anagrafica = '' AND
ris.codice_categoria1 = ? AND
ris.codice_categoria2 = ? AND
ris.codice_categoria3 = ? AND
ris.codice_categoria4 = ? AND
ris.codice_categoria5 = '' AND
ris.codice_articolo = '' AND
ris.marca = '' AND
ris.codice_dimensione1 = '' AND
ris.codice_dimensione2 = '' AND
ris.codice_dimensione3 = '' AND
ris.codice_dimensione4 = '' AND
ris.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) SELECT
DISTINCT(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 ass
LEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_id
LEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.id
WHERE " . ($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 NULL
THEN (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 WHERE
ris.codice_anagrafica = '' AND
ris.codice_categoria1 = ? AND
ris.codice_categoria2 = ? AND
ris.codice_categoria3 = ? AND
ris.codice_categoria4 = ? AND
ris.codice_categoria5 = ? AND
ris.codice_articolo = '' AND
ris.marca = '' AND
ris.codice_dimensione1 = '' AND
ris.codice_dimensione2 = '' AND
ris.codice_dimensione3 = '' AND
ris.codice_dimensione4 = '' AND
ris.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) SELECT
DISTINCT(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 ass
LEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_id
LEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.id
WHERE " . ($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 ($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 NULL
THEN (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 WHERE
ris.codice_anagrafica = '' AND
ris.codice_categoria1 = ? AND
ris.codice_categoria2 = ? AND
ris.codice_categoria3 = ? AND
ris.codice_categoria4 = ? AND
ris.codice_categoria5 = ? AND
ris.codice_articolo = '' AND
ris.marca = '' AND
ris.codice_dimensione1 = '' AND
ris.codice_dimensione2 = '' AND
ris.codice_dimensione3 = '' AND
ris.codice_dimensione4 = '' AND
ris.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) SELECT
DISTINCT(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 ass
LEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_id
LEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.id
WHERE " . ($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 NULL
THEN (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 WHERE
ris.codice_anagrafica = '' AND
ris.codice_categoria1 = ? AND
ris.codice_categoria2 = ? AND
ris.codice_categoria3 = ? AND
ris.codice_categoria4 = ? AND
ris.codice_categoria5 = ? AND
ris.codice_articolo = '' AND
ris.marca = '' AND
ris.codice_dimensione1 = '' AND
ris.codice_dimensione2 = '' AND
ris.codice_dimensione3 = '' AND
ris.codice_dimensione4 = '' AND
ris.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) SELECT
DISTINCT(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 ass
LEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_id
LEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.id
WHERE " . ($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 NULL
THEN (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 WHERE
ris.codice_anagrafica = '' AND
ris.codice_categoria1 = ? AND
ris.codice_categoria2 = ? AND
ris.codice_categoria3 = ? AND
ris.codice_categoria4 = ? AND
ris.codice_categoria5 = ? AND
ris.codice_articolo = '' AND
ris.marca = '' AND
ris.codice_dimensione1 = '' AND
ris.codice_dimensione2 = '' AND
ris.codice_dimensione3 = '' AND
ris.codice_dimensione4 = '' AND
ris.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) SELECT
DISTINCT(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 ass
LEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_id
LEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.id
WHERE " . ($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 NULL
THEN (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 WHERE
ris.codice_anagrafica = '' AND
ris.codice_categoria1 = ? AND
ris.codice_categoria2 = ? AND
ris.codice_categoria3 = ? AND
ris.codice_categoria4 = ? AND
ris.codice_categoria5 = ? AND
ris.codice_articolo = '' AND
ris.marca = '' AND
ris.codice_dimensione1 = '' AND
ris.codice_dimensione2 = '' AND
ris.codice_dimensione3 = '' AND
ris.codice_dimensione4 = '' AND
ris.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) SELECT
DISTINCT(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 ass
LEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_id
LEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.id
WHERE " . ($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 NULL
THEN (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 WHERE
ris.codice_anagrafica = '' AND
ris.codice_categoria1 = ? AND
ris.codice_categoria2 = ? AND
ris.codice_categoria3 = ? AND
ris.codice_categoria4 = ? AND
ris.codice_categoria5 = ? AND
ris.codice_articolo = '' AND
ris.marca = '' AND
ris.codice_dimensione1 = '' AND
ris.codice_dimensione2 = '' AND
ris.codice_dimensione3 = '' AND
ris.codice_dimensione4 = '' AND
ris.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) SELECT
DISTINCT(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 ass
LEFT JOIN mappa_categorie_articoli mappa ON mappa.id = ass.mappa_categoria_articolo_id
LEFT JOIN associazione_categorie_albero_mappa_categorie_articoli ass2 ON ass2.mappa_categoria_articolo_id = mappa.id
WHERE " . ($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 Campo
0 identificativo_unico_risorsa_anagrafica
1 nome_colonna
2 ordinatore
3 valore
4 tipo_dato
5 header_visualizzato
6 nascosto
7 operazione
8 direzione_ordinamento
9 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}", name="carica_rassociazione_articoli_clienti", defaults={"svuota"="0"})
*/
public function caricaAssociazioneArticoliClienti(Request $request, $svuota)
{
$collegamentoRnd = $this->servizi->randomString2();
if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {
ini_set('max_execution_time', 7200);
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 Campo
0 codice_cliente
1 codice_articolo
2 codice_cat1
3 codice_cat2
4 codice_cat3
5 codice_cat4
6 codice_cat5
7 marca
8 codice_variante
9 ass_codice
10 ass_nome
11 ass_descrizione
12 ass_marca
13 ass_immagine_dimensione_1
14 ass_codice_dimensione_1
15 ass_descrizione_dimensione_1
16 ass_immagine_dimensione_2
17 ass_codice_dimensione_2
18 ass_descrizione_dimensione_2
19 ass_immagine_dimensione_3
20 ass_codice_dimensione_3
21 ass_descrizione_dimensione_3
22 ass_immagine_dimensione_4
23 ass_codice_dimensione_4
24 ass_descrizione_dimensione_4
25 ass_immagine_dimensione_5
26 ass_codice_dimensione_5
27 ass_descrizione_dimensione_5
28 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
);
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();
}
$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", name="carica_disponibilita")
*/
public function caricaDisponibilita(Request $request)
{
$collegamentoRnd = $this->servizi->randomString2();
if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {
ini_set('max_execution_time', 7200);
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 Campo
0 codice_articolo
1 codice_cat1
2 codice_cat2
3 codice_cat3
4 codice_cat4
5 codice_cat5
6 marca
7 codice_variante
8 disponibilita
9 ordini_fornitori
10 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
);
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();
}
$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 Campo
0 codice_anagrafica
1 tipo_risorsa
2 path_file
3 nome_file
4 identificativo_unico_risorsa
5 categoria
6 operazione
7 visibile a cliente
8 dataRisorsa
9 codice_categoria1
10 codice_categoria2
11 codice_categoria3
12 codice_categoria4
13 codice_categoria5
14 codice_articolo
15 marca
16 codice_dimensione1
17 codice_dimensione2
18 codice_dimensione3
19 codice_dimensione4
20 codice_dimensione5
21 chiave ricerca esterno
22 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_univoco
1 titolo
2 sottotitolo
3 agente
4 categoria
5 codice_cliente
6 chiave_ricerca_esterno
7 recupera_con_webservice
8 livello_permesso
9 raw_html_contenuto
10 path_file_recupero_webservice_custom
11 operazione
12 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}", name="carica_disponibilita_per_fascia", defaults={"svuota"="0"})
*/
public function caricaDisponibilitaPerFascia(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);
$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 articolo
1 codice categoria 1
2 codice categoria 2
3 codice categoria 3
4 codice categoria 4
5 codice categoria 5
6 marca
7 disponibilita
8 etichetta
9 operazione
10 principale
11 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
);
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();
}
$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}", name="carica_associazione_articoli_tipo_ordine", defaults={"svuota"="0"})
*/
public function caricaAssociazioneArticoliTipoOrdine(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);
$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 articolo
1 codice categoria 1
2 codice categoria 2
3 codice categoria 3
4 codice categoria 4
5 codice categoria 5
6 marca
7 codice_variante
8 codice_tipo_ordine
9 operazione
*/
$indici = array(
"codiceArticolo" => 0,
"categoria1" => 1,
"categoria2" => 2,
"categoria3" => 3,
"categoria4" => 4,
"categoria5" => 5,
"marca" => 6,
"codiceVariante" => 7,
'codiceTipoOrdine' => 8,
'operazione' => 9
);
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();
}
$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 codice
1 descrizione
2 testo visualizzato
3 codice esportazione
4 operazione
5 mostra tutto
6 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", name="aggiorna_ordini")
*/
public function aggiornaOrdini(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();
$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_ordine
1 fattura
2 nome_file_fattura
3 ddt
4 nome_file_ddt
5 ordine
6 nome_file_ordine
7 offerta
8 nome_file_offerta
9 url_tracking_vettore
10 vettore
11 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
);
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();
}
/** $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 username
1 categorie
2 mostra
3 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}", name="carica_sconti_clienti_anagrafiche", defaults={"svuota"="0"})
*/
public function caricaScontiAnagraficheAction(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);
$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 Campo
0 codice_anagrafica
1 codice_articolo
2 codice_variante
3 etichetta
4 sconto
5 operazione
6 applica_sempre
7 codice_categorie
*/
$indici = array(
"codiceAnagrafica" => 0,
"codiceGruppoAnagrafica" => '',
"codiceGruppoArticoli" => '',
"codiceArticolo" => 1,
"codiceVariante" => 2,
"etichetta" => 3,
"sconto" => 4,
"operazione" => 5,
'applicaSempre' => 6,
'codiceGruppoCategorie' => 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');
$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;
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 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', 'caricaScontiClientiAnagrafiche');
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', 'caricaScontiClientiAnagrafiche');
return new Response('Errore importazione (RIGA: ' . $contatore . ') : ' . $ex->getMessage());
}
} else {
$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", false, 'Errore importazione: ERRORE_PERMESSO', null, $collegamentoRnd, 'ImportazioneController', 'caricaScontiClientiAnagrafiche');
return new Response("ERRORE PERMESSO");
}
} //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 Campo
0 codice_anagrafica
1 ordine
2 identificativo
3 etichetta
4 valore
5 operazione
6 tipo
7 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");
}
} //OK
function 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 codice
1 descrizione
2 fattore conversione
3 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 iso
1 descrizione
2 flag paese cee
3 flag black list
4 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_cliente
1 identificativo_blocco
2 tipo_blocco
3 mostra_avviso
4 testo_avviso
5 vincola_a_codice_agente
6 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 articolo
1 codice dimensione 01
2 descrizione dimensione 01
3 posizione dimensione 01
4 immagine dimensione 01
5 codice dimensione 02
6 descrizione dimensione 02
7 posizione dimensione 02
8 immagine dimensione 02
9 codice dimensione 02
10 descrizione dimensione 02
11 posizione dimensione 02
12 immagine dimensione 02
13 codice dimensione 02
14 descrizione dimensione 02
15 posizione dimensione 02
16 immagine dimensione 02
17 codice dimensione 02
18 descrizione dimensione 02
19 posizione dimensione 02
20 immagine dimensione 02
21 codice variante
22 disponibilita
23 operazione
24 um_peso
25 peso netto
26 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 codice
1 descrizione
2 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_variante
1 identificativo_campo
2 nome
3 multipli_di
4 qta_minima
5 messaggio_errore
6 attivo
7 operazione
8 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_cliente
1 tipo_indirizzo
2 ragione_sociale
3 indirizzo
4 cap
5 citta
6 provincia
7 nazione
8 latitudine
9 longitudine
10 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_cliente
1 ragione_sociale
2 indirizzo
3 cap
4 citta
5 provincia
6 nazione
7 codice_zona
8 descrizione_zona
9 telefono
10 fax
11 cellulare
12 sito_web
13 indirizzi_mail
14 codice_fiscale
15 partita_iva
16 codice_assoggettamento_fiscale
17 descrizione_assoggettamento_fiscale
18 codice_abi
19 codice_cab
20 iban
21 codice_pagamnto
22 descrizione_pagamento
23 sconto_commerciale
24 sconto_pagamento
25 codice_riclassifica_amm_1
26 descrizione_riclassifica_amministrativa_1
27 codice_spedizione
28 descrizione_spedizione
29 codice_consegna
30 descrizione_consegna
31 codice_agente
32 descrizione_agente
33 codice_canale_commerciale
34 descrizione_canale_commerciale
35 latitudine
36 longitudine
37 note_anagrafica
38 operazione
39 codice_listino
40 descrizione_listino
41 attiva_online
42 mail_attivazione_online
43 valore_aliquota_iva
44 codice_aliquota_iva
45 ruolo
46 associazione_codici_agenti_fornitori
47 andamento generale fatturato
48 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 riga
if (!$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 associati
if(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}", name="carica_listini_vendita", defaults={"svuota"="0"})
*/
public function caricaListiniVendita(Request $request, $svuota)
{
$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 listino
1 descrizione listino
2 codice_anagrafica
3 codice articolo
4 codice variante
5 prezzo
6 operazione
7 flag_prezzo_netto
8 codice_cat_1
9 codice_cat_2
10 codice_cat_3
11 codice_cat_4
12 codice_cat_5
13 marca
14 costo
15 codice_tipo_ordine
16 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
);
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 {
$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", name="carica_offerte")
*/
public function caricaOfferte(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(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_cliente
1 ragione_sociale
2 descrizione_breve
3 descrizione_lunga
4 data_documento
5 importo
6 stato
7 documento
8 numero
9 anno
10 moneta
11 importante
12 path_pdf_originale
13 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
);
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 {
//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}", name="carica_documenti", defaults={"svuota"="0"})
*/
public function caricaDocumenti(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(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 documento
1 documento
2 anno
3 data_documento 2021-12-31
4 numero
5 numero_fattura
6 data_fattura 2021-12-31
7 numero_ddt
8 data_ddt 2021-12-31
9 agente
10 codice_anagrafica
11 tipo_anagrafica cliente/fornitore/agente/altro
12 ragione_sociale
13 indirizzo
14 citta
15 provincia
16 cap
17 regione
18 codice_fiscale
19 partita_iva
20 modalita_pagamento
21 modalita_spedizione
22 modalita_consegna
23 totale_documento_netto decimal(18,5)
24 totale_costo_netto decimal(18,5)
25 zona
26 mercato
27 sub_agente
28 capo_area
29 nome_file_pdf_documento
30 nome_file_pdf_fattura
31 nome_file_pdf_ddt
32 stato_avanzamento
33 indirizzo_tracking_corriere
34 utente
35 data_consegna 2021-12-31
36 operazione E=Elimina - A=Aggiorna - N=Aggiungi
37 codice_agente
38 variabile stringa 1
39 variabile stringa 2
40 variabile stringa 3
41 variabile stringa 4
42 variabile stringa 5
43 variabile decimale 1
44 variabile decimale 2
45 variabile decimale 3
46 variabile decimale 4
47 variabile decimale 5
48 variabile data ora 1
49 variabile data ora 2
50 variabile data ora 3
51 variabile booleana 1
52 variabile booleana 2
53 variabile booleana 3
54 codice_fornitore
55 tipo_documento
56 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
);
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 {
//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}", name="carica_documenti_righe", defaults={"svuota"="0"})
*/
public function caricaRigheDocumenti(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(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 documento
1 numero_riga intero che identifica la riga (Chiave univoca)
2 codice_articolo
3 descrizione_articolo
4 marca
5 um
6 data_consegna 2021-12-31
7 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.00
13 descrizione_articolo_agg1
14 descrizione_articolo_agg2
15 variabile_1
16 variabile_2
17 variabile_3
18 variabile_4
19 variabile_5
20 qta_alt_1
21 qta_alt_2
22 qta_alt_3
23 costo_cad decimal(18,5)
24 costo_totale decimal(18,5)
25 stato_avanzamento
26 numero_riga_alternativo intero
27 operazione E=Elimina - A=Aggiorna - N=Aggiungi
28 variabile stringa 1
29 variabile stringa 2
30 variabile stringa 3
31 variabile stringa 4
32 variabile stringa 5
33 variabile decimale 1
34 variabile decimale 2
35 variabile decimale 3
36 variabile decimale 4
37 variabile decimale 5
38 variabile data ora 1
39 variabile data ora 2
40 variabile data ora 3
41 variabile booleana 1
42 variabile booleana 2
43 variabile booleana 3
44 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
);
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 {
$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", name="carica_offerte_righe")
*/
public function caricaOfferteRighe(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(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 documento
1 numero
2 anno
3 macro_categoria_articolo
4 codice_articolo
5 marca_articolo
6 descrizione_articolo
7 descrizione_seconaria_articolo
8 um
9 stringa_sconti
10 qta
11 nota_riga
12 netto_cad
13 lordo_cad
14 netto_totale
15 lordo_totale
16 imposta
17 imponibile
18 operazione
19 numeroRiga
20 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
);
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 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 documento
1 numero
2 anno
3 titolo
4 descrizione
5 operazione
6 identificativo
7 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 documento
1 numero
2 anno
3 nome
4 file finale
5 tipo_file
6 operazione
7 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 ore
ini_set('memory_limit', '4G');
$start = microtime(true);
$this->imp->caricaCacheImpostazioniDaFamiglie(['Importazioni']);
//IMPORTO LE IMMAGINI
try {
$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 ore
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(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 pk
if (!$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 mode
ftp_pasv($conn_id, true);
// try to download $server_file and save to $local_file
ftp_get($conn_id, $pathFileBase . 'pk/bestand.csv', '/OUT/bestand.csv', FTP_BINARY);
// close the connection
ftp_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 ore
ini_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 pk
if (!$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 mode
ftp_pasv($conn_id, true);
// try to download $server_file and save to $local_file
ftp_get($conn_id, $pathFileBase . 'pk/picard_bmecat_it.zip', '/OUT/picard_bmecat_it.zip', FTP_BINARY);
// close the connection
ftp_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 identificativo
if (!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_pid
try {
$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 articoli
if (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 attributi
if (!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 attributi
foreach ($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 temporaneo
return 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;
}
}