Skip to content

Commit b5f2316

Browse files
committed
fix: #1222 impostazione barcode in apposito campo in fase di creazione articolo in importazione XML fattura di acquisto
1 parent dbf8fc3 commit b5f2316

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

plugins/importFE/src/FatturaOrdinaria.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,23 @@ public function saveRighe($articoli, $iva, $conto, $movimentazione = true, $crea
270270
// Creazione articolo relativo
271271
if (!empty($codici) && !empty($crea_articoli[$key]) && empty($articolo)) {
272272
$codice = $codici[0]['CodiceValore'];
273+
$barcode = null;
274+
275+
// Verifico se il codice è un barcode (EAN, EN, o altri tipi di codice a barre)
276+
$tipo_codice = $codici[0]['CodiceTipo'] ?? '';
277+
if (in_array(strtoupper($tipo_codice), ['EAN', 'EN', 'BARCODE', 'GTIN', 'UPC', 'JAN'])) {
278+
// Il codice è un barcode: salvo il barcode e genero un progressivo come codice articolo
279+
$barcode = $codice;
280+
$codice = database()->fetchOne('SELECT MAX(id) as codice FROM mg_articoli')['codice'] + 1;
281+
} else {
282+
// Verifico anche se il codice sembra essere un barcode (formato numerico tipico di EAN/GTIN)
283+
// EAN-13 ha 13 cifre, EAN-8 ha 8 cifre, UPC ha 12 cifre
284+
if (preg_match('/^[0-9]{8,14}$/', $codice) && strlen($codice) != 6) {
285+
$barcode = $codice;
286+
$codice = database()->fetchOne('SELECT MAX(id) as codice FROM mg_articoli')['codice'] + 1;
287+
}
288+
}
289+
273290
$articolo = ArticoloOriginale::where('codice', $codice)->first();
274291

275292
if (empty($articolo)) {
@@ -287,7 +304,16 @@ public function saveRighe($articoli, $iva, $conto, $movimentazione = true, $crea
287304
$articolo->um = $riga['UnitaMisura'];
288305
$articolo->idconto_acquisto = $conto[$key] ?: null;
289306
$articolo->abilita_serial = setting('Serial number abilitato di default');
307+
290308
$articolo->save();
309+
310+
// Se abbiamo identificato un barcode, lo salviamo nella tabella mg_articoli_barcode
311+
if (!empty($barcode)) {
312+
database()->insert('mg_articoli_barcode', [
313+
'idarticolo' => $articolo->id,
314+
'barcode' => $barcode,
315+
]);
316+
}
291317
}
292318
}
293319

@@ -719,3 +745,4 @@ protected function getRitenutaRivalsa()
719745
];
720746
}
721747
}
748+

0 commit comments

Comments
 (0)