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 @@ switch (post('op')) {
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 @@ switch (post('op')) {
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 @@ $aliquota_predefinita = floatval(Aliquota::find($iva_predefinita)->percentuale);
+
{[ "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 @@ switch (post('op')) {
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['stampa-etichette'] = [
],
];
+$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 @@ use Modules\Iva\Aliquota;
- {[ "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();
+});