1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2024-12-23 05:54:03 +01:00

Creazione automatica articoli da FE

This commit is contained in:
Thomas Zilio 2019-10-18 16:40:15 +02:00
parent 1025019943
commit 2109ab44b9
8 changed files with 57 additions and 9 deletions

View File

@ -58,6 +58,7 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
- Miglioramento del plugin *Giacenze* nel modulo **Articoli** per interagire con gli **Ordini** registrati, e aggiunta della quantità progressiva per nel plugin *Movimenti* - Miglioramento del plugin *Giacenze* nel modulo **Articoli** per interagire con gli **Ordini** registrati, e aggiunta della quantità progressiva per nel plugin *Movimenti*
- Generazione del numero delle **Fatture di vendita** a seguito dell'emissione della stessa - Generazione del numero delle **Fatture di vendita** a seguito dell'emissione della stessa
- Supporto alla precisione di importi e quantità fino a 5 decimali - Supporto alla precisione di importi e quantità fino a 5 decimali
- Opzione per la creazione automatica degli articoli presenti in **Fattura Elettronica**
### Rimosso (Removed) ### Rimosso (Removed)
- Funzione *get_costi_intervento* del modulo **Attività**, a causa dell'aggiornamento della maggior parte del sistema di gestione degli **Attività** con le classi Eloquent - Funzione *get_costi_intervento* del modulo **Attività**, a causa dell'aggiornamento della maggior parte del sistema di gestione degli **Attività** con le classi Eloquent

View File

