@@ -512,6 +512,68 @@ public function saveRighe($articoli, $iva, $conto, $movimentazione = true, $crea
512512 $ dettaglio_predefinito ->setPrezzoUnitario ($ prezzo_unitario );
513513 $ dettaglio_predefinito ->save ();
514514
515+ // Aggiornamento o creazione fornitore-articolo (codice e barcode)
516+ $ codice_fornitore = null ;
517+ $ barcode_fornitore = null ;
518+
519+ // Cerca tra tutti i codici quello che inizia per "cod" (case-insensitive) per il codice fornitore
520+ foreach ($ codici as $ codice_item ) {
521+ $ codice_valore = strtolower ($ codice_item ['CodiceTipo ' ]);
522+ if (str_starts_with ($ codice_valore , 'cod ' )) {
523+ $ codice_fornitore = $ codice_item ['CodiceValore ' ];
524+ break ;
525+ }
526+ }
527+
528+ // Cerca tra tutti i codici quelli con tipo barcode, ean o en per il barcode
529+ foreach ($ codici as $ codice_item ) {
530+ $ tipo_codice = strtolower ($ codice_item ['CodiceTipo ' ] ?? '' );
531+ if (in_array ($ tipo_codice , ['barcode ' , 'ean ' , 'en ' ])) {
532+ $ barcode_fornitore = $ codice_item ['CodiceValore ' ];
533+ break ;
534+ }
535+ }
536+
537+ // Usiamo la descrizione della riga per il campo descrizione del fornitore
538+ $ descrizione_fornitore = $ riga ['Descrizione ' ];
539+
540+ // Se abbiamo trovato un codice o barcode, salviamo nella tabella mg_fornitore_articolo
541+ if (!empty ($ codice_fornitore ) || !empty ($ barcode_fornitore ) || !empty ($ descrizione_fornitore )) {
542+ $ fornitore_articolo = database ()->table ('mg_fornitore_articolo ' )
543+ ->where ('id_articolo ' , $ articolo ->id )
544+ ->where ('id_fornitore ' , $ anagrafica ->idanagrafica )
545+ ->first ();
546+
547+ if (empty ($ fornitore_articolo )) {
548+ // Creiamo un nuovo record - inseriamo solo i campi non nulli
549+ $ insert_data = [
550+ 'id_articolo ' => $ articolo ->id ,
551+ 'id_fornitore ' => $ anagrafica ->idanagrafica ,
552+ 'codice_fornitore ' => $ codice_fornitore ?: '' ,
553+ 'descrizione ' => $ descrizione_fornitore ,
554+ ];
555+ if (!empty ($ barcode_fornitore )) {
556+ $ insert_data ['barcode_fornitore ' ] = $ barcode_fornitore ;
557+ }
558+ database ()->insert ('mg_fornitore_articolo ' , $ insert_data );
559+ } else {
560+ // Aggiorniamo il record esistente
561+ $ update_data = [];
562+ if (!empty ($ codice_fornitore )) {
563+ $ update_data ['codice_fornitore ' ] = $ codice_fornitore ;
564+ }
565+ if (!empty ($ barcode_fornitore )) {
566+ $ update_data ['barcode_fornitore ' ] = $ barcode_fornitore ;
567+ }
568+ if (!empty ($ descrizione_fornitore )) {
569+ $ update_data ['descrizione ' ] = $ descrizione_fornitore ;
570+ }
571+ if (!empty ($ update_data )) {
572+ database ()->table ('mg_fornitore_articolo ' )->where ('id ' , $ fornitore_articolo ->id )->update ($ update_data );
573+ }
574+ }
575+ }
576+
515577 // Aggiornamento fornitore predefinito
516578 if ($ update_info [$ key ] == 'update_all ' ) {
517579 // Aggiornamento prezzo di acquisto e fornitore predefinito
0 commit comments