diff --git a/assets/src/js/functions/functions.js b/assets/src/js/functions/functions.js index 9b9ca1a76..39d0e92e7 100755 --- a/assets/src/js/functions/functions.js +++ b/assets/src/js/functions/functions.js @@ -536,6 +536,7 @@ function salvaForm(button, form) { title: globals.translations.ajax.missing.title, text: globals.translations.ajax.missing.text, }); + buttonRestore(button, restore); resolve(false); } diff --git a/modules/articoli/src/Articolo.php b/modules/articoli/src/Articolo.php index 3a68851c2..4fbe99a15 100755 --- a/modules/articoli/src/Articolo.php +++ b/modules/articoli/src/Articolo.php @@ -73,8 +73,6 @@ class Articolo extends Model */ public function registra($qta, $descrizone = null, $data = null, $manuale = false, $array = []) { - $id = false; - if (empty($qta)) { return false; } diff --git a/modules/movimenti/actions.php b/modules/movimenti/actions.php index 00776bb6e..336f8616f 100755 --- a/modules/movimenti/actions.php +++ b/modules/movimenti/actions.php @@ -6,32 +6,44 @@ use Modules\Articoli\Articolo; switch (post('op')) { case 'add': + $articolo = Articolo::find(post('idarticolo')); + $tipo_movimento = post('tipo_movimento'); + $descrizione = post('movimento'); + $data = post('data'); + $qta = post('qta'); + $idsede_partenza = post('idsede_partenza'); $idsede_destinazione = post('idsede_destinazione'); - $direzione = post('direzione'); - $qta = !empty($direzione) ? post('qta') : -post('qta'); - if (!empty($direzione)) { - if ($idsede_partenza == 0 && $idsede_destinazione != 0) { - $qta = -post('qta'); - } elseif ($idsede_partenza != 0 && $idsede_destinazione == 0) { - $qta = post('qta'); - $idsede_partenza = post('idsede_destinazione'); - $idsede_destinazione = post('idsede_partenza'); - } - } else { - if ($idsede_partenza != 0 && $idsede_destinazione == 0) { - $qta = -post('qta'); - $idsede_partenza = post('idsede_destinazione'); - $idsede_destinazione = post('idsede_partenza'); - } elseif ($idsede_partenza == 0 && $idsede_destinazione != 0) { - $qta = post('qta'); + if ($tipo_movimento == 'carico' || $tipo_movimento == 'scarico') { + if ($tipo_movimento == 'carico') { + $id_sede_azienda = $idsede_destinazione; + $id_sede_controparte = 0; + } elseif ($tipo_movimento == 'scarico') { + $id_sede_controparte = $idsede_partenza; + $id_sede_azienda = 0; + + $qta = -$qta; } + + // Registrazione del movimento con variazione della quantità + $articolo->movimenta($qta, $descrizione, $data, 1, [ + 'idsede_controparte' => $id_sede_controparte, + 'idsede_azienda' => $id_sede_azienda, + ]); + } elseif ($tipo_movimento == 'spostamento') { + // Registrazione del movimento verso la sede di destinazione + $articolo->registra($qta, $descrizione, $data, 1, [ + 'idsede_controparte' => 0, + 'idsede_azienda' => $idsede_destinazione, + ]); + + // Registrazione del movimento dalla sede di origine + $articolo->registra(-$qta, $descrizione, $data, 1, [ + 'idsede_controparte' => 0, + 'idsede_azienda' => $idsede_partenza, + ]); } - $articolo = Articolo::find(post('idarticolo')); - $idmovimento = $articolo->movimenta($qta, post('movimento'), post('data'), 1); - $dbo->query('UPDATE mg_movimenti SET idsede_azienda='.prepare($idsede_partenza).', idsede_controparte='.prepare($idsede_destinazione).' WHERE id='.prepare($idmovimento)); - break; } diff --git a/modules/movimenti/add.php b/modules/movimenti/add.php index 104ed5b61..94fdd430a 100755 --- a/modules/movimenti/add.php +++ b/modules/movimenti/add.php @@ -12,14 +12,19 @@ $_SESSION['superselect']['idsede_partenza'] = 0; $_SESSION['superselect']['idsede_destinazione'] = 0; ?> -
+ + + -= 48) { + $("#barcode-row").removeClass("hidden"); + barcode.val(barcode.val() + String.fromCharCode(key)); + } + }); + + function abilitaSede(id){ + $(id).removeClass("disabled") + .attr("disabled", false) + .attr("required", true); + } + + function disabilitaSede(id){ + $(id).addClass("disabled") + .attr("disabled", true) + .attr("required", false); + } + + $(document).ready(function () { + $("#causale").on("change", function () { + let data = $(this).selectData(); + if (data) { + $("#movimento").val(data.descrizione); + $("#tipo_movimento").val(data.tipo_movimento); + + if (data.tipo_movimento === "carico") { + disabilitaSede("#idsede_partenza"); + abilitaSede("#idsede_destinazione"); + } else if (data.tipo_movimento === "scarico") { + abilitaSede("#idsede_partenza"); + disabilitaSede("#idsede_destinazione"); + } else { + abilitaSede("#idsede_partenza"); + abilitaSede("#idsede_destinazione"); + } + } else { + disabilitaSede("#idsede_partenza"); + disabilitaSede("#idsede_destinazione"); + } + }); + + // Reload pagina appena chiudo il modal + $("#modals > div").on("hidden.bs.modal", function () { + location.reload(); + }); + }); + + function ricercaBarcode(barcode) { + // Ricerca via ajax del barcode negli articoli + $.get( + globals.rootdir + "/ajax_select.php?op=articoli&search=" + barcode, + function(data){ + data = JSON.parse(data); + + // Articolo trovato + if(data.results.length === 1) { + $("#barcode").val(""); + + var record = data.results[0].children[0]; + $("#idarticolo").selectSetNew(record.id, record.text, record); + + salva($("#aggiungi")); + } + + // Articolo non trovato + else { + $("#articolo-missing").removeClass("hidden"); + } + } + ); + } + + async function salva(button) { + $("#messages").html(""); + var qta_input = $("#qta"); + var tipo_movimento = $("#tipo_movimento").val(); + + let valid = await salvaForm(button, "#add-form"); + + if (valid) { + let articolo = $("#idarticolo").selectData(); + let prezzo_acquisto = parseFloat(articolo.prezzo_acquisto); + let prezzo_vendita = parseFloat(articolo.prezzo_vendita); + + let qta_movimento = parseFloat(qta_input.val()); + + let alert_type, icon, text, qta_rimanente; + if (tipo_movimento === "carico") { + alert_type = "alert-success"; + icon = "fa-arrow-up"; + text = "Carico"; + qta_rimanente = parseFloat(articolo.qta) + parseFloat(qta_movimento); + } else if (tipo_movimento === "scarico") { + alert_type = "alert-danger"; + icon = "fa-arrow-down"; + text = "Scarico"; + qta_rimanente = parseFloat(articolo.qta) - parseFloat(qta_movimento); + } else if (tipo_movimento === "spostamento") { + alert_type = "alert-info"; + icon = "fa-arrow-down"; + text = "Spostamento"; + qta_rimanente = parseFloat(articolo.qta); + } + + if (articolo.descrizione) { + let testo = $("#info-articolo").html(); + + testo = testo.replace("|alert-type|", alert_type) + .replace("|icon|", icon) + .replace("|descrizione|", articolo.descrizione) + .replace("|codice|", articolo.codice) + .replace("|misura|", articolo.um) + .replace("|misura|", articolo.um) + .replace("|descrizione-movimento|", text) + .replace("|movimento|", qta_movimento.toLocale()) + .replace("|rimanente|", qta_rimanente.toLocale()) + .replace("|prezzo_acquisto|", prezzo_acquisto.toLocale()) + .replace("|prezzo_vendita|", prezzo_vendita.toLocale()); + + $("#messages").html(testo); + } + + qta_input.val(1); + $("#causale").trigger("change"); + } + } +'; + if (setting('Attiva scorciatoie da tastiera')) { echo ' '; } + +echo ' +'.tr('Descrizione').': |descrizione|
+'.tr('Prezzo acquisto').': |prezzo_acquisto| '.currency().'
+'.tr('Prezzo vendita').': |prezzo_vendita| '.currency().'
+