Skip to content

Commit 3618d68

Browse files
feat: stampa barcode da righe ddt
1 parent 60e7c98 commit 3618d68

3 files changed

Lines changed: 96 additions & 1 deletion

File tree

modules/ddt/actions.php

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -562,6 +562,49 @@
562562

563563
break;
564564

565+
case 'print_barcode_righe':
566+
$id_righe = (array) post('righe');
567+
568+
// Array per memorizzare gli articoli con le loro quantità
569+
$articoli_barcode = [];
570+
foreach ($id_righe as $id_riga) {
571+
$riga = Articolo::find($id_riga);
572+
573+
// Verifica che sia una riga articolo e che abbia una quantità > 0
574+
if ($riga && $riga->isArticolo() && $riga->qta > 0) {
575+
$articolo_originale = ArticoloOriginale::find($riga->idarticolo);
576+
577+
if ($articolo_originale) {
578+
// Cerca i barcode dell'articolo
579+
$barcodes = $dbo->table('mg_articoli_barcode')
580+
->where('idarticolo', $riga->idarticolo)
581+
->get();
582+
583+
// Aggiungi ogni barcode per il numero di volte pari alla quantità
584+
foreach ($barcodes as $barcode_record) {
585+
for ($i = 0; $i < $riga->qta; $i++) {
586+
$articoli_barcode[] = $barcode_record;
587+
}
588+
}
589+
}
590+
}
591+
}
592+
593+
if (empty($articoli_barcode)) {
594+
echo json_encode(['error' => tr('Nessun articolo con barcode trovato nelle righe selezionate')]);
595+
break;
596+
}
597+
598+
// Salva gli articoli in sessione per la stampa
599+
$_SESSION['superselect']['barcode_ddt_righe'] = $articoli_barcode;
600+
601+
// Restituisce l'URL per la stampa
602+
$id_print = Prints::getPrints()['Barcode'];
603+
$url = base_path().'/pdfgen.php?id_print='.$id_print.'&id_record='.ArticoloOriginale::where('codice', '!=', '')->first()->id.'&from_ddt=1';
604+
605+
echo $url;
606+
break;
607+
565608
case 'add_articolo':
566609
$id_articolo = post('id_articolo');
567610
$barcode = post('barcode');

modules/ddt/row-list.php

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,10 @@
447447
<button type="button" class="btn btn-xs btn-default disabled" id="modifica_iva_righe" onclick="modificaIvaRighe(getSelectData());">
448448
<i class="fa fa-percent"></i> '.tr('Modifica IVA').'
449449
</button>
450+
451+
<button type="button" class="btn btn-xs btn-default disabled" id="stampa_barcode_righe" onclick="stampaBarcodeDDT(getSelectData());">
452+
<i class="fa fa-barcode"></i> '.tr('Stampa barcode').'
453+
</button>
450454
</div>';
451455
}
452456
echo '
@@ -589,6 +593,48 @@ function duplicaRiga(id) {
589593
}).catch(swal.noop);
590594
}
591595
596+
function stampaBarcodeDDT(id) {
597+
if (id.length === 0) {
598+
swal({
599+
title: "'.tr('Nessuna riga selezionata').'",
600+
text: "'.tr('Seleziona almeno una riga articolo per stampare i barcode').'",
601+
type: "warning"
602+
});
603+
return;
604+
}
605+
606+
swal({
607+
title: "'.tr('Stampare i barcode delle righe selezionate?').'",
608+
html: "'.tr('Verranno stampate le etichette barcode per ogni articolo selezionato, nella quantità presente nel DDT').'",
609+
type: "warning",
610+
showCancelButton: true,
611+
confirmButtonText: "'.tr('Stampa').'"
612+
}).then(function () {
613+
// Salva le righe selezionate in sessione e reindirizza alla stampa
614+
$.ajax({
615+
url: globals.rootdir + "/actions.php",
616+
type: "POST",
617+
data: {
618+
id_module: globals.id_module,
619+
id_record: globals.id_record,
620+
op: "print_barcode_righe",
621+
righe: id,
622+
},
623+
success: function (response) {
624+
// Apri la stampa in una nuova finestra
625+
window.open(response, "_blank");
626+
},
627+
error: function() {
628+
swal({
629+
title: "'.tr('Errore').'",
630+
text: "'.tr('Errore durante la preparazione della stampa').'",
631+
type: "error"
632+
});
633+
}
634+
});
635+
}).catch(swal.noop);
636+
}
637+
592638
function modificaSeriali(button) {
593639
let riga = $(button).closest("tr");
594640
let id = riga.data("id");
@@ -652,13 +698,15 @@ function modificaIvaRighe(righe) {
652698
$("#confronta_righe").removeClass("disabled");
653699
$("#aggiorna_righe").removeClass("disabled");
654700
$("#modifica_iva_righe").removeClass("disabled");
701+
$("#stampa_barcode_righe").removeClass("disabled");
655702
$("#elimina").addClass("disabled");
656703
} else {
657704
$("#elimina_righe").addClass("disabled");
658705
$("#duplica_righe").addClass("disabled");
659706
$("#confronta_righe").addClass("disabled");
660707
$("#aggiorna_righe").addClass("disabled");
661708
$("#modifica_iva_righe").addClass("disabled");
709+
$("#stampa_barcode_righe").addClass("disabled");
662710
$("#elimina").removeClass("disabled");
663711
}
664712
});

templates/barcode/init.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,11 @@
2222

2323
use Modules\Articoli\Articolo;
2424

25-
if (!empty($_SESSION['superselect']['id_articolo_barcode'])) {
25+
if (!empty($_SESSION['superselect']['barcode_ddt_righe'])) {
26+
// Stampa barcode da righe DDT
27+
$barcodes = $_SESSION['superselect']['barcode_ddt_righe'];
28+
unset($_SESSION['superselect']['barcode_ddt_righe']);
29+
} elseif (!empty($_SESSION['superselect']['id_articolo_barcode'])) {
2630
$articoli = Articolo::whereIn('id', $_SESSION['superselect']['id_articolo_barcode'])->get();
2731
$barcodes = $dbo->table('mg_articoli_barcode')->whereIn('idarticolo', $_SESSION['superselect']['id_articolo_barcode'])->get();
2832
unset($_SESSION['superselect']['id_articolo_barcode']);

0 commit comments

Comments
 (0)