Gestione flag is_rientrabile per i ddt

This commit is contained in:
MatteoPistorello 2023-06-26 15:12:43 +02:00
parent f509532021
commit 72d2e885af
4 changed files with 44 additions and 8 deletions

View File

@ -35,6 +35,7 @@ switch (filter('op')) {
'is_importabile' => filter('is_importabile'),
'reversed' => filter('reversed'),
'predefined' => $predefined,
'is_rientrabile' => filter('is_rientrabile'),
], ['id' => $id_record]);
flash()->info(tr('Salvataggio completato!'));

View File

@ -40,15 +40,18 @@ include_once __DIR__.'/../../core.php';
<h3 class="panel-title"><?php echo tr('Flags'); ?></h3>
</div>
<div class="panel-body">
<div class="col-md-4">
<div class="col-md-3">
{[ "type": "checkbox", "label": "<?php echo tr('Causale predefinita'); ?>", "name": "predefined", "value": "$predefined$", "help":"<?php echo tr('Impostare questa causale di trasporto come predefinita per i ddt'); ?>." ]}
</div>
<div class="col-md-4">
<div class="col-md-3">
{[ "type": "checkbox", "label": "<?php echo tr('Importabile?'); ?>", "name": "is_importabile", "value": "$is_importabile$", "help": "<?php echo tr('I documenti associati a questa causale possono essere importati a livello contabile in altri documenti (per esempio, in Fatture)'); ?>", "placeholder": "<?php echo tr('Importabile'); ?>" ]}
</div>
<div class="col-md-4">
<div class="col-md-3">
{[ "type": "checkbox", "label": "<?php echo tr('Abilita solo note di credito'); ?>", "name": "reversed", "value": "$reversed$", "help": "<?php echo tr('I documenti associati a questa causale possono essere stornati come nota di credito'); ?>", "placeholder": "<?php echo tr('Abilita storno'); ?>" ]}
</div>
<div class="col-md-3">
{[ "type": "checkbox", "label": "<?php echo tr('Rientrabile?'); ?>", "name": "is_rientrabile", "value": "$is_rientrabile$", "help": "<?php echo tr('I documenti associati a questa causale possono registrare i serial degli articoli anche se già utilizzati'); ?>", "placeholder": "<?php echo tr('Rientrabile'); ?>" ]}
</div>
</div>
</div>
</div>

View File

@ -930,7 +930,14 @@ switch (post('op')) {
break;
case 'controlla_serial':
if (post('is_rientrabile')) {
// Controllo che i serial entrati e usciti siano uguali in modo da poterli registrare nuovamente.
$serial_uscita = $dbo->fetchOne('SELECT COUNT(id) AS `tot` FROM mg_prodotti WHERE serial='.prepare(post('serial')).' AND dir="uscita" AND id_articolo='.prepare(post('id_articolo')))['tot'];
$serial_entrata = $dbo->fetchOne('SELECT COUNT(id) AS `tot` FROM mg_prodotti WHERE serial='.prepare(post('serial')).' AND dir="entrata" AND id_articolo='.prepare(post('id_articolo')))['tot'];
$has_serial = $serial_entrata != $serial_uscita;
} else {
$has_serial = $dbo->fetchOne('SELECT id FROM mg_prodotti WHERE serial='.prepare(post('serial')).' AND dir="uscita" AND id_articolo='.prepare(post('id_articolo')).' AND (id_riga_documento IS NOT NULL OR id_riga_ordine IS NOT NULL OR id_riga_ddt IS NOT NULL)')['id'];
}
echo json_encode($has_serial);

View File

@ -19,6 +19,8 @@
include_once __DIR__.'/../../core.php';
use Modules\DDT\DDT;
$module = Modules::get($id_module);
// Controllo sulla direzione monetaria
@ -58,6 +60,8 @@ if (in_array($module['name'], ['Fatture di vendita', 'Fatture di acquisto'])) {
$modulo = 'fat';
} elseif (in_array($module['name'], ['Ddt di vendita', 'Ddt di acquisto'])) {
$modulo = 'ddt';
$ddt = DDT::find($id_record);
$is_rientrabile = $database->fetchOne('SELECT * FROM `dt_causalet` WHERE `id` = '.prepare($ddt->idcausalet))['is_rientrabile'];
} elseif (in_array($module['name'], ['Ordini cliente', 'Ordini fornitore'])) {
$modulo = 'ord';
} else {
@ -107,8 +111,8 @@ if ($dir == 'entrata') {
}
echo '
<div class="col-md-4">
{[ "type": "text", "name": "serial[]", "class": "serial", "value": "'.$serials[$i].'"'.(!empty($res) ? ', "readonly": 1' : '').' ]}';
<div class="col-md-6">
{[ "type": "text", "name": "serial[]", "class": "serial", "id": "serial_'.$i.'", "value": "'.$serials[$i].'"'.(!empty($res) ? ', "readonly": 1' : '').' ]}';
if (!empty($res)) {
if (!empty($res[0]['id_riga_intervento'])) {
@ -133,6 +137,13 @@ if ($dir == 'entrata') {
echo '
</div>';
if ($is_rientrabile) {
echo '
<div class="col-md-6">
{[ "type": "select", "name": "select_serial_'.$i.'", "value": "'.implode(',', $serials).'", "values": "query=SELECT serial AS id, serial AS descrizione FROM mg_prodotti WHERE id_articolo = '.prepare($rs[0]['idarticolo']).' AND mg_prodotti.dir=\'entrata\' AND id=(SELECT MAX(id) FROM mg_prodotti AS prodotti WHERE prodotti.id_articolo=mg_prodotti.id_articolo AND prodotti.serial=mg_prodotti.serial)", "onchange": "aggiornaSerial('.$i.');"'.(!empty($res) ? ', "readonly": 1' : '').' ]}
</div>';
}
if (($i + 1) % 3 == 0) {
echo '
</div>
@ -154,13 +165,18 @@ if ($dir == 'entrata') {
<script>
$(".serial").on("keyup", function() {
controllaSerial($(this).val());
});
function controllaSerial(value) {
$.ajax({
url: globals.rootdir + "/actions.php",
type: "post",
data: {
id_module: "'.$module_fatture.'",
id_record: globals.id_record,
serial: $(this).val(),
serial: value,
is_rientrabile: '.$is_rientrabile.',
id_articolo: input("idarticolo").get(),
op: "controlla_serial",
},
@ -175,7 +191,16 @@ if ($dir == 'entrata') {
}
}
});
});
}
function aggiornaSerial(i) {
let select_serial = $("#select_serial_"+i);
if (select_serial.val()) {
$("#serial_"+i).val(select_serial.val());
controllaSerial(select_serial.val());
select_serial.selectClear();
}
}
</script>';
}