'.tr('Attenzione: questa funzionalità può presentare dei risultati falsamente positivi, sulla base del contenuto del file _FILE_ e la versione _MYSQL_VERSION_ di _DBMS_TYPE_ rilevata a sistema', [
- '_FILE_' => ''.$file_to_check_database.'',
- '_MYSQL_VERSION_' => ''.$database->getMySQLVersion().'',
- '_DBMS_TYPE_' => ''.$database->getType().'',
- ]).'.
+ '_FILE_' => ''.$file_to_check_database.'',
+ '_MYSQL_VERSION_' => ''.$database->getMySQLVersion().'',
+ '_DBMS_TYPE_' => ''.$database->getType().'',
+ ]).'.
@@ -534,7 +525,6 @@ if (!empty($results) || !empty($results_added) || !empty($results_settings) || !
';
}
-
if (!empty($query_conflitti)) {
echo '
';
-
-
}
// Visualizzo, in base alle impostazioni scelte, se il magazzino verrà movimentato
diff --git a/modules/articoli/src/Import/CSV.php b/modules/articoli/src/Import/CSV.php
index e5d97938d..48f41df2e 100644
--- a/modules/articoli/src/Import/CSV.php
+++ b/modules/articoli/src/Import/CSV.php
@@ -278,7 +278,7 @@ class CSV extends CSVImporter
}
// Crea una chiave univoca per evitare duplicati
- $key = $record[$primary_key] . '|' . $record['anagrafica_listino'];
+ $key = $record[$primary_key].'|'.$record['anagrafica_listino'];
if (isset($processed_records[$key])) {
continue; // Evita di elaborare lo stesso record più volte
}
@@ -319,171 +319,13 @@ class CSV extends CSVImporter
}
}
- /**
- * Processa la categoria dell'articolo.
- *
- * @param array $record Record da processare
- * @return Categoria|null Categoria processata
- */
- protected function processaCategoria($record)
- {
- if (empty($record['categoria'])) {
- return null;
- }
-
- $categoria = Categoria::where('id', '=', (new Categoria())->getByField('title', strtolower((string) $record['categoria'])))->where('is_articolo', '=', 0)->first();
-
- if (empty($categoria)) {
- $categoria = Categoria::build();
- $categoria->setTranslation('title', $record['categoria']);
- $categoria->is_articolo = 1;
- $categoria->save();
- }
-
- return $categoria;
- }
-
- /**
- * Processa la sottocategoria dell'articolo.
- *
- * @param array $record Record da processare
- * @param Categoria|null $categoria Categoria padre
- * @return Categoria|null Sottocategoria processata
- */
- protected function processaSottocategoria($record, $categoria)
- {
- if (empty($record['sottocategoria']) || empty($categoria)) {
- return null;
- }
-
- $sottocategoria = Categoria::where('id', '=', (new Categoria())->getByField('title', strtolower((string) $record['sottocategoria'])))->first();
-
- if (empty($sottocategoria)) {
- $sottocategoria = Categoria::build();
- $sottocategoria->setTranslation('title', $record['sottocategoria']);
- $sottocategoria->parent()->associate($categoria);
- $sottocategoria->save();
- }
-
- return $sottocategoria;
- }
-
- /**
- * Processa la marca dell'articolo.
- *
- * @param array $record Record da processare
- * @return Marca|null Marca processata
- */
- protected function processaMarca($record)
- {
- if (empty($record['marca'])) {
- return null;
- }
-
- $marca = Marca::where('name', $record['marca'])->first();
-
- if (empty($marca)) {
- $marca = Marca::build($record['marca']);
- $marca->save();
- }
-
- return $marca;
- }
-
- /**
- * Processa l'unità di misura dell'articolo.
- *
- * @param array $record Record da processare
- * @return void
- */
- protected function processaUnitaMisura($record)
- {
- if (empty($record['um'])) {
- return;
- }
-
- $database = database();
- $um = $database->fetchOne('SELECT id FROM `mg_unitamisura` WHERE `valore`='.prepare($record['um']));
- if (empty($um)) {
- $database->query('INSERT INTO `mg_unitamisura` (`valore`) VALUES ('.prepare($record['um']).')');
- }
- }
-
- /**
- * Processa l'immagine dell'articolo.
- *
- * @param Articolo $articolo Articolo da aggiornare
- * @param string $url URL dell'immagine
- * @param array $record Record da processare
- * @return void
- */
- protected function processaImmagine($articolo, $url, $record)
- {
- if (empty($url) || empty($record['import_immagine'])) {
- return;
- }
-
- try {
- $file_content = @file_get_contents($url);
-
- if (empty($file_content)) {
- return;
- }
-
- $database = database();
-
- /**
- * Import immagine options:
- *
- * - 1: Permette di importare l'immagine come principale dell'articolo mantenendo gli altri allegati già presenti.
- * - 2: Permette di importare l'immagine come principale dell'articolo rimuovendo tutti gli allegati presenti.
- * - 3: Permette di importare l'immagine come allegato dell'articolo.
- * - 4: Permette di importare l'immagine come allegato dell'articolo rimuovendo tutti gli allegati presenti.
- */
- if ($record['import_immagine'] == 2 || $record['import_immagine'] == 4) {
- \Uploads::deleteLinked([
- 'id_module' => Module::where('name', 'Articoli')->first()->id,
- 'id_record' => $articolo->id,
- ]);
-
- $database->update('mg_articoli', [
- 'immagine' => '',
- ], [
- 'id' => $articolo->id,
- ]);
- }
-
- $name = 'immagine_'.$articolo->id.'.'.Upload::getExtensionFromMimeType($file_content);
-
- $upload = \Uploads::upload($file_content, [
- 'name' => 'Immagine',
- 'category' => 'Immagini',
- 'original_name' => $name,
- 'id_module' => Module::where('name', 'Articoli')->first()->id,
- 'id_record' => $articolo->id,
- ], [
- 'thumbnails' => true,
- ]);
-
- if ($upload && !empty($upload->filename) && ($record['import_immagine'] == 1 || $record['import_immagine'] == 2)) {
- $database->update('mg_articoli', [
- 'immagine' => $upload->filename,
- ], [
- 'id' => $articolo->id,
- ]);
- }
- } catch (\Exception $e) {
- // Registra l'errore ma continua con l'importazione
- error_log('Errore durante l\'importazione dell\'immagine: ' . $e->getMessage());
- }
- }
-
/**
* Importa un record nel database.
*
- * @param array $record Record da importare
- * @param bool $update_record Se true, aggiorna i record esistenti
- * @param bool $add_record Se true, aggiunge nuovi record
+ * @param array $record Record da importare
+ * @param bool $update_record Se true, aggiorna i record esistenti
+ * @param bool $add_record Se true, aggiunge nuovi record
+ *
* @return bool|null True se l'importazione è riuscita, false altrimenti, null se l'operazione è stata saltata
*/
public function import($record, $update_record = true, $add_record = true)
@@ -557,7 +399,7 @@ class CSV extends CSVImporter
$nome_sede = $record['nome_sede'] ?? '';
// Aggiornamento dettaglio prezzi
- $dettagli['anagrafica_listino'] = $dettagli['anagrafica_listino'] ?? $record['anagrafica_listino'];
+ $dettagli['anagrafica_listino'] ??= $record['anagrafica_listino'];
$dettagli['partita_iva'] = $record['p_iva'] ?? '';
$dettagli['qta_minima'] = $record['qta_minima'] ?? '';
$dettagli['qta_massima'] = $record['qta_massima'] ?? '';
@@ -575,9 +417,9 @@ class CSV extends CSVImporter
// Rimuovi i campi già elaborati
unset($record['anagrafica_listino'], $record['p_iva'], $record['qta_minima'],
- $record['qta_massima'], $record['prezzo_listino'], $record['sconto_listino'],
- $record['dir'], $record['codice_fornitore'], $record['barcode_fornitore'],
- $record['descrizione_fornitore'], $record['id_fornitore']);
+ $record['qta_massima'], $record['prezzo_listino'], $record['sconto_listino'],
+ $record['dir'], $record['codice_fornitore'], $record['barcode_fornitore'],
+ $record['descrizione_fornitore'], $record['id_fornitore']);
// Gestione immagine
$this->processaImmagine($articolo, $url, $record);
@@ -617,18 +459,192 @@ class CSV extends CSVImporter
return true;
} catch (\Exception $e) {
// Registra l'errore in un log
- error_log('Errore durante l\'importazione dell\'articolo: ' . $e->getMessage());
+ error_log('Errore durante l\'importazione dell\'articolo: '.$e->getMessage());
+
return false;
}
}
+ public static function getExample()
+ {
+ return [
+ ['Codice', 'Immagine', 'Import immagine', 'Descrizione', 'Quantità', 'Data inventario', 'Unità misura', 'Prezzo acquisto', 'Prezzo vendita', 'Peso', 'Volume', 'Categoria', 'Sottocategoria', 'marca', 'Modello', 'Barcode', 'Fornitore predefinito', 'Partita IVA', 'Codice IVA vendita', 'Ubicazione', 'Note', 'Anagrafica listino', 'Codice fornitore', 'Barcode fornitore', 'Descrizione fornitore', 'Qta minima', 'Qta massima', 'Prezzo listino', 'Sconto listino', 'Cliente/Fornitore listino', 'Sede'],
+ ['OSM-BUDGET', 'https://openstamanager.com/moduli/budget/budget.webp', '2', 'Modulo Budget per OpenSTAManager', '1', '28/11/2023', 'PZ', '90.00', '180.00', '', '', 'Software gestionali', 'Moduli aggiuntivi', 'DevCode', 'Budget', '4006381333931', 'DevCode s.r.l.', '05024030289', '', '', 'Nota ad uso interno', 'DevCode s.r.l.', 'DEV-BUDGET', '0123456789012', 'Strumento gestionale utilizzato per pianificare e monitorare le entrate e uscite aziendali', '1', '10', '180.00', '20', 'Fornitore', 'Sede'],
+ ];
+ }
+
+ /**
+ * Processa la categoria dell'articolo.
+ *
+ * @param array $record Record da processare
+ *
+ * @return Categoria|null Categoria processata
+ */
+ protected function processaCategoria($record)
+ {
+ if (empty($record['categoria'])) {
+ return null;
+ }
+
+ $categoria = Categoria::where('id', '=', (new Categoria())->getByField('title', strtolower((string) $record['categoria'])))->where('is_articolo', '=', 0)->first();
+
+ if (empty($categoria)) {
+ $categoria = Categoria::build();
+ $categoria->setTranslation('title', $record['categoria']);
+ $categoria->is_articolo = 1;
+ $categoria->save();
+ }
+
+ return $categoria;
+ }
+
+ /**
+ * Processa la sottocategoria dell'articolo.
+ *
+ * @param array $record Record da processare
+ * @param Categoria|null $categoria Categoria padre
+ *
+ * @return Categoria|null Sottocategoria processata
+ */
+ protected function processaSottocategoria($record, $categoria)
+ {
+ if (empty($record['sottocategoria']) || empty($categoria)) {
+ return null;
+ }
+
+ $sottocategoria = Categoria::where('id', '=', (new Categoria())->getByField('title', strtolower((string) $record['sottocategoria'])))->first();
+
+ if (empty($sottocategoria)) {
+ $sottocategoria = Categoria::build();
+ $sottocategoria->setTranslation('title', $record['sottocategoria']);
+ $sottocategoria->parent()->associate($categoria);
+ $sottocategoria->save();
+ }
+
+ return $sottocategoria;
+ }
+
+ /**
+ * Processa la marca dell'articolo.
+ *
+ * @param array $record Record da processare
+ *
+ * @return Marca|null Marca processata
+ */
+ protected function processaMarca($record)
+ {
+ if (empty($record['marca'])) {
+ return null;
+ }
+
+ $marca = Marca::where('name', $record['marca'])->first();
+
+ if (empty($marca)) {
+ $marca = Marca::build($record['marca']);
+ $marca->save();
+ }
+
+ return $marca;
+ }
+
+ /**
+ * Processa l'unità di misura dell'articolo.
+ *
+ * @param array $record Record da processare
+ *
+ * @return void
+ */
+ protected function processaUnitaMisura($record)
+ {
+ if (empty($record['um'])) {
+ return;
+ }
+
+ $database = database();
+ $um = $database->fetchOne('SELECT id FROM `mg_unitamisura` WHERE `valore`='.prepare($record['um']));
+ if (empty($um)) {
+ $database->query('INSERT INTO `mg_unitamisura` (`valore`) VALUES ('.prepare($record['um']).')');
+ }
+ }
+
+ /**
+ * Processa l'immagine dell'articolo.
+ *
+ * @param Articolo $articolo Articolo da aggiornare
+ * @param string $url URL dell'immagine
+ * @param array $record Record da processare
+ *
+ * @return void
+ */
+ protected function processaImmagine($articolo, $url, $record)
+ {
+ if (empty($url) || empty($record['import_immagine'])) {
+ return;
+ }
+
+ try {
+ $file_content = @file_get_contents($url);
+
+ if (empty($file_content)) {
+ return;
+ }
+
+ $database = database();
+
+ /*
+ * Import immagine options:
+ *
+ * - 1: Permette di importare l'immagine come principale dell'articolo mantenendo gli altri allegati già presenti.
+ * - 2: Permette di importare l'immagine come principale dell'articolo rimuovendo tutti gli allegati presenti.
+ * - 3: Permette di importare l'immagine come allegato dell'articolo.
+ * - 4: Permette di importare l'immagine come allegato dell'articolo rimuovendo tutti gli allegati presenti.
+ */
+ if ($record['import_immagine'] == 2 || $record['import_immagine'] == 4) {
+ \Uploads::deleteLinked([
+ 'id_module' => Module::where('name', 'Articoli')->first()->id,
+ 'id_record' => $articolo->id,
+ ]);
+
+ $database->update('mg_articoli', [
+ 'immagine' => '',
+ ], [
+ 'id' => $articolo->id,
+ ]);
+ }
+
+ $name = 'immagine_'.$articolo->id.'.'.Upload::getExtensionFromMimeType($file_content);
+
+ $upload = \Uploads::upload($file_content, [
+ 'name' => 'Immagine',
+ 'category' => 'Immagini',
+ 'original_name' => $name,
+ 'id_module' => Module::where('name', 'Articoli')->first()->id,
+ 'id_record' => $articolo->id,
+ ], [
+ 'thumbnails' => true,
+ ]);
+
+ if ($upload && !empty($upload->filename) && ($record['import_immagine'] == 1 || $record['import_immagine'] == 2)) {
+ $database->update('mg_articoli', [
+ 'immagine' => $upload->filename,
+ ], [
+ 'id' => $articolo->id,
+ ]);
+ }
+ } catch (\Exception $e) {
+ // Registra l'errore ma continua con l'importazione
+ error_log('Errore durante l\'importazione dell\'immagine: '.$e->getMessage());
+ }
+ }
+
/**
* Aggiorna la giacenza dell'articolo.
*
- * @param Articolo $articolo Articolo da aggiornare
- * @param float $nuova_qta Nuova quantità
- * @param string $nome_sede Nome della sede
- * @param array $record Record da processare
+ * @param Articolo $articolo Articolo da aggiornare
+ * @param float $nuova_qta Nuova quantità
+ * @param string $nome_sede Nome della sede
+ * @param array $record Record da processare
+ *
* @return void
*/
protected function aggiornaGiacenza($articolo, $nuova_qta, $nome_sede, $record)
@@ -659,18 +675,10 @@ class CSV extends CSVImporter
}
} catch (\Exception $e) {
// Registra l'errore ma continua con l'importazione
- error_log('Errore durante l\'aggiornamento della giacenza: ' . $e->getMessage());
+ error_log('Errore durante l\'aggiornamento della giacenza: '.$e->getMessage());
}
}
- public static function getExample()
- {
- return [
- ['Codice', 'Immagine', 'Import immagine', 'Descrizione', 'Quantità', 'Data inventario', 'Unità misura', 'Prezzo acquisto', 'Prezzo vendita', 'Peso', 'Volume', 'Categoria', 'Sottocategoria', 'marca', 'Modello', 'Barcode', 'Fornitore predefinito', 'Partita IVA', 'Codice IVA vendita', 'Ubicazione', 'Note', 'Anagrafica listino', 'Codice fornitore', 'Barcode fornitore', 'Descrizione fornitore', 'Qta minima', 'Qta massima', 'Prezzo listino', 'Sconto listino', 'Cliente/Fornitore listino', 'Sede'],
- ['OSM-BUDGET', 'https://openstamanager.com/moduli/budget/budget.webp', '2', 'Modulo Budget per OpenSTAManager', '1', '28/11/2023', 'PZ', '90.00', '180.00', '', '', 'Software gestionali', 'Moduli aggiuntivi', 'DevCode', 'Budget', '4006381333931', 'DevCode s.r.l.', '05024030289', '', '', 'Nota ad uso interno', 'DevCode s.r.l.', 'DEV-BUDGET', '0123456789012', 'Strumento gestionale utilizzato per pianificare e monitorare le entrate e uscite aziendali', '1', '10', '180.00', '20', 'Fornitore', 'Sede'],
- ];
- }
-
protected function aggiornaDettaglioPrezzi(Articolo $articolo, $dettagli)
{
// Listini
@@ -699,17 +707,11 @@ class CSV extends CSVImporter
}
$dettagli['dir'] = strtolower((string) $dettagli['dir']);
- switch ($dettagli['dir']) {
- case 'fornitore':
- $dettagli['dir'] = 'uscita';
- break;
- case 'cliente':
- $dettagli['dir'] = 'entrata';
- break;
- default:
- $dettagli['dir'] = null;
- break;
- }
+ $dettagli['dir'] = match ($dettagli['dir']) {
+ 'fornitore' => 'uscita',
+ 'cliente' => 'entrata',
+ default => null,
+ };
// Aggiungo Listino
if (!empty($anagrafica) && !empty($dettagli['dir']) && $dettagli['prezzo_listino']) {
@@ -744,4 +746,4 @@ class CSV extends CSVImporter
$articolo->save();
}
}
-}
\ No newline at end of file
+}
diff --git a/modules/backups/edit.php b/modules/backups/edit.php
index 858fa5f54..4f2379213 100755
--- a/modules/backups/edit.php
+++ b/modules/backups/edit.php
@@ -188,7 +188,7 @@ if (string_starts_with($backup_dir, base_dir())) {
echo '
'.tr('Per motivi di sicurezza si consiglia di modificare il percorso della cartella di backup al di fuori della cartella di OSM, possibilmente in una unità esterna.').'
-
";
}
diff --git a/modules/categorie/actions.php b/modules/categorie/actions.php
index cd00081dc..29d04daf6 100644
--- a/modules/categorie/actions.php
+++ b/modules/categorie/actions.php
@@ -27,8 +27,8 @@ switch (filter('op')) {
$nota = filter('nota');
$colore = filter('colore');
$id_original = filter('id_original') ?: null;
- $is_articolo = filter('is_articolo_add') ?: filter('is_articolo') ?: 0;
- $is_impianto = filter('is_impianto_add') ?: filter('is_impianto') ?: 0;
+ $is_articolo = (filter('is_articolo_add') ?: filter('is_articolo')) ?: 0;
+ $is_impianto = (filter('is_impianto_add') ?: filter('is_impianto')) ?: 0;
// Verifica che almeno uno dei due flag sia selezionato
if ($is_articolo == 0 && $is_impianto == 0) {
@@ -92,8 +92,8 @@ switch (filter('op')) {
$nota = filter('nota');
$colore = filter('colore');
$id_original = filter('id_original') ?: null;
- $is_articolo = filter('is_articolo_add') ?: filter('is_articolo') ?: 0;
- $is_impianto = filter('is_impianto_add') ?: filter('is_impianto') ?: 0;
+ $is_articolo = (filter('is_articolo_add') ?: filter('is_articolo')) ?: 0;
+ $is_impianto = (filter('is_impianto_add') ?: filter('is_impianto')) ?: 0;
// Verifica che almeno uno dei due flag sia selezionato
if ($is_articolo == 0 && $is_impianto == 0) {
diff --git a/modules/categorie/add.php b/modules/categorie/add.php
index 23e62234c..5320856cc 100644
--- a/modules/categorie/add.php
+++ b/modules/categorie/add.php
@@ -38,10 +38,10 @@ if (isset($id_original)) {
-
+
-
+
diff --git a/modules/categorie/row-list.php b/modules/categorie/row-list.php
index d1f020f96..61bb4f774 100644
--- a/modules/categorie/row-list.php
+++ b/modules/categorie/row-list.php
@@ -18,7 +18,6 @@
* along with this program. If not, see .
*/
-use Models\Module;
use Modules\Articoli\Articolo;
use Modules\Articoli\Categoria;
@@ -41,7 +40,7 @@ foreach ($subcategorie as $sub) {
'.($sub->is_impianto ? '' : '').'
'.tr('Formato numeri:').' '.tr('Gli importi inseriti devono avere come separatore il punto e presentare due decimali.').'
+ if ($import_selezionato === Modules\Articoli\Import\CSV::class) {
+ echo '
'.tr('Formato numeri:').' '.tr('Gli importi inseriti devono avere come separatore il punto e presentare due decimali.').'
'.tr('Associazione anagrafiche:').' '.tr('L\'importazione dell\'anagrafica collegata all\'articolo avviene utilizzando come chiave primaria la Partita IVA, e in seguito la ragione sociale se non viene trovata corrispondenza. È opportuno pertanto indicare nel file CSV di importazione la partita IVA dell\'anagrafica per associare correttamente l\'anagrafica cliente/fornitore del listino.').'
+ if ($import_selezionato === Modules\Interventi\Import\CSV::class) {
+ echo '
'.tr('Anagrafiche:').' '.tr('La ricerca dell\'anagrafica da collegare all\'attività avviene sulla base della partita IVA o del codice fiscale mappato. Per procedere all\'importazione dell\'attività è pertanto necessario che almeno uno dei due valori siano censiti in anagrafica.').'
'.tr('Impianti:').' '.tr('Per procedere all\'importazione di attività collegate ad impianti è necessario che la matricola indicata sia già censita in impianti. Procedere quindi prima all\'importazione degli impianti e successivamente delle attività.').'
'.tr('Automatismi:').' '.tr('È presente in fase di importazione un automatismo che genera automaticamente i valori dei seguenti campi se mappati: la sessione del tecnico se mappato l\'orario di inizio attività, lo stato attività se non è già presente a gestionale.').'
+ if ($import_selezionato === Modules\Impianti\Import\CSV::class) {
+ echo '
'.tr('Anagrafiche:').' '.tr('La ricerca dell\'anagrafica da collegare all\'impianto avviene sulla base della partita IVA o del codice fiscale mappato. Per procedere all\'importazione dell\'impianto è pertanto necessario che almeno uno dei due valori siano censiti in anagrafica.').'
'.tr('Requisiti:').' '.tr('I campi Matricola e Nome sono obbligatori. Inoltre, è necessario mappare almeno uno tra Partita IVA cliente e Codice Fiscale cliente.').'
'.tr('Automatismi:').' '.tr('Le categorie e sottocategorie vengono create automaticamente se non esistenti. Le marche vengono create automaticamente se non esistenti.').'
+ if ($import_selezionato === Modules\ListiniCliente\Import\CSV::class) {
+ echo '
'.tr('Requisiti:').' '.tr('I campi Nome listino, Codice articolo e Prezzo unitario sono obbligatori.').'
'.tr('Automatismi:').' '.tr('Se il listino o l\'articolo non esistono, l\'importazione verrà saltata.').'
';
- }
-
+ }
- echo '
+ echo '
'.tr('ATTENZIONE:').'
'.tr('Per record esistenti, tutti i campi mappati sovrascriveranno i dati attuali, anche se vuoti nel CSV. Non mappare le colonne che non si desidera modificare.').'
diff --git a/modules/partitario/src/Import/CSV.php b/modules/partitario/src/Import/CSV.php
index dd58c4fd6..2d1cd12ee 100755
--- a/modules/partitario/src/Import/CSV.php
+++ b/modules/partitario/src/Import/CSV.php
@@ -68,9 +68,10 @@ class CSV extends CSVImporter
/**
* Importa un record nel database.
*
- * @param array $record Record da importare
- * @param bool $update_record Se true, aggiorna i record esistenti
- * @param bool $add_record Se true, aggiunge nuovi record
+ * @param array $record Record da importare
+ * @param bool $update_record Se true, aggiorna i record esistenti
+ * @param bool $add_record Se true, aggiunge nuovi record
+ *
* @return bool|null True se l'importazione è riuscita, false altrimenti, null se l'operazione è stata saltata
*/
public function import($record, $update_record = true, $add_record = true)
@@ -110,20 +111,36 @@ class CSV extends CSVImporter
return true;
} catch (\Exception $e) {
// Registra l'errore in un log
- error_log('Errore durante l\'importazione del piano dei conti: ' . $e->getMessage());
+ error_log('Errore durante l\'importazione del piano dei conti: '.$e->getMessage());
+
return false;
}
}
+ /**
+ * Restituisce un esempio di file CSV per l'importazione.
+ *
+ * @return array
+ */
+ public static function getExample()
+ {
+ return [
+ ['Sezione', 'Conto', 'Descrizione', 'Direzione'],
+ ['Economico', '600.000010', 'Costi merci c/acquisto di rivendita', 'uscita'],
+ ['Patrimoniale', '110.000010', 'Riepilogativo clienti', ''],
+ ];
+ }
+
/**
* Analizza il numero di conto e lo divide in parti.
*
* @param array $record Record da importare
+ *
* @return array|null Array con le parti del conto o null se il formato non è valido
*/
protected function parseNumeroConto($record)
{
- if (empty($record['numero']) || strpos($record['numero'], '.') === false) {
+ if (empty($record['numero']) || !str_contains((string) $record['numero'], '.')) {
return null;
}
@@ -141,8 +158,9 @@ class CSV extends CSVImporter
/**
* Trova il conto di primo livello (sezione) in base alla descrizione.
*
- * @param array $record Record da importare
+ * @param array $record Record da importare
* @param object $database Connessione al database
+ *
* @return array|null
*/
protected function trovaConto1($record, $database)
@@ -152,6 +170,7 @@ class CSV extends CSVImporter
}
$result = $database->fetchOne('SELECT id FROM co_pianodeiconti1 WHERE LOWER(descrizione)=LOWER('.prepare($record['idpianodeiconti1']).')');
+
return !empty($result) ? $result : null;
}
@@ -159,7 +178,8 @@ class CSV extends CSVImporter
* Trova il conto di secondo livello in base al numero.
*
* @param string $codice_conto2 Codice del conto di secondo livello
- * @param object $database Connessione al database
+ * @param object $database Connessione al database
+ *
* @return array|null
*/
protected function trovaConto2($codice_conto2, $database)
@@ -169,15 +189,17 @@ class CSV extends CSVImporter
}
$result = $database->fetchOne('SELECT id FROM co_pianodeiconti2 WHERE numero='.prepare($codice_conto2));
+
return !empty($result) ? $result : null;
}
/**
* Trova il conto di terzo livello in base al numero e al conto2.
*
- * @param string $codice_conto3 Codice del conto di terzo livello
- * @param int $idpianodeiconti2 ID del conto di secondo livello
- * @param object $database Connessione al database
+ * @param string $codice_conto3 Codice del conto di terzo livello
+ * @param int $idpianodeiconti2 ID del conto di secondo livello
+ * @param object $database Connessione al database
+ *
* @return array|null
*/
protected function trovaConto3($codice_conto3, $idpianodeiconti2, $database)
@@ -187,17 +209,18 @@ class CSV extends CSVImporter
}
$result = $database->fetchOne('SELECT id FROM co_pianodeiconti3 WHERE numero='.prepare($codice_conto3).' AND idpianodeiconti2='.prepare($idpianodeiconti2));
+
return !empty($result) ? $result : null;
}
/**
* Aggiunge un nuovo record al piano dei conti.
*
- * @param array $conto1 Conto di primo livello
- * @param array|null $conto2 Conto di secondo livello
- * @param array $parti_conto Parti del numero di conto
- * @param array $record Record da importare
- * @param object $database Connessione al database
+ * @param array $conto1 Conto di primo livello
+ * @param array|null $conto2 Conto di secondo livello
+ * @param array $parti_conto Parti del numero di conto
+ * @param array $record Record da importare
+ * @param object $database Connessione al database
*/
protected function aggiungiRecord($conto1, $conto2, $parti_conto, $record, $database)
{
@@ -228,10 +251,10 @@ class CSV extends CSVImporter
/**
* Aggiorna un record esistente nel piano dei conti.
*
- * @param array|null $conto2 Conto di secondo livello
- * @param array $parti_conto Parti del numero di conto
- * @param array $record Record da importare
- * @param object $database Connessione al database
+ * @param array|null $conto2 Conto di secondo livello
+ * @param array $parti_conto Parti del numero di conto
+ * @param array $record Record da importare
+ * @param object $database Connessione al database
*/
protected function aggiornaRecord($conto2, $parti_conto, $record, $database)
{
@@ -256,18 +279,4 @@ class CSV extends CSVImporter
}
}
}
-
- /**
- * Restituisce un esempio di file CSV per l'importazione.
- *
- * @return array
- */
- public static function getExample()
- {
- return [
- ['Sezione', 'Conto', 'Descrizione', 'Direzione'],
- ['Economico', '600.000010', 'Costi merci c/acquisto di rivendita', 'uscita'],
- ['Patrimoniale', '110.000010', 'Riepilogativo clienti', ''],
- ];
- }
}
diff --git a/modules/preventivi/bulk.php b/modules/preventivi/bulk.php
index ef75348c7..d31026a1e 100755
--- a/modules/preventivi/bulk.php
+++ b/modules/preventivi/bulk.php
@@ -165,7 +165,6 @@ switch (post('op')) {
break;
}
-
$operations['change_status'] = [
'text' => ' '.tr('Cambia stato'),
'data' => [
@@ -190,5 +189,4 @@ $operations['create_invoice'] = [
],
];
-
return $operations;
diff --git a/modules/preventivi/edit.php b/modules/preventivi/edit.php
index b2d1bd9ca..7c9ff2408 100755
--- a/modules/preventivi/edit.php
+++ b/modules/preventivi/edit.php
@@ -484,7 +484,7 @@ if (!empty($elementi)) {
'_DOC_' => $elemento['tipo_documento'],
'_NUM_' => !empty($elemento['numero_esterno']) ? $elemento['numero_esterno'] : $elemento['numero'],
'_DATE_' => Translator::dateToLocale($elemento['data']),
- '_STATO_' => (!empty($elemento['stato_documento']) ? "(".$elemento['stato_documento'].")" : ''),
+ '_STATO_' => (!empty($elemento['stato_documento']) ? '('.$elemento['stato_documento'].')' : ''),
]);
echo '
diff --git a/modules/preventivi/modals/modifica_iva.php b/modules/preventivi/modals/modifica_iva.php
index b7ad7f25b..1c71db9bb 100644
--- a/modules/preventivi/modals/modifica_iva.php
+++ b/modules/preventivi/modals/modifica_iva.php
@@ -38,7 +38,7 @@ if (!empty($riga_id)) {
// Caso singola riga
$riga = Riga::find($riga_id) ?: Articolo::find($riga_id);
$riga = $riga ?: Sconto::find($riga_id);
- $righe_totali++;
+ ++$righe_totali;
if (!empty($riga) && !empty($riga->idiva) && !empty($riga->aliquota)) {
$aliquote_iva[$riga->idiva] = [
@@ -46,19 +46,19 @@ if (!empty($riga_id)) {
'codice' => $riga->aliquota->codice,
'descrizione' => $riga->aliquota->getTranslation('title'),
'percentuale' => $riga->aliquota->percentuale,
- 'count' => 1
+ 'count' => 1,
];
} else {
// Riga senza aliquota IVA o con aliquota non valida
$righe_senza_iva[] = [
'id' => $riga->id,
'descrizione' => $riga->descrizione,
- 'idiva' => $riga->idiva ?: 'N/D'
+ 'idiva' => $riga->idiva ?: 'N/D',
];
}
} elseif (!empty($righe_ids)) {
// Caso multiple righe
- $righe_array = explode(',', $righe_ids);
+ $righe_array = explode(',', (string) $righe_ids);
$righe_totali = count($righe_array);
foreach ($righe_array as $id_riga) {
@@ -72,16 +72,16 @@ if (!empty($riga_id)) {
'codice' => $riga->aliquota->codice,
'descrizione' => $riga->aliquota->getTranslation('title'),
'percentuale' => $riga->aliquota->percentuale,
- 'count' => 0
+ 'count' => 0,
];
}
- $aliquote_iva[$riga->idiva]['count']++;
+ ++$aliquote_iva[$riga->idiva]['count'];
} elseif (!empty($riga)) {
// Riga senza aliquota IVA o con aliquota non valida
$righe_senza_iva[] = [
'id' => $riga->id,
'descrizione' => $riga->descrizione,
- 'idiva' => $riga->idiva ?: 'N/D'
+ 'idiva' => $riga->idiva ?: 'N/D',
];
}
}
@@ -92,20 +92,20 @@ $show_form = count($aliquote_iva) > 0 || count($righe_senza_iva) > 0 || (!empty(
?>
' : '').'
diff --git a/modules/utenti/sezione.php b/modules/utenti/sezione.php
index 1e8319009..6acafd210 100644
--- a/modules/utenti/sezione.php
+++ b/modules/utenti/sezione.php
@@ -26,7 +26,7 @@ include_once __DIR__.'/../../core.php';
$sezione = filter('sezione');
$impostazioni = Setting::where('sezione', $sezione)->where('is_user_setting', 1)
->get();
-$user_options = json_decode($user->options, true) ?: [];
+$user_options = json_decode((string) $user->options, true) ?: [];
foreach ($impostazioni as $impostazione) {
echo '
diff --git a/modules/utenti/user.php b/modules/utenti/user.php
index 844ac7b01..6418ac048 100755
--- a/modules/utenti/user.php
+++ b/modules/utenti/user.php
@@ -20,9 +20,9 @@
include_once __DIR__.'/../../core.php';
-use Models\User;
-use Models\Upload;
use Models\Module;
+use Models\Upload;
+use Models\User;
Permissions::check('rw');
diff --git a/modules/viste/actions.php b/modules/viste/actions.php
index b0ea68c0a..9f5e0b515 100755
--- a/modules/viste/actions.php
+++ b/modules/viste/actions.php
@@ -145,7 +145,7 @@ switch (filter('op')) {
}
// Prepara il nome del file
- $filename = 'module_' . strtolower(str_replace(' ', '_', $module->name)) . '.json';
+ $filename = 'module_'.strtolower(str_replace(' ', '_', $module->name)).'.json';
// Restituisci i dati in formato JSON
echo json_encode([
diff --git a/modules/viste/edit.php b/modules/viste/edit.php
index 03ce2dcec..5b98a104f 100755
--- a/modules/viste/edit.php
+++ b/modules/viste/edit.php
@@ -18,10 +18,10 @@
* along with this program. If not, see .
*/
+use Doctrine\SqlFormatter\SqlFormatter;
use Models\Clause;
use Models\Module;
use Models\View;
-use Doctrine\SqlFormatter\SqlFormatter;
include_once __DIR__.'/../../core.php';
@@ -179,4 +179,4 @@ echo '
-';
\ No newline at end of file
+';
diff --git a/modules/viste/fields.php b/modules/viste/fields.php
index 3882dc248..053442bd6 100755
--- a/modules/viste/fields.php
+++ b/modules/viste/fields.php
@@ -71,15 +71,15 @@ foreach ($fields as $key => $field) {
'.tr('Query prevista').'
'.input([
- 'type' => 'textarea',
- 'name' => 'query['.$key.']',
- 'required' => 1,
- 'readonly' => ''.(!$editable).'',
- 'value' => $field->query,
- 'style' => 'height: 80px;',
- 'show-label' => '0',
- 'help' => tr('Nome effettivo del campo sulla tabella oppure subquery che permette di ottenere il valore del campo.').' '.tr('ATTENZIONE: utilizza sempre i caratteri < o > seguiti da spazio!'),
- ]).'
+ 'type' => 'textarea',
+ 'name' => 'query['.$key.']',
+ 'required' => 1,
+ 'readonly' => ''.(!$editable).'',
+ 'value' => $field->query,
+ 'style' => 'height: 80px;',
+ 'show-label' => '0',
+ 'help' => tr('Nome effettivo del campo sulla tabella oppure subquery che permette di ottenere il valore del campo.').' '.tr('ATTENZIONE: utilizza sempre i caratteri < o > seguiti da spazio!'),
+ ]).'
@@ -245,19 +245,19 @@ echo '
{[ "type": "select", "label": "'.tr('Gruppi con accesso').'", "name": "gruppi[-id-][]", "multiple": "1", "values": "query=SELECT DISTINCT `zz_groups`.`id`, `title` AS descrizione FROM `zz_groups` LEFT JOIN `zz_groups_lang` ON (`zz_groups`.`id` = `zz_groups_lang`.`id_record` AND `zz_groups_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `zz_groups`.`id` IN (SELECT `idgruppo` FROM `zz_permissions` WHERE `idmodule` = '.prepare($record->id).' AND `permessi` IN (\'r\', \'rw\')) OR `zz_groups`.`id` = 1 ORDER BY `zz_groups`.`id` ASC", "value": "';
- // Ottieni tutti gli ID dei gruppi che hanno accesso al modulo
- $groups_with_access = $dbo->fetchArray('SELECT DISTINCT `idgruppo` FROM `zz_permissions` WHERE `idmodule` = '.prepare($record->id).' AND `permessi` IN (\'r\', \'rw\')');
- $group_ids = array_column($groups_with_access, 'idgruppo');
+// Ottieni tutti gli ID dei gruppi che hanno accesso al modulo
+$groups_with_access = $dbo->fetchArray('SELECT DISTINCT `idgruppo` FROM `zz_permissions` WHERE `idmodule` = '.prepare($record->id).' AND `permessi` IN (\'r\', \'rw\')');
+$group_ids = array_column($groups_with_access, 'idgruppo');
- // Assicurati che il gruppo Amministratori (ID 1) sia incluso
- $id_gruppo_admin = 1; // ID del gruppo Amministratori
- if (!in_array($id_gruppo_admin, $group_ids)) {
- $group_ids[] = $id_gruppo_admin;
- }
+// Assicurati che il gruppo Amministratori (ID 1) sia incluso
+$id_gruppo_admin = 1; // ID del gruppo Amministratori
+if (!in_array($id_gruppo_admin, $group_ids)) {
+ $group_ids[] = $id_gruppo_admin;
+}
- echo implode(',', $group_ids);
+echo implode(',', $group_ids);
- echo '" ]}
+echo '" ]}
diff --git a/plugins/consuntivo/edit.php b/plugins/consuntivo/edit.php
index 6b2e2ebc6..ef153e8ff 100644
--- a/plugins/consuntivo/edit.php
+++ b/plugins/consuntivo/edit.php
@@ -1,4 +1,5 @@
.
*/
-include_once __DIR__ . '/../../../core.php';
+include_once __DIR__.'/../../../core.php';
use Models\Module;
use Modules\Contratti\Contratto;
@@ -53,11 +54,11 @@ if (!empty($interventi)) {
echo '
-
' . tr('Attività') . '
-
' . tr('Ore') . '
-
' . tr('Km') . '
-
' . tr('Costo') . '
-
' . tr('Tot. scontato') . '
+
'.tr('Attività').'
+
'.tr('Ore').'
+
'.tr('Km').'
+
'.tr('Costo').'
+
'.tr('Tot. scontato').'
';
// Tabella con i dati
@@ -65,34 +66,34 @@ if (!empty($interventi)) {
$totale_ore_completate += !empty($intervento->stato->is_bloccato) ? $intervento->ore_totali : 0;
// Riga per il singolo intervento
echo '
-
';
}
echo '
@@ -451,17 +452,17 @@ echo '
';
-//Tabella totale delle ore,km,costi e totale scontato suddivisi per i mesi in cui sono stati effettuati gli interventi
+// Tabella totale delle ore,km,costi e totale scontato suddivisi per i mesi in cui sono stati effettuati gli interventi
echo '
';
// Aggiunta interventi se il documento é aperto o in attesa o pagato (non si possono inserire interventi collegati ad altri preventivi)
-$query = 'SELECT id, CONCAT(\'Intervento \', codice, \' del \', DATE_FORMAT(IFNULL((SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE in_interventi_tecnici.idintervento=in_interventi.id), data_richiesta), \'%d/%m/%Y\')) AS descrizione FROM in_interventi WHERE id_preventivo IS NULL AND id_contratto IS NULL AND id_ordine IS NULL AND id NOT IN( SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND id NOT IN( SELECT idintervento FROM co_promemoria WHERE idintervento IS NOT NULL) AND idanagrafica=' . prepare($record['idanagrafica']);
+$query = 'SELECT id, CONCAT(\'Intervento \', codice, \' del \', DATE_FORMAT(IFNULL((SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE in_interventi_tecnici.idintervento=in_interventi.id), data_richiesta), \'%d/%m/%Y\')) AS descrizione FROM in_interventi WHERE id_preventivo IS NULL AND id_contratto IS NULL AND id_ordine IS NULL AND id NOT IN( SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND id NOT IN( SELECT idintervento FROM co_promemoria WHERE idintervento IS NOT NULL) AND idanagrafica='.prepare($record['idanagrafica']);
$count = $dbo->fetchNum($query);
@@ -544,14 +545,14 @@ echo '
- {[ "type": "select", "label": "' . tr('Aggiungi un intervento a questo documento') . ' (' . $count . ')", "name": "idintervento", "values": "query=' . $query . '", "required":"1" ]}
+ {[ "type": "select", "label": "'.tr('Aggiungi un intervento a questo documento').' ('.$count.')", "name": "idintervento", "values": "query='.$query.'", "required":"1" ]}
'.tr("Per effettuare la generazione dell'XML della fattura elettronica clicca sul pulsante _BTN_", [
- '_BTN_' => 'Genera',
- ]).'. '.tr('Successivamente sarà possibile procedere alla visualizzazione e al download della fattura generata attraverso i pulsanti dedicati').'
+ '_BTN_' => 'Genera',
+ ]).'. '.tr('Successivamente sarà possibile procedere alla visualizzazione e al download della fattura generata attraverso i pulsanti dedicati').'
diff --git a/plugins/exportFE/src/FatturaElettronica.php b/plugins/exportFE/src/FatturaElettronica.php
index cbb6c9952..51fe966a3 100755
--- a/plugins/exportFE/src/FatturaElettronica.php
+++ b/plugins/exportFE/src/FatturaElettronica.php
@@ -712,7 +712,7 @@ class FatturaElettronica implements \Stringable
// $result['CodiceFiscale'] = str_replace($anagrafica->nazione->iso2, '', $result['CodiceFiscale']);
// Rimuovo eventuali idicazioni relative all'iso2 della nazione, solo se la stringa inizia con quest'ultima.
- $result['CodiceFiscale'] = preg_replace('/^'.preg_quote($anagrafica->nazione->iso2, '/').'/', '', (string) $anagrafica['codice_fiscale']);
+ $result['CodiceFiscale'] = preg_replace('/^'.preg_quote((string) $anagrafica->nazione->iso2, '/').'/', '', (string) $anagrafica['codice_fiscale']);
}
// Partita IVA: se privato estero non va considerato il codice fiscale ma la partita iva con 9 zeri
@@ -1690,7 +1690,7 @@ class FatturaElettronica implements \Stringable
// BIC senza parte per filiale (causa errori di validazione)
if (!empty($banca->bic)) {
- $pagamento['BIC'] = substr($banca->bic, 0, 8);
+ $pagamento['BIC'] = substr((string) $banca->bic, 0, 8);
}
$result[]['DettaglioPagamento'] = $pagamento;
diff --git a/plugins/importFE/edit.php b/plugins/importFE/edit.php
index 607df84e5..e68f32686 100755
--- a/plugins/importFE/edit.php
+++ b/plugins/importFE/edit.php
@@ -142,8 +142,8 @@ if (Interaction::isEnabled()) {
echo '
'.tr('Per vedere le fatture da importare utilizza il pulsante _BUTTON_', [
- '_BUTTON_' => '"'.tr('Ricerca fatture').'"',
- ]).'
+ '_BUTTON_' => '"'.tr('Ricerca fatture').'"',
+ ]).'
';
} else {
include $structure->filepath('list.php');
diff --git a/plugins/importFE/generate.php b/plugins/importFE/generate.php
index 84c17afff..1e2ae14c4 100755
--- a/plugins/importFE/generate.php
+++ b/plugins/importFE/generate.php
@@ -19,7 +19,6 @@
*/
use Carbon\Carbon;
-use Models\Module;
use Modules\Fatture\Fattura;
use Modules\Pagamenti\Pagamento;
use Plugins\ImportFE\FatturaElettronica;
@@ -314,8 +313,6 @@ if (!empty($pagamenti)) {
echo '
';
-
-
// Tipo del documento
$query = "SELECT `co_tipidocumento`.`id`, CONCAT('(', `codice_tipo_documento_fe`, ') ', `title`) AS descrizione FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = ".prepare(Models\Locale::getDefault()->id).") WHERE `dir` = 'uscita'";
$query_tipo = $query.' AND `codice_tipo_documento_fe` = '.prepare($dati_generali['TipoDocumento']);
@@ -563,7 +560,6 @@ if (!empty($righe)) {
}
$idconto_acquisto = $database->fetchOne('SELECT `idconto_acquisto` FROM `mg_articoli` WHERE `id` = '.prepare($id_articolo))['idconto_acquisto'];
-
}
$idconto_acquisto = $is_autofattura ? setting('Conto per autofattura') : $idconto_acquisto;
@@ -772,10 +768,10 @@ if (!empty($righe)) {
FROM `or_ordini`
INNER JOIN `or_righe_ordini` ON `or_righe_ordini`.`idordine` = `or_ordini`.`id`
WHERE
- `or_ordini`.`idanagrafica` = ".prepare($anagrafica->id)." AND
- `or_ordini`.`numero` = ".prepare($riferimento['numero'])." AND
- DATE_FORMAT(`or_ordini`.`data`, '%d/%m/%Y') = ".prepare($riferimento['data'])."
- GROUP BY `or_ordini`.`id`";
+ `or_ordini`.`idanagrafica` = ".prepare($anagrafica->id).' AND
+ `or_ordini`.`numero` = '.prepare($riferimento['numero'])." AND
+ DATE_FORMAT(`or_ordini`.`data`, '%d/%m/%Y') = ".prepare($riferimento['data']).'
+ GROUP BY `or_ordini`.`id`';
$ordini = $database->fetchArray($query);
diff --git a/plugins/importFE/src/FatturaElettronica.php b/plugins/importFE/src/FatturaElettronica.php
index e9b82bc3f..251dcd2a4 100755
--- a/plugins/importFE/src/FatturaElettronica.php
+++ b/plugins/importFE/src/FatturaElettronica.php
@@ -179,11 +179,11 @@ class FatturaElettronica
if (!empty($allegato['FormatoAttachment'])) {
$extension = '.'.strtolower((string) $allegato['FormatoAttachment']);
}
-
+
if (strtolower($extension) == '.html' || strtolower($extension) == '.htm') {
$extension = '.pdf';
}
-
+
if (preg_match('/\./', (string) $allegato['NomeAttachment'])) {
$original = $allegato['NomeAttachment'];
} else {
@@ -200,19 +200,19 @@ class FatturaElettronica
// Registrazione XML come allegato
$file_content = file_get_contents($this->file);
-
+
$original_name = basename($this->file);
if (empty(pathinfo($original_name, PATHINFO_EXTENSION))) {
$original_name .= '.xml';
}
-
+
try {
\Uploads::upload($file_content, array_merge($info, [
'name' => tr('Fattura Elettronica'),
'original_name' => $original_name,
]));
} catch (\UnexpectedValueException $e) {
- error_log('Errore durante il caricamento del file XML: ' . $e->getMessage());
+ error_log('Errore durante il caricamento del file XML: '.$e->getMessage());
}
}
@@ -406,7 +406,7 @@ class FatturaElettronica
$this->saveRighe($info['articoli'], $info['iva'], $info['conto'], $info['movimentazione'], $info['crea_articoli'], $info['tipo_riga_riferimento'], $info['id_riga_riferimento'], $info['tipo_riga_riferimento_vendita'], $info['id_riga_riferimento_vendita'], $info['update_info'], $info['serial']);
- $this->saveAllegati($tipo == 'Cliente' ? 'Fatture di vendita': null);
+ $this->saveAllegati($tipo == 'Cliente' ? 'Fatture di vendita' : null);
$this->getFattura()->save(['forza_emissione']);
diff --git a/plugins/importFE_ZIP/edit.php b/plugins/importFE_ZIP/edit.php
index 87b0c5a6f..a51c6f41e 100644
--- a/plugins/importFE_ZIP/edit.php
+++ b/plugins/importFE_ZIP/edit.php
@@ -205,8 +205,8 @@ if (Interaction::isEnabled()) {
echo '
'.tr('Per vedere le fatture da importare utilizza il pulsante _BUTTON_', [
- '_BUTTON_' => tr('Ricerca fatture'),
- ]).'
+ '_BUTTON_' => tr('Ricerca fatture'),
+ ]).'
';
} else {
include $structure->filepath('list.php');
diff --git a/plugins/importFE_ZIP/generate.php b/plugins/importFE_ZIP/generate.php
index 296119042..03544e46d 100644
--- a/plugins/importFE_ZIP/generate.php
+++ b/plugins/importFE_ZIP/generate.php
@@ -19,13 +19,12 @@
*/
use Carbon\Carbon;
-use Models\Module;
use Modules\Fatture\Fattura;
use Modules\Pagamenti\Pagamento;
use Plugins\ImportFE\FatturaElettronica;
use Util\XML;
-include_once __DIR__ . '/../../core.php';
+include_once __DIR__.'/../../core.php';
echo '