From 55825cca6f5942e80ce149005b4d19afe04ed618 Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Fri, 26 Feb 2021 11:04:06 +0100 Subject: [PATCH] Aggiunto sistema di registrazione procedure di importazione --- composer.json | 1 + modules/anagrafiche/edit.php | 2 +- modules/import/actions.php | 30 ++++++++++++-------- modules/import/add.php | 16 ++--------- modules/import/edit.php | 6 ++-- modules/import/init.php | 12 ++++---- modules/import/src/Import.php | 44 ++++++++++++++++++++++++++++++ modules/impostazioni/edit.php | 2 +- modules/interventi/edit.php | 2 +- modules/primanota/add.php | 2 +- plugins/sedi/edit.php | 2 +- src/API/App/v1/RigheInterventi.php | 2 +- update/2_4_22.sql | 20 ++++++++++++++ update/tables.php | 1 + 14 files changed, 102 insertions(+), 40 deletions(-) create mode 100644 modules/import/src/Import.php diff --git a/composer.json b/composer.json index f3d0ce6f4..17af9637e 100755 --- a/composer.json +++ b/composer.json @@ -95,6 +95,7 @@ "Modules\\CategorieDocumentali\\": ["modules/categorie_documenti/custom/src/", "modules/categorie_documenti/src/"], "Modules\\PianiSconto\\": ["modules/piano_sconto/custom/src/", "modules/piano_sconto/src/"], "Modules\\Impianti\\": ["modules/impianti/custom/src/", "modules/impianti/src/"], + "Modules\\Importazione\\": ["modules/import/custom/src/", "modules/import/src/"], "Modules\\Impostazioni\\": ["modules/impostazioni/custom/src/", "modules/impostazioni/src/"], "Plugins\\ExportFE\\": ["plugins/exportFE/custom/src/", "plugins/exportFE/src/"], "Plugins\\ImportFE\\": ["plugins/importFE/custom/src/", "plugins/importFE/src/"], diff --git a/modules/anagrafiche/edit.php b/modules/anagrafiche/edit.php index e6f021015..b7eaaa5d7 100755 --- a/modules/anagrafiche/edit.php +++ b/modules/anagrafiche/edit.php @@ -250,7 +250,7 @@ $map_load_message = '

'.tr('Clicca per visualizzare').'

