@@ -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