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\\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/"],

View File

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

View File

@ -17,31 +17,37 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
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);
}

View File

@ -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'],
];
}
?><form action="" method="post" id="add-form" enctype="multipart/form-data">
<input type="hidden" name="op" value="add">
<input type="hidden" name="backto" value="record-edit">
@ -39,7 +29,7 @@ foreach ($moduli_disponibili as $id => $value) {
</div>
<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>
@ -58,7 +48,7 @@ foreach ($moduli_disponibili as $id => $value) {
</form>
<script>
$("#module").change(function () {
$("#id_import").change(function () {
if ($(this).val()) {
$("#example").removeClass("hidden");
} else {
@ -73,7 +63,7 @@ foreach ($moduli_disponibili as $id => $value) {
data: {
op: "example",
id_module: globals.id_module,
module: $('#module').val(),
id_import: $('#id_import').val(),
},
success: function(data) {
if (data) {

View File

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

View File

@ -17,14 +17,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
use Modules\Importazione\Import;
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)) {
$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>';
if (!empty($ricerca)){
if (!empty($ricerca)) {
echo '
<script>$("#ricerca_impostazioni").change();</script>';
}

View File

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

View File

@ -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';

View File

@ -143,7 +143,7 @@ if (!empty($google)) {
} else {
echo '
<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>';
}

View File

@ -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');
}

View File

@ -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');

View File

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