Skip to content

Commit 731dc5a

Browse files
committed
feat: valorizzazione codice fornitore e barcode in fase di creazione articolo da importazione fattura di acquisto
1 parent 41d1405 commit 731dc5a

1 file changed

Lines changed: 62 additions & 0 deletions

File tree

plugins/importFE/src/FatturaOrdinaria.php

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)