Aggiunto sistema di registrazione procedure di importazione

This commit is contained in:
Dasc3er 2021-02-26 11:04:06 +01:00
parent e23c712fa5
commit 55825cca6f
14 changed files with 102 additions and 40 deletions

View File

@ -95,6 +95,7 @@
"Modules\\CategorieDocumentali\\": ["modules/categorie_documenti/custom/src/", "modules/categorie_documenti/src/"], "Modules\\CategorieDocumentali\\": ["modules/categorie_documenti/custom/src/", "modules/categorie_documenti/src/"],
"Modules\\PianiSconto\\": ["modules/piano_sconto/custom/src/", "modules/piano_sconto/src/"], "Modules\\PianiSconto\\": ["modules/piano_sconto/custom/src/", "modules/piano_sconto/src/"],
"Modules\\Impianti\\": ["modules/impianti/custom/src/", "modules/impianti/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/"], "Modules\\Impostazioni\\": ["modules/impostazioni/custom/src/", "modules/impostazioni/src/"],
"Plugins\\ExportFE\\": ["plugins/exportFE/custom/src/", "plugins/exportFE/src/"], "Plugins\\ExportFE\\": ["plugins/exportFE/custom/src/", "plugins/exportFE/src/"],
"Plugins\\ImportFE\\": ["plugins/importFE/custom/src/", "plugins/importFE/src/"], "Plugins\\ImportFE\\": ["plugins/importFE/custom/src/", "plugins/importFE/src/"],

View File