@ -14,6 +14,24 @@ class Articolo extends Model
protected $table = 'mg_articoli'; protected $table = 'mg_articoli';
public static function build($codice, $nome, Categoria $categoria, Categoria $sottocategoria = null)
{
$model = parent::build();
$model->codice = $codice;
$model->descrizione = $nome;
$model->abilita_serial = false;
$model->attivo = true;
$model->categoria()->associate($categoria);
$model->sottocategoria()->associate($sottocategoria);
$model->save();
return $model;
}
/** /**
* Funzione per inserire i movimenti di magazzino. * Funzione per inserire i movimenti di magazzino.
* *

View File

@ -12,6 +12,16 @@ class Categoria extends Model
protected $table = 'mg_categorie'; protected $table = 'mg_categorie';
protected static $parent_identifier = 'parent'; protected static $parent_identifier = 'parent';
public static function build($nome)
{
$model = parent::build();
$model->nome = $nome;
$model->save();
return $model;
}
public function articoli() public function articoli()
{ {
return $this->hasMany(Articolo::class, 'id_categoria'); return $this->hasMany(Articolo::class, 'id_categoria');

View File

@ -1232,7 +1232,7 @@ class FatturaElettronica
]; ];
} }
$rs_ritenuta = $database->fetchOne("SELECT percentuale_imponibile FROM co_ritenutaacconto WHERE id=".prepare($riga['idritenutaacconto'])); $rs_ritenuta = $database->fetchOne('SELECT percentuale_imponibile FROM co_ritenutaacconto WHERE id='.prepare($riga['idritenutaacconto']));
if (!empty($rs_ritenuta['percentuale_imponibile'])) { if (!empty($rs_ritenuta['percentuale_imponibile'])) {
$dettaglio[]['AltriDatiGestionali'] = [ $dettaglio[]['AltriDatiGestionali'] = [
'TipoDato' => 'IMPON-RACC', 'TipoDato' => 'IMPON-RACC',

View File

@ -91,6 +91,7 @@ switch (filter('op')) {
'iva' => post('iva'), 'iva' => post('iva'),
'conto' => post('conto'), 'conto' => post('conto'),
'movimentazione' => post('movimentazione'), 'movimentazione' => post('movimentazione'),
'crea_articoli' => post('crea_articoli'),
]; ];
$fattura_pa = FatturaElettronica::manage($filename); $fattura_pa = FatturaElettronica::manage($filename);

View File

@ -243,9 +243,13 @@ echo '
// Movimentazioni // Movimentazioni
echo ' echo '
<div class="col-md-6"> <div class="col-md-3">
{[ "type": "checkbox", "label": "'.tr('Movimenta gli articoli').'", "name": "movimentazione", "value": 1 ]} {[ "type": "checkbox", "label": "'.tr('Movimenta gli articoli').'", "name": "movimentazione", "value": 1 ]}
</div> </div>
<div class="col-md-3">
{[ "type": "checkbox", "label": "'.tr('Creazione automatica articoli').'", "name": "crea_articoli", "value": 0, "help": "'.tr("Nel caso di righe con tag CodiceArticolo, il gestionale procede alla creazione dell'articolo se la riga non risulta assegnata manualmente").'" ]}
</div>
</div>'; </div>';
// Righe // Righe
@ -280,16 +284,13 @@ if (!empty($righe)) {
$codici = $riga['CodiceArticolo'] ?: []; $codici = $riga['CodiceArticolo'] ?: [];
$codici = !empty($codici) && !isset($codici[0]) ? [$codici] : $codici; $codici = !empty($codici) && !isset($codici[0]) ? [$codici] : $codici;
$codice_principale = null;
$codici_articoli = []; $codici_articoli = [];
foreach ($codici as $codice) { foreach ($codici as $codice) {
$codice_principale = $codice_principale ?: $codice['CodiceValore'];
$codici_articoli[] = $codice['CodiceValore'].' ('.$codice['CodiceTipo'].')'; $codici_articoli[] = $codice['CodiceValore'].' ('.$codice['CodiceTipo'].')';
} }
// Individuazione articolo con codice relativo // Individuazione articolo con codice relativo
$codice_principale = $codici[0]['CodiceValore'];
$id_articolo = $database->fetchOne('SELECT id FROM mg_articoli WHERE codice = '.prepare($codice_principale))['id']; $id_articolo = $database->fetchOne('SELECT id FROM mg_articoli WHERE codice = '.prepare($codice_principale))['id'];
echo ' echo '

View File

@ -349,7 +349,7 @@ class FatturaElettronica
{ {
$this->saveFattura($info['id_pagamento'], $info['id_segment'], $info['id_tipo'], $info['data_registrazione'], $info['ref_fattura']); $this->saveFattura($info['id_pagamento'], $info['id_segment'], $info['id_tipo'], $info['data_registrazione'], $info['ref_fattura']);
$this->saveRighe($info['articoli'], $info['iva'], $info['conto'], $info['movimentazione']); $this->saveRighe($info['articoli'], $info['iva'], $info['conto'], $info['movimentazione'], $info['crea_articoli']);
$this->saveAllegati(); $this->saveAllegati();

View File

@ -3,6 +3,7 @@
namespace Plugins\ImportFE; namespace Plugins\ImportFE;
use Modules\Articoli\Articolo as ArticoloOriginale; use Modules\Articoli\Articolo as ArticoloOriginale;
use Modules\Articoli\Categoria;
use Modules\Fatture\Components\Articolo; use Modules\Fatture\Components\Articolo;
use Modules\Fatture\Components\Riga; use Modules\Fatture\Components\Riga;
use Modules\Fatture\Fattura; use Modules\Fatture\Fattura;
@ -85,7 +86,7 @@ class FatturaOrdinaria extends FatturaElettronica
return $this->forceArray($result); return $this->forceArray($result);
} }
public function saveRighe($articoli, $iva, $conto, $movimentazione = true) public function saveRighe($articoli, $iva, $conto, $movimentazione = true, $crea_articoli = false)
{ {
$info = $this->getRitenutaRivalsa(); $info = $this->getRitenutaRivalsa();
@ -103,6 +104,22 @@ class FatturaOrdinaria extends FatturaElettronica
$riga['PrezzoUnitario'] = floatval($riga['PrezzoUnitario']); $riga['PrezzoUnitario'] = floatval($riga['PrezzoUnitario']);
$riga['Quantita'] = floatval($riga['Quantita']); $riga['Quantita'] = floatval($riga['Quantita']);
$codici = $riga['CodiceArticolo'] ?: [];
$codici = !empty($codici) && !isset($codici[0]) ? [$codici] : $codici;
// Creazione articolo relativo
if (!empty($codici) && !empty($crea_articoli) && empty($articolo)) {
$nome_categoria = 'Importazione automatica';
$categoria = Categoria::where('nome', $nome_categoria)->first();
if (empty($categoria)) {
$categoria = Categoria::build($nome_categoria);
}
$codice = $codici[0]['CodiceValore'];
$articolo = ArticoloOriginale::build($codice, $riga['Descrizione'], $categoria);
$articolo->prezzo_acquisto = $riga['PrezzoUnitario'];
}
if (!empty($articolo)) { if (!empty($articolo)) {
$obj = Articolo::build($fattura, $articolo); $obj = Articolo::build($fattura, $articolo);