From 7c7797a826cdec97a68566679d876dc30655c27f Mon Sep 17 00:00:00 2001 From: MatteoPistorello <pistorellomatteo8@gmail.com> Date: Wed, 5 Jul 2023 11:43:07 +0200 Subject: [PATCH] Gestione aggiunta serial da documenti --- modules/articoli/actions.php | 5 ++ modules/articoli/ajax/select.php | 7 +++ modules/articoli/plugins/articoli.lotti.php | 15 ++++- modules/fatture/add_serial.php | 64 ++++++++++++++++++--- 4 files changed, 83 insertions(+), 8 deletions(-) diff --git a/modules/articoli/actions.php b/modules/articoli/actions.php index 9f7e1955a..99bbfdce0 100755 --- a/modules/articoli/actions.php +++ b/modules/articoli/actions.php @@ -302,6 +302,11 @@ switch (post('op')) { $serials[] = $serial; } + if (post('check')) { + echo json_encode($serials); + break; + } + // no break case 'add_serials': $serials = $serials ?: filter('serials'); diff --git a/modules/articoli/ajax/select.php b/modules/articoli/ajax/select.php index ef6e172c9..c86d83ef1 100755 --- a/modules/articoli/ajax/select.php +++ b/modules/articoli/ajax/select.php @@ -315,4 +315,11 @@ switch ($resource) { $search_fields[] = '`an_anagrafiche`.`ragione_sociale` LIKE '.prepare('%'.$search.'%'); } break; + + case 'serial-articolo': + $query = 'SELECT serial AS id, serial AS descrizione FROM mg_prodotti |where| AND mg_prodotti.dir=\'uscita\' AND id=(SELECT MAX(id) FROM mg_prodotti AS prodotti WHERE prodotti.id_articolo=mg_prodotti.id_articolo AND prodotti.serial=mg_prodotti.serial)'; + + $where[] = 'id_articolo='.prepare($superselect['idarticolo']); + + break; } diff --git a/modules/articoli/plugins/articoli.lotti.php b/modules/articoli/plugins/articoli.lotti.php index 6d0fa889c..9ab674aa5 100755 --- a/modules/articoli/plugins/articoli.lotti.php +++ b/modules/articoli/plugins/articoli.lotti.php @@ -44,6 +44,8 @@ echo ' <form action="" method="post" role="form" class="tab-pane active" id="generazione"> <input type="hidden" name="backto" value="record-edit"> <input type="hidden" name="op" value="generate_serials"> + <input type="hidden" name="id_module" value="'.$id_module.'"> + <input type="hidden" name="id_record" value="'.$id_record.'"> <div class="row"> <div class="col-md-5"> @@ -73,6 +75,8 @@ echo ' <form action="" method="post" role="form" class="tab-pane" id="inserimento"> <input type="hidden" name="backto" value="record-edit"> <input type="hidden" name="op" value="add_serials"> + <input type="hidden" name="id_module" value="'.$id_module.'"> + <input type="hidden" name="id_record" value="'.$id_record.'"> <div class="row"> <div class="col-md-12"> @@ -94,6 +98,7 @@ echo ' </div>'; // Elenco +if (empty(get('modal'))) { echo ' <div class="box"> <div class="box-header with-border"> @@ -337,6 +342,7 @@ echo ' </table> </div> </div>'; +} echo ' <script type="text/javascript"> @@ -365,7 +371,14 @@ function addSerial(form_id, numero) { showCancelButton: true, confirmButtonText: "'.tr('Continua').'" }).then(function (result) { - $(form_id).submit(); + if ($("div[id^=bs-popup").is(":visible")) { + salvaForm($(form_id), { + }).then(function(response) { + $(form_id).closest("div[id^=bs-popup").modal("hide"); + }); + } else { + $(form_id).submit(); + } }) } else { swal("'.tr('Errore').'", "'.tr('Nessun seriale inserito').'", "error"); diff --git a/modules/fatture/add_serial.php b/modules/fatture/add_serial.php index 02816d98a..00826f4aa 100755 --- a/modules/fatture/add_serial.php +++ b/modules/fatture/add_serial.php @@ -22,6 +22,8 @@ include_once __DIR__.'/../../core.php'; use Modules\DDT\DDT; $module = Modules::get($id_module); +$module_articoli = Modules::get('Articoli'); +$plugin_serial = Plugins::get('Serial'); // Controllo sulla direzione monetaria $uscite = [ @@ -77,7 +79,7 @@ $idriga = get('idriga') ?: get('riga_id'); $rs = $dbo->fetchArray('SELECT mg_articoli.id AS idarticolo, mg_articoli.codice, mg_articoli.descrizione, '.$table.'.qta FROM '.$table.' INNER JOIN mg_articoli ON '.$table.'.idarticolo=mg_articoli.id WHERE '.$table.'.'.$id.'='.prepare($id_record).' AND '.$table.'.id='.prepare($idriga)); echo ' -<p>'.tr('Articolo').': '.$rs[0]['codice'].' - '.$rs[0]['descrizione'].'</p> +<h4 class="text-center">'.tr('Articolo').': '.$rs[0]['codice'].' - '.$rs[0]['descrizione'].'</h4> <form action="'.base_path().'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'" method="post"> <input type="hidden" name="op" value="add_serial"> @@ -93,12 +95,32 @@ if ($dir == 'entrata') { echo ' <div class="row"> <div class="col-md-12"> - {[ "type": "select", "label": "'.tr('Serial').'", "name": "serial[]", "multiple": 1, "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=\'uscita\' AND id=(SELECT MAX(id) FROM mg_prodotti AS prodotti WHERE prodotti.id_articolo=mg_prodotti.id_articolo AND prodotti.serial=mg_prodotti.serial)", "extra": "data-maximum=\"'.intval($rs[0]['qta']).'\"" ]} + {[ "type": "select", "label": "'.tr('Serial').'", "name": "serial[]", "multiple": 1, "value": "'.implode(',', $serials).'", "ajax-source": "serial-articolo", "select-options": '.json_encode(['idarticolo' => $rs[0]['idarticolo']]).', "extra": "data-maximum=\"'.intval($rs[0]['qta']).'\"" ]} </div> </div>'; } else { echo ' - <p>'.tr('Inserisci i numeri seriali degli articoli aggiunti:').'</p>'; + <div class="row"> + <div class="col-md-5"> + {[ "type": "text", "label": "'.tr('Inizio').'", "name": "serial_start" ]} + </div> + + <div class="col-md-2 text-center" style="padding-top: 20px;"> + <i class="fa fa-arrow-circle-right fa-2x"></i> + </div> + + <div class="col-md-5"> + {[ "type": "text", "label": "'.tr('Fine').'", "name": "serial_end" ]} + </div> + </div> + + <div class="row"> + <div class="col-md-12 text-center"> + <button type="button" class="btn btn-info" onclick="generaSerial();"><i class="fa fa-magic"></i> '.tr('Genera').'</button> + </div> + </div> + <hr> + <h5>'.tr('Inserisci i numeri seriali degli articoli aggiunti:').'</h5>'; for ($i = 0; $i < $rs[0]['qta']; ++$i) { if ($i % 3 == 0) { echo ' @@ -164,7 +186,7 @@ if ($dir == 'entrata') { </div> <script> - $(".serial").on("keyup", function() { + $(".serial").on("keyup change", function() { controllaSerial($(this).val()); }); @@ -176,9 +198,9 @@ if ($dir == 'entrata') { id_module: "'.$module_fatture.'", id_record: globals.id_record, serial: value, - is_rientrabile: '.$is_rientrabile.', + is_rientrabile: "'.$is_rientrabile.'", id_articolo: input("idarticolo").get(), - op: "controlla_serial", + op: "controlla_serial" }, success: function(data){ data = JSON.parse(data); @@ -201,6 +223,30 @@ if ($dir == 'entrata') { select_serial.selectClear(); } } + + function generaSerial() { + $.ajax({ + url: globals.rootdir + "/actions.php", + type: "POST", + dataType: "json", + data: { + id_module: "'.$module_articoli->id.'", + id_record: "'.$rs[0]['idarticolo'].'", + serial_start: input("serial_start").get(), + serial_end: input("serial_end").get(), + check: 1, + op: "generate_serials" + }, + success: function (response) { + let i = 0; + $(".serial").each(function() { + $(this).val(response[i]); + controllaSerial(response[i]); + i++; + }); + } + }); + } </script>'; } @@ -208,7 +254,11 @@ echo ' <!-- PULSANTI --> <div class="row"> - <div class="col-md-12 text-right"> + <div class="col-md-2"> + <button type="button" class="btn btn-info '.($dir == 'uscita' ? 'hidden' : '').'" data-toggle="modal" data-title="'.tr('Aggiungi serial').'" data-href="'.base_path().'/modules/articoli/plugins/articoli.lotti.php?id_module='.$module_articoli->id.'&id_record='.$rs[0]['idarticolo'].'&modal=1"><i class="fa fa-magic"></i> '.tr('Crea').'</button> + </div> + + <div class="col-md-10 text-right"> <button type="submit" id="aggiorna" class="btn btn-primary pull-right"><i class="fa fa-barcode"></i> '.tr('Aggiorna').'</button> </div> </div>