Importazione seriali da fattura di acquisto

This commit is contained in:
MatteoPistorello 2023-09-28 12:31:03 +02:00
parent 92e0659bd4
commit 69bb54b04b
5 changed files with 63 additions and 2 deletions

View File

@ -89,6 +89,7 @@ switch ($resource) {
`mg_articoli`.`um`, `mg_articoli`.`um`,
`mg_articoli`.`fattore_um_secondaria`, `mg_articoli`.`fattore_um_secondaria`,
`mg_articoli`.`servizio`, `mg_articoli`.`servizio`,
`mg_articoli`.`abilita_serial`,
`mg_articoli`.`idconto_vendita`, `mg_articoli`.`idconto_vendita`,
`mg_articoli`.`idconto_acquisto`, `mg_articoli`.`idconto_acquisto`,

View File

@ -139,6 +139,7 @@ switch (filter('op')) {
'crea_articoli' => post('crea_articoli'), 'crea_articoli' => post('crea_articoli'),
'is_ritenuta_pagata' => post('is_ritenuta_pagata'), 'is_ritenuta_pagata' => post('is_ritenuta_pagata'),
'update_info' => post('update_info'), 'update_info' => post('update_info'),
'serial' => post('flag_crea_seriali') ? post('serial') : [],
]; ];
$fattura_pa = FatturaElettronica::manage($filename); $fattura_pa = FatturaElettronica::manage($filename);

View File

@ -29,6 +29,17 @@ echo '
<script> <script>
$(document).ready(function() { $(document).ready(function() {
$("#save-buttons").hide(); $("#save-buttons").hide();
// Visualizza input seriali se abilita serial dell\'articolo selezionato è attivo
let articoli = $("select[name^=articoli]");
articoli.each(function() {
verificaSerial($(this));
});
// Disabilita input seriali se flag crea seriali è disattivato
if (!$("#flag_crea_seriali").is(":checked")) {
$("[id^=\'serial\']").attr("disabled", true);
}
}); });
</script>'; </script>';
@ -312,6 +323,10 @@ echo '
<div class="col-md-3"> <div class="col-md-3">
{[ "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 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").'" ]}
</div>
<div class="col-md-3">
{[ "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").'" ]}
</div>'; </div>';
$ritenuta = $dati_generali['DatiRitenuta']; $ritenuta = $dati_generali['DatiRitenuta'];
@ -403,8 +418,12 @@ if (!empty($righe)) {
$codici = !empty($codici) && !isset($codici[0]) ? [$codici] : $codici; $codici = !empty($codici) && !isset($codici[0]) ? [$codici] : $codici;
$codici_articoli = []; $codici_articoli = [];
$serial = [];
foreach ($codici as $codice) { foreach ($codici as $codice) {
$codici_articoli[] = $codice['CodiceValore'].' ('.$codice['CodiceTipo'].')'; $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 // 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.'" ]} {[ "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.'" ]}
</div> </div>
</div> </div>
<div class="row">';
for ($i = 0; $i < $qta; $i++) {
echo '
<div class="col-md-3">
{[ "type": "text", "label": "'.tr('Serial').'", "name": "serial['.$key.'][]", "value": "'.$serial[$i].'" ]}
</div>';
}
echo '
</div>
</div> </div>
</div> </div>
</td> </td>
@ -877,6 +906,8 @@ $("[id^=\'articoli\']").change(function() {
if(data!==undefined){ if(data!==undefined){
$("#conto-"+$(this).data("id")).selectSetNew(data.idconto_acquisto, data.idconto_acquisto_title); $("#conto-"+$(this).data("id")).selectSetNew(data.idconto_acquisto, data.idconto_acquisto_title);
} }
verificaSerial($(this));
}); });
function copy_rif() { 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);
}
});
</script>'; </script>';

View File

@ -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->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(); $this->saveAllegati();

View File

@ -134,7 +134,7 @@ class FatturaOrdinaria extends FatturaElettronica
return $this->forceArray($linee); 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(); $info = $this->getRitenutaRivalsa();
@ -364,6 +364,11 @@ class FatturaOrdinaria extends FatturaElettronica
$articolo->save(); $articolo->save();
} }
} }
// Gestione seriali
if ($serials[$key]) {
$obj->serials = $serials[$key];
}
} }
$tipo = null; $tipo = null;