diff --git a/modules/articoli/src/Import/CSV.php b/modules/articoli/src/Import/CSV.php index 8871c4875..3407ae5ad 100644 --- a/modules/articoli/src/Import/CSV.php +++ b/modules/articoli/src/Import/CSV.php @@ -26,6 +26,7 @@ use Modules\Articoli\Articolo; use Modules\Articoli\Categoria; use Modules\Iva\Aliquota; use Modules\Anagrafiche\Anagrafica; +use Plugins\DettagliArticolo\DettaglioPrezzo; /** * Struttura per la gestione delle operazioni di importazione (da CSV) degli Articoli. @@ -34,6 +35,8 @@ use Modules\Anagrafiche\Anagrafica; */ class CSV extends CSVImporter { + protected $id_articoli_processati; + public function getAvailableFields() { return [ @@ -113,11 +116,12 @@ class CSV extends CSVImporter ], [ 'field' => 'id_fornitore', - 'label' => 'Fornitore', + 'label' => 'Fornitore predefinito', 'names' => [ 'id_fornitore', 'Id Fornitore', 'Fornitore', + 'Fornitore predefinito', ], ], [ @@ -136,6 +140,30 @@ class CSV extends CSVImporter 'field' => 'note', 'label' => 'Note', ], + [ + 'field' => 'anagrafica_listino', + 'label' => 'Anagrafica listino', + ], + [ + 'field' => 'qta_minima', + 'label' => 'Qta minima', + ], + [ + 'field' => 'qta_massima', + 'label' => 'Qta massima', + ], + [ + 'field' => 'prezzo_listino', + 'label' => 'Prezzo listino', + ], + [ + 'field' => 'sconto_listino', + 'label' => 'Sconto listino', + ], + [ + 'field' => 'dir', + 'label' => 'Cliente/Fornitore listino', + ], ]; } @@ -197,14 +225,59 @@ class CSV extends CSVImporter // Esportazione della quantità indicata $qta_registrata = (float) ($record['qta']); - $nome_sede = $record['$nome_sede']; + $nome_sede = $record['nome_sede']; unset($record['qta']); unset($record['nome_sede']); + + $dettagli['anagrafica_listino'] = $record['anagrafica_listino']; + $dettagli['qta_minima'] = $record['qta_minima']; + $dettagli['qta_massima'] = $record['qta_massima']; + $dettagli['prezzo_listino'] = $record['prezzo_listino']; + $dettagli['sconto_listino'] = $record['sconto_listino']; + $dettagli['dir'] = $record['dir']; + unset($record['anagrafica_listino']); + unset($record['qta_minima']); + unset($record['qta_massima']); + unset($record['prezzo_listino']); + unset($record['sconto_listino']); + unset($record['dir']); + // Salvataggio delle informazioni generali $articolo->fill($record); $articolo->save(); + // Listini + $anagrafica = Anagrafica::where('ragione_sociale', $dettagli['anagrafica_listino'])->first(); + + $dettagli['dir'] = strtolower($dettagli['dir']); + if($dettagli['dir']=='fornitore'){ + $dettagli['dir']='uscita'; + } else if($dettagli['dir']=='cliente'){ + $dettagli['dir']='entrata'; + } else{ + $dettagli['dir']=null; + } + + if(!empty($anagrafica) && !empty($dettagli['dir'])){ + if(!in_array($articolo->id, $this->$id_articoli_processati)){ + $database->query('DELETE FROM mg_prezzi_articoli WHERE id_articolo='.prepare($articolo->id)); + } + $this->$id_articoli_processati[] = $articolo->id; + + $dettaglio_predefinito = DettaglioPrezzo::build($articolo, $anagrafica, $dettagli['dir']); + $dettaglio_predefinito->sconto_percentuale = $dettagli['sconto_listino']; + $dettaglio_predefinito->setPrezzoUnitario($dettagli['prezzo_listino']); + + if($dettagli['qta_minima']!==null && !empty($dettagli['qta_massima'])){ + $dettaglio_predefinito->minimo = $dettagli['qta_minima']; + $dettaglio_predefinito->massimo = $dettagli['qta_massima']; + } + + $dettaglio_predefinito->save(); + } + + // Movimentazione della quantità registrata $giacenze = $articolo->getGiacenze(); $id_sede = 0; @@ -221,13 +294,18 @@ class CSV extends CSVImporter 'idsede_azienda' => $id_sede, 'idsede_controparte' => 0, ]); + + } public static function getExample() { return [ - ['Codice', 'Barcode', 'Descrizione', 'Fornitore', 'Quantità', 'Unità di misura', 'Prezzo acquisto', 'Prezzo vendita', 'Peso lordo (KG)', 'Volume (M3)', 'Categoria', 'Sottocategoria', 'Ubicazione', 'Note'], - ['00004', '719376861871', 'Articolo', 'Mario Rossi', '10', 'Kg', '5,25', '12,72', '10,2', '500', 'Categoria4', 'Sottocategoria2', 'Scaffale 1', 'Articolo di prova'], + ['Codice', 'Barcode', 'Descrizione', 'Fornitore predefinito', 'Quantità', 'Unità di misura', 'Prezzo acquisto', 'Prezzo vendita', 'Peso lordo (KG)', 'Volume (M3)', 'Categoria', 'Sottocategoria', 'Ubicazione', 'Note', 'Anagrafica listino', 'Qta minima', 'Qta massima', 'Prezzo listino', 'Sconto listino', 'Cliente/Fornitore listino'], + ['00004', '719376861871', 'Articolo', 'Mario Rossi', '10', 'Kg', '5.25', '12.72', '10.2', '500', 'Categoria4', 'Sottocategoria2', 'Scaffale 1', 'Articolo di prova', 'Mario Rossi', '', '', '10', '5', 'Fornitore'], + ['00004', '719376861871', 'Articolo', 'Mario Rossi', '10', 'Kg', '5.25', '12.72', '10.2', '500', 'Categoria4', 'Sottocategoria2', 'Scaffale 1', 'Articolo di prova', 'Mario Rossi', '1', '10', '9', '', 'Fornitore'], + ['00004', '719376861871', 'Articolo', 'Mario Rossi', '10', 'Kg', '5.25', '12.72', '10.2', '500', 'Categoria4', 'Sottocategoria2', 'Scaffale 1', 'Articolo di prova', 'Mario Rossi', '11', '20', '8', '5', 'Fornitore'], + ['00004', '719376861871', 'Articolo', 'Mario Rossi', '10', 'Kg', '5.25', '12.72', '10.2', '500', 'Categoria4', 'Sottocategoria2', 'Scaffale 1', 'Articolo di prova', 'Mario Verdi', '1', '10', '20', '10', 'Cliente'] ]; } }