Aggiunta importazione CSV articoli con prezzi specifici

This commit is contained in:
MatteoPistorello 2020-12-04 16:16:41 +01:00
parent 8cf1fb1ea0
commit 9688312299
1 changed files with 82 additions and 4 deletions

View File

@ -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']
];
}
}