Aggiunto sistema di registrazione procedure di importazione
This commit is contained in:
parent
e23c712fa5
commit
55825cca6f
|
@ -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/"],
|
||||||
|
|
|
@ -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 '
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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';
|
||||||
|
}
|
||||||
|
}
|
|
@ -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>';
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 '
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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');
|
||||||
|
|
|
@ -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',
|
||||||
|
|
Loading…
Reference in New Issue