From 69bb54b04b7c0f3ef9d8b1cc093c85c1a1e307d4 Mon Sep 17 00:00:00 2001 From: MatteoPistorello Date: Thu, 28 Sep 2023 12:31:03 +0200 Subject: [PATCH] Importazione seriali da fattura di acquisto --- modules/articoli/ajax/select.php | 1 + plugins/importFE/actions.php | 1 + plugins/importFE/generate.php | 54 +++++++++++++++++++++ plugins/importFE/src/FatturaElettronica.php | 2 +- plugins/importFE/src/FatturaOrdinaria.php | 7 ++- 5 files changed, 63 insertions(+), 2 deletions(-) diff --git a/modules/articoli/ajax/select.php b/modules/articoli/ajax/select.php index bbf59a72e..39667e044 100755 --- a/modules/articoli/ajax/select.php +++ b/modules/articoli/ajax/select.php @@ -89,6 +89,7 @@ switch ($resource) { `mg_articoli`.`um`, `mg_articoli`.`fattore_um_secondaria`, `mg_articoli`.`servizio`, + `mg_articoli`.`abilita_serial`, `mg_articoli`.`idconto_vendita`, `mg_articoli`.`idconto_acquisto`, diff --git a/plugins/importFE/actions.php b/plugins/importFE/actions.php index 81438815a..8379b9c61 100755 --- a/plugins/importFE/actions.php +++ b/plugins/importFE/actions.php @@ -139,6 +139,7 @@ switch (filter('op')) { 'crea_articoli' => post('crea_articoli'), 'is_ritenuta_pagata' => post('is_ritenuta_pagata'), 'update_info' => post('update_info'), + 'serial' => post('flag_crea_seriali') ? post('serial') : [], ]; $fattura_pa = FatturaElettronica::manage($filename); diff --git a/plugins/importFE/generate.php b/plugins/importFE/generate.php index 999e80fae..6fed05a94 100755 --- a/plugins/importFE/generate.php +++ b/plugins/importFE/generate.php @@ -29,6 +29,17 @@ echo ' '; @@ -312,6 +323,10 @@ echo '
{[ "type": "checkbox", "label": "'.tr('Creazione automatica articoli').'", "name": "flag_crea_articoli", "value": 0, "help": "'.tr("Nel caso di righe con tag CodiceArticolo, il gestionale procede alla creazione dell'articolo se la riga non risulta assegnata manualmente").'" ]} +
+ +
+ {[ "type": "checkbox", "label": "'.tr('Creazione seriali').'", "name": "flag_crea_seriali", "value": 0, "help": "'.tr("Nel caso di righe contenenti serial, il gestionale procede alla registrazione del serial").'" ]}
'; $ritenuta = $dati_generali['DatiRitenuta']; @@ -403,8 +418,12 @@ if (!empty($righe)) { $codici = !empty($codici) && !isset($codici[0]) ? [$codici] : $codici; $codici_articoli = []; + $serial = []; foreach ($codici as $codice) { $codici_articoli[] = $codice['CodiceValore'].' ('.$codice['CodiceTipo'].')'; + if (str_contains($codice['CodiceTipo'], 'serial') || str_contains($codice['CodiceTipo'], 'Serial')) { + $serial[] = $codice['CodiceValore']; + } } // Individuazione articolo con codice relativo @@ -584,6 +603,16 @@ if (!empty($righe)) { {[ "type": "select", "name": "update_info['.$key.']", "values": "list=\"update_not\":\"Non aggiornare\", \"update_price\":\"Aggiorna prezzo di listino\", \"update_all\":\"Aggiorna prezzo di acquisto + imposta fornitore predefinito\"", "label": "'.tr('Aggiorna info di acquisto').'", "value": "'.$update_info.'" ]} + +
'; + for ($i = 0; $i < $qta; $i++) { + echo ' +
+ {[ "type": "text", "label": "'.tr('Serial').'", "name": "serial['.$key.'][]", "value": "'.$serial[$i].'" ]} +
'; + } + echo ' +
@@ -877,6 +906,8 @@ $("[id^=\'articoli\']").change(function() { if(data!==undefined){ $("#conto-"+$(this).data("id")).selectSetNew(data.idconto_acquisto, data.idconto_acquisto_title); } + + verificaSerial($(this)); }); function copy_rif() { @@ -910,4 +941,27 @@ function copy_rif() { }); } } + +// Visualizza input seriali se abilita serial dell\'articolo selezionato è attivo +function verificaSerial(riga) { + if (riga.val()) { + let data = riga.selectData(); + if (data.abilita_serial) { + $("#serial"+riga.data("id")).parent().parent().parent().removeClass("hidden"); + } else { + $("#serial"+riga.data("id")).parent().parent().parent().addClass("hidden"); + } + } else { + $("#serial"+riga.data("id")).parent().parent().parent().addClass("hidden"); + } +} + +// Disabilita input seriali se flag crea seriali è disattivato +$("#flag_crea_seriali").on("change", function() { + if ($(this).is(":checked")) { + $("[id^=\'serial\']").attr("disabled", false); + } else { + $("[id^=\'serial\']").attr("disabled", true); + } +}); '; diff --git a/plugins/importFE/src/FatturaElettronica.php b/plugins/importFE/src/FatturaElettronica.php index 1195d3495..22cd3991f 100755 --- a/plugins/importFE/src/FatturaElettronica.php +++ b/plugins/importFE/src/FatturaElettronica.php @@ -411,7 +411,7 @@ class FatturaElettronica { $this->saveFattura($info['id_pagamento'], $info['id_segment'], $info['id_tipo'], $info['data_registrazione'], $info['ref_fattura'], $info['is_ritenuta_pagata']); - $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']); + $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(); diff --git a/plugins/importFE/src/FatturaOrdinaria.php b/plugins/importFE/src/FatturaOrdinaria.php index 1d3250bd3..7a85fac3f 100755 --- a/plugins/importFE/src/FatturaOrdinaria.php +++ b/plugins/importFE/src/FatturaOrdinaria.php @@ -134,7 +134,7 @@ class FatturaOrdinaria extends FatturaElettronica return $this->forceArray($linee); } - public function saveRighe($articoli, $iva, $conto, $movimentazione = true, $crea_articoli = [], $tipi_riferimenti = [], $id_riferimenti = [], $tipi_riferimenti_vendita = [], $id_riferimenti_vendita = [], $update_info = []) + public function saveRighe($articoli, $iva, $conto, $movimentazione = true, $crea_articoli = [], $tipi_riferimenti = [], $id_riferimenti = [], $tipi_riferimenti_vendita = [], $id_riferimenti_vendita = [], $update_info = [], $serials = []) { $info = $this->getRitenutaRivalsa(); @@ -364,6 +364,11 @@ class FatturaOrdinaria extends FatturaElettronica $articolo->save(); } } + + // Gestione seriali + if ($serials[$key]) { + $obj->serials = $serials[$key]; + } } $tipo = null;