From 8fe7ecd5da29aaa8bc39a1f91c59bebb74c43b61 Mon Sep 17 00:00:00 2001 From: MatteoPistorello Date: Mon, 20 Jan 2025 11:40:35 +0100 Subject: [PATCH] feat: generazione barcode interno --- composer.json | 5 +++-- modules/articoli/actions.php | 17 ++++++++++++++++- modules/articoli/add.php | 5 +++++ modules/articoli/bulk.php | 25 +++++++++++++++++++++++++ modules/articoli/edit.php | 26 +++++++++++++++++++++++++- 5 files changed, 74 insertions(+), 4 deletions(-) diff --git a/composer.json b/composer.json index ba9b487c0..0fa97c1ad 100755 --- a/composer.json +++ b/composer.json @@ -41,15 +41,16 @@ "intervention/image": "^2.3", "jurosh/pdf-merge": "^2.1", "league/csv": "^9.7.0", - "league/oauth2-client": "^2.6", - "league/oauth2-google": "^4.0", "league/flysystem": "^3.0", "league/flysystem-ftp": "^3.0", + "league/oauth2-client": "^2.6", + "league/oauth2-google": "^4.0", "monolog/monolog": "^1.27", "mpdf/mpdf": "^v8.0.10", "mpociot/vat-calculator": "^2.3", "owasp/csrf-protector-php": "^1.0", "phpmailer/phpmailer": "^6.0", + "picqer/php-barcode-generator": "^3.2", "respect/validation": "^2.0", "servo/fluidxml": "^2.0", "slim/flash": "^0.4.0", diff --git a/modules/articoli/actions.php b/modules/articoli/actions.php index 624a01749..ea307dc6d 100755 --- a/modules/articoli/actions.php +++ b/modules/articoli/actions.php @@ -61,7 +61,12 @@ if (Models\Locale::getDefault()->id == Models\Locale::getPredefined()->id) { $articolo->name = post('descrizione'); } - $articolo->barcode = post('barcode'); + + if (post('genera_barcode')) { + $codice = "200".str_pad($articolo->id, 9, "0", STR_PAD_LEFT); + $barcode = (new Picqer\Barcode\Types\TypeEan13())->getBarcode($codice)->getBarcode(); + } + $articolo->barcode = $barcode ?: post('barcode'); $articolo->coefficiente = post('coefficiente'); $articolo->idiva_vendita = post('idiva_vendita'); $articolo->prezzo_acquisto = post('prezzo_acquisto'); @@ -455,6 +460,16 @@ flash()->info(tr('Giacenza aggiornata!')); + break; + + case 'generate-barcode': + $codice = "200".str_pad($id_record, 9, "0", STR_PAD_LEFT); + $barcode = (new Picqer\Barcode\Types\TypeEan13())->getBarcode($codice)->getBarcode(); + + echo json_encode([ + 'barcode' => $barcode + ]); + break; } diff --git a/modules/articoli/add.php b/modules/articoli/add.php index df8ede826..ba4cc4d31 100755 --- a/modules/articoli/add.php +++ b/modules/articoli/add.php @@ -36,6 +36,7 @@
+ {[ "type": "text", "label": "", "name": "barcode", "required": 0, "value": "", "validation": "barcode" ]}
@@ -223,4 +224,8 @@ function scorpora_iva_add() { let scorporato = prezzo * 100 / (100 + percentuale); input.val(scorporato); } + +$("#genera_barcode").click(function(){ + $(".modal #barcode").attr("disabled", $(this).is(":checked")).val(""); +}); diff --git a/modules/articoli/bulk.php b/modules/articoli/bulk.php index 1fb3f7631..ab6d5baea 100755 --- a/modules/articoli/bulk.php +++ b/modules/articoli/bulk.php @@ -441,6 +441,20 @@ flash()->info(tr('Listino aggiornato correttamente!')); + break; + + case 'generate-barcode-bulk': + foreach ($id_records as $id) { + $codice = "200".str_pad($id, 9, "0", STR_PAD_LEFT); + $barcode = (new Picqer\Barcode\Types\TypeEan13())->getBarcode($codice)->getBarcode(); + + $articolo = Articolo::find($id); + $articolo->barcode = $barcode; + $articolo->save(); + } + + flash()->info(tr('Barcode generati correttamente!')); + break; } @@ -632,4 +646,15 @@ ], ]; +$operations['generate-barcode-bulk'] = [ + 'text' => ' '.tr('Genera barcode').'', + 'data' => [ + 'title' => tr('Generare il barcode per gli articoli selezionati?'), + 'msg' => 'Il barcode sarĂ  generato in maniera random con tipologia EAN-13', + 'button' => tr('Genera'), + 'class' => 'btn btn-lg btn-success', + 'blank' => false, + ], +]; + return $operations; diff --git a/modules/articoli/edit.php b/modules/articoli/edit.php index 11c650cf6..ef73ee0ef 100755 --- a/modules/articoli/edit.php +++ b/modules/articoli/edit.php @@ -50,7 +50,8 @@
- {[ "type": "text", "label": "", "name": "barcode", "value": "$barcode$" ]} + + {[ "type": "text", "label": "", "name": "barcode", "validation": "barcode", "class": "text-center", "value": "$barcode$" ]}
@@ -359,6 +360,29 @@ function scorporaIva() { $("#scorporaIva").click( function() { scorporaIva(); }); + +function generaBarcode() { + $.ajax({ + url: globals.rootdir + "/actions.php", + type: "POST", + data: { + id_module: globals.id_module, + id_record: globals.id_record, + op: "generate-barcode" + }, + success: function(response) { + response = JSON.parse(response); + let input = $("#barcode"); + input.val(response.barcode); + }, + error: function(xhr, status, error) { + } + }); +} + +$("#generaBarcode").click( function() { + generaBarcode(); +});