'; if (empty($google)) { echo '
- '.Modules::link('Impostazioni', null, tr('Per abilitare la visualizzazione delle anagrafiche nella mappa, inserire la Google Maps API Key nella scheda Impostazioni'), true, null, true, null, "&search=Google Maps API key").'. + '.Modules::link('Impostazioni', null, tr('Per abilitare la visualizzazione delle anagrafiche nella mappa, inserire la Google Maps API Key nella scheda Impostazioni'), true, null, true, null, '&search=Google Maps API key').'.
'; } elseif (!empty($sede_cliente->gaddress) || (!empty($sede_cliente->lat) && !empty($sede_cliente->lng))) { echo ' diff --git a/modules/import/actions.php b/modules/import/actions.php index 5183a8f76..9ea20f718 100755 --- a/modules/import/actions.php +++ b/modules/import/actions.php @@ -17,31 +17,37 @@ * along with this program. If not, see . */ +use Modules\Importazione\Import; + include_once __DIR__.'/../../core.php'; switch (filter('op')) { case 'add': - $modulo_selezionato = Modules::get(filter('module')); - $id_record = $modulo_selezionato->id; + $id_import = filter('id_import'); + $import = Import::find($id_import); + + $id_record = $import->id; $upload = Uploads::upload($_FILES['file'], [ - 'id_module' => $modulo_import->id, + 'id_module' => $import->getModule()->id, 'id_record' => $id_record, ]); break; case 'example': - $module = filter('module'); - $modulo_selezionato = Modules::get(filter('module')); - $import_selezionato = $moduli_disponibili[$module]; + $id_import = filter('id_import'); - if (!empty($import_selezionato)) { + $import = Import::find($id_import); + $import_manager = $import->class; + + $modulo_collegato = $import->moduloCollegato; + if (!empty($import_manager)) { // Generazione percorso - $file = $modulo_selezionato->upload_directory.'/example-'.strtolower($modulo_selezionato->title).'.csv'; + $file = $modulo_collegato->upload_directory.'/example-'.strtolower($modulo_collegato->title).'.csv'; $filepath = base_dir().'/'.$file; // Generazione del file - $import_selezionato::createExample($filepath); + $import_manager::createExample($filepath); echo base_path().'/'.$file; } @@ -50,8 +56,8 @@ switch (filter('op')) { case 'import': // Individuazione del modulo - $modulo_selezionato = Modules::get($id_record); - $import_selezionato = $moduli_disponibili[$modulo_selezionato->name]; + $import = Import::find($id_record); + $import_manager = $import->class; // Dati indicati $include_first_row = post('include_first_row'); @@ -61,7 +67,7 @@ switch (filter('op')) { $limit = 500; // Inizializzazione del lettore CSV - $csv = new $import_selezionato($record->filepath); + $csv = new $import_manager($record->filepath); foreach ($fields as $key => $value) { $csv->setColumnAssociation($key, $value); } diff --git a/modules/import/add.php b/modules/import/add.php index 065e123e9..1a50892b3 100755 --- a/modules/import/add.php +++ b/modules/import/add.php @@ -19,16 +19,6 @@ include_once __DIR__.'/../../core.php'; -$list = []; -foreach ($moduli_disponibili as $id => $value) { - $modulo = Modules::get($id); - - $list[] = [ - 'id' => $id, - 'text' => $modulo['title'], - ]; -} - ?>
@@ -39,7 +29,7 @@ foreach ($moduli_disponibili as $id => $value) {
- {[ "type": "select", "label": "", "name": "module", "required": 1, "values": ]} + {[ "type": "select", "label": "", "name": "id_import", "required": 1, "values": "query=SELECT id, name AS text FROM zz_imports" ]}
@@ -58,7 +48,7 @@ foreach ($moduli_disponibili as $id => $value) {
'; -if (!empty($ricerca)){ +if (!empty($ricerca)) { echo ' '; } diff --git a/modules/interventi/edit.php b/modules/interventi/edit.php index 89d835bbe..19730ebeb 100755 --- a/modules/interventi/edit.php +++ b/modules/interventi/edit.php @@ -130,7 +130,7 @@ $map_load_message = '

'.tr('Clicca per visualizzare').'

'; if (empty($google)) { echo '
- '.Modules::link('Impostazioni', null, tr('Per abilitare la visualizzazione delle anagrafiche nella mappa, inserire la Google Maps API Key nella scheda Impostazioni'), true, null, true, null, "&search=Google Maps API key").'. + '.Modules::link('Impostazioni', null, tr('Per abilitare la visualizzazione delle anagrafiche nella mappa, inserire la Google Maps API Key nella scheda Impostazioni'), true, null, true, null, '&search=Google Maps API key').'.
'; } elseif (!empty($sede_cliente->gaddress) || (!empty($sede_cliente->lat) && !empty($sede_cliente->lng))) { echo ' diff --git a/modules/primanota/add.php b/modules/primanota/add.php index 9fda06c24..2fd13974a 100755 --- a/modules/primanota/add.php +++ b/modules/primanota/add.php @@ -71,7 +71,7 @@ foreach ($id_scadenze as $id_scadenza) { $id_documenti[] = $scadenza['iddocumento']; continue; } - $dir = $scadenza['rata']>0 ? 'entrata' : 'uscita'; + $dir = $scadenza['rata'] > 0 ? 'entrata' : 'uscita'; $scadenza['rata'] = abs($scadenza['rata']); $descrizione_conto = ($dir == 'entrata') ? 'Riepilogativo clienti' : 'Riepilogativo fornitori'; diff --git a/plugins/sedi/edit.php b/plugins/sedi/edit.php index 8d7d343ed..47faa461e 100755 --- a/plugins/sedi/edit.php +++ b/plugins/sedi/edit.php @@ -143,7 +143,7 @@ if (!empty($google)) { } else { echo '
- '.Modules::link('Impostazioni', null, tr('Per abilitare la visualizzazione delle anagrafiche nella mappa, inserire la Google Maps API Key nella scheda Impostazioni'), true, null, true, null, "&search=Google Maps API key").'. + '.Modules::link('Impostazioni', null, tr('Per abilitare la visualizzazione delle anagrafiche nella mappa, inserire la Google Maps API Key nella scheda Impostazioni'), true, null, true, null, '&search=Google Maps API key').'.
'; } diff --git a/src/API/App/v1/RigheInterventi.php b/src/API/App/v1/RigheInterventi.php index a96d2972f..fd2c53104 100644 --- a/src/API/App/v1/RigheInterventi.php +++ b/src/API/App/v1/RigheInterventi.php @@ -56,7 +56,7 @@ class RigheInterventi extends AppResource WHERE in_interventi.id IN ('.implode(',', $interventi).')'; $records = database()->fetchArray($query); - + $da_interventi = array_column($records, 'id'); } diff --git a/update/2_4_22.sql b/update/2_4_22.sql index 0f87dd10d..b05b6f683 100644 --- a/update/2_4_22.sql +++ b/update/2_4_22.sql @@ -202,3 +202,23 @@ INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, ` -- Fix quantità positiva per Note di credito UPDATE `co_righe_documenti` SET `qta` = ABS(`qta`), `qta_evasa` = ABS(`qta_evasa`); + +-- +-- Struttura della tabella `zz_imports` +-- + +CREATE TABLE IF NOT EXISTS `zz_imports` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `id_module` int(11) NOT NULL, + `name` varchar(255) NOT NULL, + `class` varchar(255) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB; + +ALTER TABLE `zz_imports` + ADD FOREIGN KEY (`id_module`) REFERENCES `zz_modules`(`id`) ON DELETE CASCADE; + +-- Importazioni di base +INSERT INTO `zz_imports` (`id_module`, `name`, `class`) VALUES +((SELECT `id` FROM `zz_modules` WHERE `name` = 'Anagrafiche'), 'Anagrafiche', 'Modules\\Anagrafiche\\Import\\CSV'), +((SELECT `id` FROM `zz_modules` WHERE `name` = 'Articoli'), 'Articoli', 'Modules\\Articoli\\Import\\CSV'); diff --git a/update/tables.php b/update/tables.php index cb1812712..8376cd9e3 100755 --- a/update/tables.php +++ b/update/tables.php @@ -112,6 +112,7 @@ return [ 'zz_group_module', 'zz_group_view', 'zz_hooks', + 'zz_imports', 'zz_logs', 'zz_modules', 'zz_operations',