Separazione sconti da righe

This commit is contained in:
Thomas Zilio 2019-04-04 08:12:32 -07:00
parent dc12894410
commit f0f755ebc6
26 changed files with 263 additions and 24 deletions

View File

@ -107,22 +107,22 @@ abstract class Description extends Model
public function isDescrizione()
{
return $this->is_descrizione == 1;
return !$this->isArticolo() && !$this->isSconto() && !$this->isRiga() && $this instanceof Description;
}
public function isSconto()
{
return $this->subtotale == 0;
return $this instanceof Discount;
}
public function isRiga()
{
return !$this->isDescrizione() && !$this->isSconto() && !$this->isArticolo();
return !$this->isArticolo() && !$this->isSconto() && $this instanceof Row;
}
public function isArticolo()
{
return !empty($this->idarticolo);
return $this instanceof Article;
}
/**

View File

@ -0,0 +1,40 @@
<?php
namespace Common\Components;
use Common\Document;
use Illuminate\Database\Eloquent\Builder;
use Modules\Iva\Aliquota;
abstract class Discount extends Row
{
public function getIvaAttribute()
{
return $this->attributes['iva'];
}
/**
* Effettua i conti per l'IVA.
*/
protected function fixIva()
{
$this->attributes['iva'] = parent::$iva;
$descrizione = $this->aliquota->descrizione;
if (!empty($descrizione)) {
$this->attributes['desc_iva'] = $descrizione;
}
$this->fixIvaIndetraibile();
}
protected static function boot($bypass = false)
{
parent::boot(true);
static::addGlobalScope('discounts', function (Builder $builder) {
$builder->where('subtotale', '=', 0);
});
}
}

View File

@ -177,6 +177,10 @@ abstract class Row extends Description
static::addGlobalScope('rows', function (Builder $builder) {
$builder->whereNull('idarticolo')->orWhere('idarticolo', '=', 0);
});
static::addGlobalScope('not_discounts', function (Builder $builder) {
$builder->where('subtotale', '!=', 0);
});
}
}

View File

@ -14,8 +14,9 @@ abstract class Document extends Model
$descrizioni = $this->descrizioni;
$righe = $this->righe;
$articoli = $this->articoli;
$sconti = $this->sconti;
return $descrizioni->merge($righe)->merge($articoli)->sortBy('order');
return $descrizioni->merge($righe)->merge($articoli)->merge($sconti)->sortBy('order');
}
abstract public function righe();
@ -24,6 +25,8 @@ abstract class Document extends Model
abstract public function descrizioni();
abstract public function sconti();
/**
* Calcola l'imponibile del documento.
*

View File

@ -5,6 +5,7 @@ include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Anagrafica;
use Modules\Contratti\Components\Articolo;
use Modules\Contratti\Components\Riga;
use Modules\Contratti\Components\Sconto;
use Modules\Contratti\Contratto;
switch (post('op')) {
@ -128,9 +129,9 @@ switch (post('op')) {
case 'manage_sconto':
if (post('idriga') != null) {
$sconto = Riga::find(post('idriga'));
$sconto = Sconto::find(post('idriga'));
} else {
$sconto = Riga::build($contratto);
$sconto = Sconto::build($contratto);
}
$sconto->qta = 1;

View File

@ -13,7 +13,7 @@ class Articolo extends Article
protected $table = 'co_righe_contratti';
/**
* Crea un nuovo articolo collegato ad una contratto.
* Crea un nuovo articolo collegato ad un contratto.
*
* @param Contratto $contratto
* @param Original $articolo

View File

@ -12,7 +12,7 @@ class Descrizione extends Description
protected $table = 'co_righe_contratti';
/**
* Crea una nuova riga collegata ad una contratto.
* Crea una nuova riga collegata ad un contratto.
*
* @param Contratto $contratto
*

View File

@ -12,7 +12,7 @@ class Riga extends Row
protected $table = 'co_righe_contratti';
/**
* Crea una nuova riga collegata ad una contratto.
* Crea una nuova riga collegata ad un contratto.
*
* @param Contratto $contratto
*

View File

@ -0,0 +1,27 @@
<?php
namespace Modules\Contratti\Components;
use Common\Components\Discount;
use Modules\Contratti\Contratto;
class Sconto extends Discount
{
use RelationTrait;
protected $table = 'co_righe_contratti';
/**
* Crea un nuovo sconto collegato ad un contratto.
*
* @param Contratto $contratto
*
* @return self
*/
public static function build(Contratto $contratto)
{
$model = parent::build($contratto);
return $model;
}
}