@ -250,7 +250,7 @@ $map_load_message = '<p>'.tr('Clicca per visualizzare').'</p>';
if (empty($google)) { if (empty($google)) {
echo ' echo '
<div class="alert alert-info"> <div class="alert alert-info">
'.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').'.
</div>'; </div>';
} elseif (!empty($sede_cliente->gaddress) || (!empty($sede_cliente->lat) && !empty($sede_cliente->lng))) { } elseif (!empty($sede_cliente->gaddress) || (!empty($sede_cliente->lat) && !empty($sede_cliente->lng))) {
echo ' echo '

View File

@ -17,31 +17,37 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
use Modules\Importazione\Import;
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
switch (filter('op')) { switch (filter('op')) {
case 'add': case 'add':
$modulo_selezionato = Modules::get(filter('module')); $id_import = filter('id_import');
$id_record = $modulo_selezionato->id; $import = Import::find($id_import);
$id_record = $import->id;
$upload = Uploads::upload($_FILES['file'], [ $upload = Uploads::upload($_FILES['file'], [
'id_module' => $modulo_import->id, 'id_module' => $import->getModule()->id,
'id_record' => $id_record, 'id_record' => $id_record,
]); ]);
break; break;
case 'example': case 'example':
$module = filter('module'); $id_import = filter('id_import');
$modulo_selezionato = Modules::get(filter('module'));
$import_selezionato = $moduli_disponibili[$module];
if (!empty($import_selezionato)) { $import = Import::find($id_import);
$import_manager = $import->class;
$modulo_collegato = $import->moduloCollegato;
if (!empty($import_manager)) {
// Generazione percorso // 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; $filepath = base_dir().'/'.$file;
// Generazione del file // Generazione del file
$import_selezionato::createExample($filepath); $import_manager::createExample($filepath);
echo base_path().'/'.$file; echo base_path().'/'.$file;
} }
@ -50,8 +56,8 @@ switch (filter('op')) {
case 'import': case 'import':
// Individuazione del modulo // Individuazione del modulo
$modulo_selezionato = Modules::get($id_record); $import = Import::find($id_record);
$import_selezionato = $moduli_disponibili[$modulo_selezionato->name]; $import_manager = $import->class;
// Dati indicati // Dati indicati
$include_first_row = post('include_first_row'); $include_first_row = post('include_first_row');
@ -61,7 +67,7 @@ switch (filter('op')) {
$limit = 500; $limit = 500;
// Inizializzazione del lettore CSV // Inizializzazione del lettore CSV
$csv = new $import_selezionato($record->filepath); $csv = new $import_manager($record->filepath);
foreach ($fields as $key => $value) { foreach ($fields as $key => $value) {
$csv->setColumnAssociation($key, $value); $csv->setColumnAssociation($key, $value);
} }

View File

@ -19,16 +19,6 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
$list = [];
foreach ($moduli_disponibili as $id => $value) {
$modulo = Modules::get($id);
$list[] = [
'id' => $id,
'text' => $modulo['title'],
];
}
?><form action="" method="post" id="add-form" enctype="multipart/form-data"> ?><form action="" method="post" id="add-form" enctype="multipart/form-data">
<input type="hidden" name="op" value="add"> <input type="hidden" name="op" value="add">
<input type="hidden" name="backto" value="record-edit"> <input type="hidden" name="backto" value="record-edit">
@ -39,7 +29,7 @@ foreach ($moduli_disponibili as $id => $value) {
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
{[ "type": "select", "label": "<?php echo tr('Modulo'); ?>", "name": "module", "required": 1, "values": <?php echo json_encode($list); ?> ]} {[ "type": "select", "label": "<?php echo tr('Modulo'); ?>", "name": "id_import", "required": 1, "values": "query=SELECT id, name AS text FROM zz_imports" ]}
</div> </div>
</div> </div>
@ -58,7 +48,7 @@ foreach ($moduli_disponibili as $id => $value) {
</form> </form>
<script> <script>
$("#module").change(function () { $("#id_import").change(function () {
if ($(this).val()) { if ($(this).val()) {
$("#example").removeClass("hidden"); $("#example").removeClass("hidden");
} else { } else {
@ -73,7 +63,7 @@ foreach ($moduli_disponibili as $id => $value) {
data: { data: {
op: "example", op: "example",
id_module: globals.id_module, id_module: globals.id_module,
module: $('#module').val(), id_import: $('#id_import').val(),
}, },
success: function(data) { success: function(data) {
if (data) { if (data) {

View File

@ -17,6 +17,8 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
use Modules\Importazione\Import;
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
// Gestione del redirect in caso di caricamento del file // Gestione del redirect in caso di caricamento del file
@ -27,8 +29,8 @@ if (filter('op')) {
if (empty($id_record)) { if (empty($id_record)) {
require base_dir().'/add.php'; require base_dir().'/add.php';
} else { } else {
$modulo_selezionato = Modules::get($id_record); $import = Import::find($id_record);
$import_selezionato = $moduli_disponibili[$modulo_selezionato->name]; $import_selezionato = $import->class;
// Inizializzazione del lettore CSV // Inizializzazione del lettore CSV
$csv = new $import_selezionato($record->filepath); $csv = new $import_selezionato($record->filepath);

View File

@ -17,14 +17,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
use Modules\Importazione\Import;
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
$modulo_import = Modules::get('Import');
$moduli_disponibili = [
'Anagrafiche' => \Modules\Anagrafiche\Import\CSV::class,
'Articoli' => \Modules\Articoli\Import\CSV::class,
];
if (!empty($id_record)) { if (!empty($id_record)) {
$record = $modulo_import->uploads($id_record)->last(); $import = Import::find($id_record);
$record = $import->uploads()->last();
} }

View File

@ -0,0 +1,44 @@
<?php
/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
* Copyright (C) DevCode s.r.l.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
namespace Modules\Importazione;
use Common\SimpleModelTrait;
use Illuminate\Database\Eloquent\Model;
use Models\Module;
use Traits\RecordTrait;
class Import extends Model
{
use SimpleModelTrait;
use RecordTrait;
protected $table = 'zz_imports';
// Relazioni Eloquent
public function moduloCollegato()
{
return $this->belongsTo(Module::class, 'id_module');
}
public function getModuleAttribute()
{
return 'Import';
}
}

View File

@ -148,7 +148,7 @@ function riprovaSalvataggio() {
} }
</script>'; </script>';
if (!empty($ricerca)){ if (!empty($ricerca)) {
echo ' echo '
<script>$("#ricerca_impostazioni").change();</script>'; <script>$("#ricerca_impostazioni").change();</script>';
} }

View File

@ -130,7 +130,7 @@ $map_load_message = '<p>'.tr('Clicca per visualizzare').'</p>';
if (empty($google)) { if (empty($google)) {
echo ' echo '
<div class="alert alert-info"> <div class="alert alert-info">
'.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').'.
</div>'; </div>';
} elseif (!empty($sede_cliente->gaddress) || (!empty($sede_cliente->lat) && !empty($sede_cliente->lng))) { } elseif (!empty($sede_cliente->gaddress) || (!empty($sede_cliente->lat) && !empty($sede_cliente->lng))) {
echo ' echo '

View File

@ -71,7 +71,7 @@ foreach ($id_scadenze as $id_scadenza) {
$id_documenti[] = $scadenza['iddocumento']; $id_documenti[] = $scadenza['iddocumento'];
continue; continue;
} }
$dir = $scadenza['rata']>0 ? 'entrata' : 'uscita'; $dir = $scadenza['rata'] > 0 ? 'entrata' : 'uscita';
$scadenza['rata'] = abs($scadenza['rata']); $scadenza['rata'] = abs($scadenza['rata']);
$descrizione_conto = ($dir == 'entrata') ? 'Riepilogativo clienti' : 'Riepilogativo fornitori'; $descrizione_conto = ($dir == 'entrata') ? 'Riepilogativo clienti' : 'Riepilogativo fornitori';

View File

@ -143,7 +143,7 @@ if (!empty($google)) {
} else { } else {
echo ' echo '
<div class="alert alert-info"> <div class="alert alert-info">
'.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').'.
</div>'; </div>';
} }

View File

@ -56,7 +56,7 @@ class RigheInterventi extends AppResource
WHERE WHERE
in_interventi.id IN ('.implode(',', $interventi).')'; in_interventi.id IN ('.implode(',', $interventi).')';
$records = database()->fetchArray($query); $records = database()->fetchArray($query);
$da_interventi = array_column($records, 'id'); $da_interventi = array_column($records, 'id');
} }

View File

@ -202,3 +202,23 @@ INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `
-- Fix quantità positiva per Note di credito -- Fix quantità positiva per Note di credito
UPDATE `co_righe_documenti` SET `qta` = ABS(`qta`), `qta_evasa` = ABS(`qta_evasa`); 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');

View File

@ -112,6 +112,7 @@ return [
'zz_group_module', 'zz_group_module',
'zz_group_view', 'zz_group_view',
'zz_hooks', 'zz_hooks',
'zz_imports',
'zz_logs', 'zz_logs',
'zz_modules', 'zz_modules',
'zz_operations', 'zz_operations',