View File

@ -122,6 +122,11 @@ class Contratto extends Document
return $this->hasMany(Components\Riga::class, 'idcontratto');
}
public function sconti()
{
return $this->hasMany(Components\Sconto::class, 'idcontratto');
}
public function descrizioni()
{
return $this->hasMany(Components\Descrizione::class, 'idcontratto');

View File

@ -6,6 +6,7 @@ use Modules\Anagrafiche\Anagrafica;
use Modules\DDT\Components\Articolo;
use Modules\DDT\Components\Descrizione;
use Modules\DDT\Components\Riga;
use Modules\DDT\Components\Sconto;
use Modules\DDT\DDT;
use Modules\DDT\Tipo;
@ -182,9 +183,9 @@ switch (post('op')) {
case 'manage_sconto':
if (post('idriga') != null) {
$sconto = Riga::find(post('idriga'));
$sconto = Sconto::find(post('idriga'));
} else {
$sconto = Riga::build($ddt);
$sconto = Sconto::build($ddt);
}
$sconto->qta = 1;

View File

@ -0,0 +1,27 @@
<?php
namespace Modules\DDT\Components;
use Common\Components\Discount;
use Modules\DDT\DDT;
class Sconto extends Discount
{
use RelationTrait;
protected $table = 'dt_righe_ddt';
/**
* Crea un nuovo sconto collegato ad un ddt.
*
* @param DDT $ddt
*
* @return self
*/
public static function build(DDT $ddt)
{
$model = parent::build($ddt);
return $model;
}
}

View File

@ -110,6 +110,11 @@ class DDT extends Document
return $this->hasMany(Components\Riga::class, 'idddt');
}
public function sconti()
{
return $this->hasMany(Components\Sconto::class, 'idddt');
}
public function descrizioni()
{
return $this->hasMany(Components\Descrizione::class, 'idddt');

View File

@ -6,6 +6,7 @@ use Modules\Anagrafiche\Anagrafica;
use Modules\Articoli\Articolo as ArticoloOriginale;
use Modules\Fatture\Components\Articolo;
use Modules\Fatture\Components\Descrizione;
use Modules\Fatture\Components\Sconto;
use Modules\Fatture\Components\Riga;
use Modules\Fatture\Fattura;
use Modules\Fatture\Tipo;
@ -333,9 +334,9 @@ switch (post('op')) {
case 'manage_sconto':
if (post('idriga') != null) {
$sconto = Riga::find(post('idriga'));
$sconto = Sconto::find(post('idriga'));
} else {
$sconto = Riga::build($fattura);
$sconto = Sconto::build($fattura);
}
$sconto->qta = 1;

View File

@ -0,0 +1,27 @@
<?php
namespace Modules\Fatture\Components;
use Common\Components\Discount;
use Modules\Fatture\Fattura;
class Sconto extends Discount
{
use RelationTrait;
protected $table = 'co_righe_documenti';
/**
* Crea un nuovo sconto collegato ad una fattura.
*
* @param Fattura $fattura
*
* @return self
*/
public static function build(Fattura $fattura)
{
$model = parent::build($fattura);
return $model;
}
}

View File

@ -4,6 +4,7 @@ namespace Modules\Fatture;
use Common\Document;
use Modules\Anagrafiche\Anagrafica;
use Modules\Fatture\Components\Riga;
use Modules\Pagamenti\Pagamento;
use Modules\RitenuteContributi\RitenutaContributi;
use Plugins\ExportFE\FatturaElettronica;
@ -234,6 +235,11 @@ class Fattura extends Document
return $this->hasMany(Components\Riga::class, 'iddocumento');
}
public function sconti()
{
return $this->hasMany(Components\Sconto::class, 'iddocumento');
}
public function descrizioni()
{
return $this->hasMany(Components\Descrizione::class, 'iddocumento');

View File

@ -0,0 +1,27 @@
<?php
namespace Modules\Interventi\Components;
use Common\Components\Discount;
use Modules\Interventi\Intervento;
class Sconto extends Discount
{
use RelationTrait;
protected $table = 'in_righe_interventi';
/**
* Crea un nuovo sconto collegata ad un intervento.
*
* @param Intervento $intervento
*
* @return self
*/
public static function build(Intervento $intervento)
{
$model = parent::build($intervento);
return $model;
}
}

View File

@ -75,6 +75,11 @@ class Intervento extends Document
return $this->hasMany(Riga::class, 'idintervento');
}
public function sconti()
{
return $this->hasMany(Components\Sconto::class, 'idintervento');
}
public function descrizioni()
{
return $this->righe()->where('prezzo_vendita', 0);

View File

@ -6,6 +6,7 @@ use Modules\Anagrafiche\Anagrafica;
use Modules\Ordini\Components\Articolo;
use Modules\Ordini\Components\Descrizione;
use Modules\Ordini\Components\Riga;
use Modules\Ordini\Components\Sconto;
use Modules\Ordini\Ordine;
use Modules\Ordini\Tipo;
@ -223,9 +224,9 @@ switch (post('op')) {
case 'manage_sconto':
if (post('idriga') != null) {
$sconto = Riga::find(post('idriga'));
$sconto = Sconto::find(post('idriga'));
} else {
$sconto = Riga::build($ordine);
$sconto = Sconto::build($ordine);
}
$sconto->qta = 1;

View File

@ -0,0 +1,27 @@
<?php
namespace Modules\Ordini\Components;
use Common\Components\Discount;
use Modules\Ordini\Ordine;
class Sconto extends Discount
{
use RelationTrait;
protected $table = 'or_righe_ordini';
/**
* Crea un nuovo sconto collegato ad un ordine.
*
* @param Ordine $ordine
*
* @return self
*/
public static function build(Ordine $ordine)
{
$model = parent::build($ordine);
return $model;
}
}

View File

@ -110,6 +110,11 @@ class Ordine extends Document
return $this->hasMany(Components\Riga::class, 'idordine');
}
public function sconti()
{
return $this->hasMany(Components\Sconto::class, 'idordine');
}
public function descrizioni()
{
return $this->hasMany(Components\Descrizione::class, 'idordine');

View File

@ -6,6 +6,7 @@ use Modules\Anagrafiche\Anagrafica;
use Modules\Interventi\TipoSessione;
use Modules\Preventivi\Components\Articolo;
use Modules\Preventivi\Components\Riga;
use Modules\Preventivi\Components\Sconto;
use Modules\Preventivi\Preventivo;
switch (post('op')) {
@ -232,9 +233,9 @@ switch (post('op')) {
case 'manage_sconto':
if (post('idriga') != null) {
$sconto = Riga::find(post('idriga'));
$sconto = Sconto::find(post('idriga'));
} else {
$sconto = Riga::build($preventivo);
$sconto = Sconto::build($preventivo);
}
$sconto->qta = 1;

View File

@ -0,0 +1,27 @@
<?php
namespace Modules\Preventivi\Components;
use Common\Components\Discount;
use Modules\Preventivi\Preventivo;
class Sconto extends Discount
{
use RelationTrait;
protected $table = 'co_righe_preventivi';
/**
* Crea un nuovo sconto collegato ad un preventivo.
*
* @param Preventivo $preventivo
*
* @return self
*/
public static function build(Preventivo $preventivo)
{
$model = parent::build($preventivo);
return $model;
}
}

View File

@ -116,6 +116,11 @@ class Preventivo extends Document
return $this->hasMany(Components\Riga::class, 'idpreventivo');
}
public function sconti()
{
return $this->hasMany(Components\Sconto::class, 'idpreventivo');
}
public function descrizioni()
{
return $this->hasMany(Components\Descrizione::class, 'idpreventivo');

View File

@ -82,12 +82,6 @@ $files = [
'plugins/xml/SE_v1.0.xml',
'plugins/exportFE/view.php',
'plugins/exportFE/src/stylesheet-1.2.1.xsl',
'modules/contratti/src/Components/Sconto.php',
'modules/fatture/src/Components/Sconto.php',
'modules/ordini/src/Components/Sconto.php',
'modules/ddt/src/Components/Sconto.php',
'modules/preventivi/src/Components/Sconto.php',
'include/src/Components/Discount.php',
];
foreach ($files as $key => $value) {