Miglioramento importi ivati

E' ora permessa l'impostazione di prezzo_unitario e prezzo_unitario_ivato in modo indipendente, e l'ultimo impostato sovrascrive il primo.
This commit is contained in:
Thomas Zilio 2020-02-17 19:11:40 +01:00
parent 9fb0d120c3
commit f5d3f9628a
12 changed files with 86 additions and 85 deletions

View File

@ -15,7 +15,7 @@ abstract class Row extends Description
'iva_unitaria' => 'float',
'sconto_percentuale' => 'float',
'sconto_unitario' => 'float',
'sconto_iva' => 'float',
'sconto_iva_unitario' => 'float',
'sconto_unitario_ivato' => 'float',
//'qta_evasa' => 'float',
];
@ -149,29 +149,6 @@ abstract class Row extends Description
$this->load('aliquota');
}
/**
* Imposta il prezzo unitario per la riga.
*
* @param int $value
*/
public function setPrezzoUnitarioAttribute($value)
{
$percentuale_iva = floatval($this->aliquota->percentuale) / 100;
// Gestione IVA incorporata
if ($this->incorporaIVA()) {
$this->attributes['prezzo_unitario_ivato'] = $value;
$this->attributes['iva_unitaria'] = $value * $percentuale_iva / (1 + $percentuale_iva); // Calcolo IVA
$this->attributes['prezzo_unitario'] = $value - $this->attributes['iva_unitaria'];
} else {
$this->attributes['prezzo_unitario'] = $value;
$this->attributes['iva_unitaria'] = $value * $percentuale_iva; // Calcolo IVA
$this->attributes['prezzo_unitario_ivato'] = $value + $this->attributes['iva_unitaria'];
}
}
/**
* Imposta il prezzo unitario corrente (unitario oppure unitario ivato a seconda dell'impostazione 'Utilizza prezzi di vendita con IVA incorporata') per la riga.
*
@ -202,6 +179,52 @@ abstract class Row extends Description
}
}
/**
* Imposta il prezzo unitario (senza IVA) per la riga corrente.
*
* @param $value
*/
public function setPrezzoUnitarioAttribute($value)
{
$this->attributes['prezzo_unitario'] = $value;
$percentuale_iva = floatval($this->aliquota->percentuale) / 100;
$this->attributes['iva_unitaria'] = $value * $percentuale_iva; // Calcolo IVA
$this->attributes['prezzo_unitario_ivato'] = $value + $this->attributes['iva_unitaria'];
}
/**
* Imposta il prezzo unitario ivato (con IVA) per la riga corrente.
*
* @param $value
*/
public function setPrezzoUnitarioIvatoAttribute($value)
{
$this->attributes['prezzo_unitario_ivato'] = $value;
$percentuale_iva = floatval($this->aliquota->percentuale) / 100;
$this->attributes['iva_unitaria'] = $value * $percentuale_iva / (1 + $percentuale_iva); // Calcolo IVA
$this->attributes['prezzo_unitario'] = $value - $this->attributes['iva_unitaria'];
}
/**
* Imposta il prezzo unitario secondo le informazioni indicate per valore e tipologia (UNT o PRC).
*
* @param $value
* @param $type
*/
public function setPrezzoUnitario($prezzo_unitario, $id_iva)
{
$this->id_iva = $id_iva;
// Gestione IVA incorporata
if ($this->incorporaIVA()) {
$this->prezzo_unitario_ivato = $prezzo_unitario;
} else {
$this->prezzo_unitario = $prezzo_unitario;
}
}
/**
* Imposta lo sconto secondo le informazioni indicate per valore e tipologia (UNT o PRC).
*
@ -230,13 +253,13 @@ abstract class Row extends Description
if ($this->incorporaIVA()) {
$this->attributes['sconto_unitario_ivato'] = $sconto;
$this->attributes['sconto_iva'] = $sconto * $percentuale_iva / (1 + $percentuale_iva); // Calcolo IVA
$this->attributes['sconto_unitario'] = $sconto - $this->attributes['sconto_iva'];
$this->attributes['sconto_iva_unitario'] = $sconto * $percentuale_iva / (1 + $percentuale_iva); // Calcolo IVA
$this->attributes['sconto_unitario'] = $sconto - $this->attributes['sconto_iva_unitario'];
} else {
$this->attributes['sconto_unitario'] = $sconto;
$this->attributes['sconto_iva'] = $sconto * $percentuale_iva; // Calcolo IVA
$this->attributes['sconto_unitario_ivato'] = $sconto + $this->attributes['sconto_iva'];
$this->attributes['sconto_iva_unitario'] = $sconto * $percentuale_iva; // Calcolo IVA
$this->attributes['sconto_unitario_ivato'] = $sconto + $this->attributes['sconto_iva_unitario'];
}
}

View File

@ -120,10 +120,8 @@ switch (post('op')) {
$articolo->descrizione = post('descrizione');
$articolo->um = post('um') ?: null;
$articolo->id_iva = post('idiva');
$articolo->costo_unitario = post('costo_unitario') ?: 0;
$articolo->prezzo_unitario = post('prezzo_unitario');
$articolo->setPrezzoUnitario(post('prezzo_unitario'), post('idiva'));
$articolo->setSconto(post('sconto'), post('tipo_sconto'));
try {
@ -180,7 +178,7 @@ switch (post('op')) {
$riga->id_iva = post('idiva');
$riga->costo_unitario = post('costo_unitario') ?: 0;
$riga->prezzo_unitario = post('prezzo_unitario');
$riga->setPrezzoUnitario(post('prezzo_unitario'), post('idiva'));
$riga->setSconto(post('sconto'), post('tipo_sconto'));
$riga->qta = $qta;

View File

@ -130,10 +130,9 @@ switch (post('op')) {
$articolo->descrizione = post('descrizione');
$articolo->um = post('um') ?: null;
$articolo->id_iva = post('idiva');
$articolo->costo_unitario = post('costo_unitario') ?: 0;
$articolo->prezzo_unitario = post('prezzo_unitario');
$articolo->setPrezzoUnitario(post('prezzo_unitario'), post('idiva'));
$articolo->setSconto(post('sconto'), post('tipo_sconto'));
try {
@ -190,10 +189,9 @@ switch (post('op')) {
$riga->descrizione = post('descrizione');
$riga->um = post('um') ?: null;
$riga->id_iva = post('idiva');
$riga->costo_unitario = post('costo_unitario') ?: 0;
$riga->prezzo_unitario = post('prezzo_unitario');
$riga->setPrezzoUnitario(post('prezzo_unitario'), post('idiva'));
$riga->setSconto(post('sconto'), post('tipo_sconto'));
$riga->qta = post('qta');

View File

@ -358,7 +358,7 @@ switch (post('op')) {
$articolo->id_rivalsa_inps = post('id_rivalsa_inps') ?: null;
$articolo->costo_unitario = post('costo_unitario') ?: 0;
$articolo->prezzo_unitario = post('prezzo_unitario');
$articolo->setPrezzoUnitario(post('prezzo_unitario'), post('idiva'));
$articolo->setSconto(post('sconto'), post('tipo_sconto'));
try {
@ -437,7 +437,7 @@ switch (post('op')) {
$riga->id_rivalsa_inps = post('id_rivalsa_inps') ?: null;
$riga->costo_unitario = post('costo_unitario') ?: 0;
$riga->prezzo_unitario = post('prezzo_unitario');
$riga->setPrezzoUnitario(post('prezzo_unitario'), post('idiva'));
$riga->setSconto(post('sconto'), post('tipo_sconto'));
$riga->qta = $qta;

View File

@ -222,10 +222,8 @@ $riga = $intervento->getRiga($type, $id_riga);
$articolo->descrizione = post('descrizione');
$articolo->um = post('um') ?: null;
$articolo->id_iva = post('idiva');
$articolo->costo_unitario = post('costo_unitario') ?: 0;
$articolo->prezzo_unitario = post('prezzo_unitario');
$articolo->setPrezzoUnitario(post('prezzo_unitario'), post('idiva'));
$articolo->setSconto(post('sconto'), post('tipo_sconto'));
try {
@ -282,10 +280,8 @@ $riga = $intervento->getRiga($type, $id_riga);
$riga->descrizione = post('descrizione');
$riga->um = post('um') ?: null;
$riga->id_iva = post('idiva');
$riga->costo_unitario = post('costo_unitario') ?: 0;
$riga->prezzo_unitario = post('prezzo_unitario');
$riga->setPrezzoUnitario(post('prezzo_unitario'), post('idiva'));
$riga->setSconto(post('sconto'), post('tipo_sconto'));
$riga->qta = $qta;

View File

@ -122,10 +122,9 @@ switch (post('op')) {
$articolo->descrizione = post('descrizione');
$articolo->um = post('um') ?: null;
$articolo->id_iva = post('idiva');
$articolo->costo_unitario = post('costo_unitario') ?: 0;
$articolo->prezzo_unitario = post('prezzo_unitario');
$articolo->setPrezzoUnitario(post('prezzo_unitario'), post('idiva'));
$articolo->setSconto(post('sconto'), post('tipo_sconto'));
try {
@ -182,10 +181,9 @@ switch (post('op')) {
$riga->descrizione = post('descrizione');
$riga->um = post('um') ?: null;
$riga->id_iva = post('idiva');
$riga->costo_unitario = post('costo_unitario') ?: 0;
$riga->prezzo_unitario = post('prezzo_unitario');
$riga->setPrezzoUnitario(post('prezzo_unitario'), post('idiva'));
$riga->setSconto(post('sconto'), post('tipo_sconto'));
$riga->qta = post('qta');

View File

@ -151,10 +151,8 @@ switch (post('op')) {
$articolo->descrizione = post('descrizione');
$articolo->um = post('um') ?: null;
$articolo->id_iva = post('idiva');
$articolo->costo_unitario = post('costo_unitario') ?: 0;
$articolo->prezzo_unitario = post('prezzo_unitario');
$articolo->setPrezzoUnitario(post('prezzo_unitario'), post('idiva'));
$articolo->setSconto(post('sconto'), post('tipo_sconto'));
try {
@ -208,10 +206,8 @@ switch (post('op')) {
$riga->descrizione = post('descrizione');
$riga->um = post('um') ?: null;
$riga->id_iva = post('idiva');
$riga->costo_unitario = post('costo_unitario') ?: 0;
$riga->prezzo_unitario = post('prezzo_unitario');
$riga->setPrezzoUnitario(post('prezzo_unitario'), post('idiva'));
$riga->setSconto(post('sconto'), post('tipo_sconto'));
$riga->qta = $qta;

View File

@ -1,10 +1,10 @@
<?php
use Modules\Contratti\Contratto;
use Modules\Contratti\Components\Riga;
use Plugins\PianificazioneFatturazione\Pianificazione;
use Modules\Contratti\Contratto;
use Modules\Fatture\Fattura;
use Modules\Fatture\Tipo;
use Plugins\PianificazioneFatturazione\Pianificazione;
include_once __DIR__.'/../../core.php';
@ -49,12 +49,11 @@ switch ($operazione) {
$prezzo_unitario = $totale / $qta_riga / $numero_fatture;
for($rata = 1; $rata <= $numero_fatture; $rata++) {
for ($rata = 1; $rata <= $numero_fatture; ++$rata) {
$riga = Riga::build($contratto);
$riga->descrizione = $descrizione_riga;
$riga->id_iva = $id_iva;
$riga->prezzo_unitario = $prezzo_unitario;
$riga->setPrezzoUnitario(post('prezzo_unitario'), post('idiva'));
$riga->qta = $qta_riga;
$riga->save();

View File

@ -37,7 +37,7 @@ if (!$pianificazioni->isEmpty()) {
<tbody>';
$previous = null;
foreach ($pianificazioni as $rata => $pianificazione){
foreach ($pianificazioni as $rata => $pianificazione) {
echo '
<tr>
<td>';

View File

@ -5,9 +5,6 @@ namespace Plugins\PianificazioneFatturazione;
use Common\Document;
use Modules\Contratti\Contratto;
use Modules\Fatture\Fattura;
use Modules\Interventi\Intervento;
use Modules\TipiIntervento\Tipo as TipoSessione;
use Traits\RecordTrait;
class Pianificazione extends Document
{
@ -75,11 +72,11 @@ class Pianificazione extends Document
$numero_righe = $righe->count() / $pianificazioni->count();
$p = $this;
$index = $pianificazioni->search(function($item) use($p){
$index = $pianificazioni->search(function ($item) use ($p) {
return $item->id == $p->id;
});
return $righe->splice($index*$numero_righe, $numero_righe);
return $righe->splice($index * $numero_righe, $numero_righe);
}
public function articoli()

View File

@ -203,10 +203,8 @@ switch ($operazione) {
$articolo->descrizione = post('descrizione');
$articolo->um = post('um') ?: null;
$articolo->id_iva = post('idiva');
$articolo->costo_unitario = post('costo_unitario') ?: 0;
$articolo->prezzo_unitario = post('prezzo_unitario');
$articolo->setPrezzoUnitario(post('prezzo_unitario'), post('idiva'));
$articolo->setSconto(post('sconto'), post('tipo_sconto'));
try {
@ -237,10 +235,8 @@ switch ($operazione) {
$riga->descrizione = post('descrizione');
$riga->um = post('um') ?: null;
$riga->id_iva = post('idiva');
$riga->costo_unitario = post('costo_unitario') ?: 0;
$riga->prezzo_unitario = post('prezzo_unitario');
$riga->setPrezzoUnitario(post('prezzo_unitario'), post('idiva'));
$riga->setSconto(post('sconto'), post('tipo_sconto'));
$riga->qta = $qta;

View File

@ -52,50 +52,50 @@ ALTER TABLE `co_righe_documenti` CHANGE `prezzo_unitario_acquisto` `costo_unitar
ADD `iva_unitaria` decimal(12,6) NOT NULL AFTER `prezzo_unitario`,
ADD `prezzo_unitario_ivato` decimal(12,6) NOT NULL AFTER `iva_unitaria`,
ADD `sconto_percentuale` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_iva` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva`;
ADD `sconto_iva_unitario` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva_unitario`;
ALTER TABLE `co_righe_preventivi` CHANGE `prezzo_unitario_acquisto` `costo_unitario` decimal(12,6) NOT NULL AFTER `qta`,
ADD `prezzo_unitario` decimal(12,6) NOT NULL AFTER `costo_unitario`,
ADD `iva_unitaria` decimal(12,6) NOT NULL AFTER `prezzo_unitario`,
ADD `prezzo_unitario_ivato` decimal(12,6) NOT NULL AFTER `iva_unitaria`,
ADD `sconto_percentuale` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_iva` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva`;
ADD `sconto_iva_unitario` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva_unitario`;
ALTER TABLE `co_righe_contratti` CHANGE `prezzo_unitario_acquisto` `costo_unitario` decimal(12,6) NOT NULL AFTER `qta`,
ADD `prezzo_unitario` decimal(12,6) NOT NULL AFTER `costo_unitario`,
ADD `iva_unitaria` decimal(12,6) NOT NULL AFTER `prezzo_unitario`,
ADD `prezzo_unitario_ivato` decimal(12,6) NOT NULL AFTER `iva_unitaria`,
ADD `sconto_percentuale` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_iva` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva`;
ADD `sconto_iva_unitario` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva_unitario`;
ALTER TABLE `dt_righe_ddt` CHANGE `prezzo_unitario_acquisto` `costo_unitario` decimal(12,6) NOT NULL AFTER `qta`,
ADD `prezzo_unitario` decimal(12,6) NOT NULL AFTER `costo_unitario`,
ADD `iva_unitaria` decimal(12,6) NOT NULL AFTER `prezzo_unitario`,
ADD `prezzo_unitario_ivato` decimal(12,6) NOT NULL AFTER `iva_unitaria`,
ADD `sconto_percentuale` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_iva` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva`;
ADD `sconto_iva_unitario` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva_unitario`;
ALTER TABLE `or_righe_ordini` CHANGE `prezzo_unitario_acquisto` `costo_unitario` decimal(12,6) NOT NULL AFTER `qta`,
ADD `prezzo_unitario` decimal(12,6) NOT NULL AFTER `costo_unitario`,
ADD `iva_unitaria` decimal(12,6) NOT NULL AFTER `prezzo_unitario`,
ADD `prezzo_unitario_ivato` decimal(12,6) NOT NULL AFTER `iva_unitaria`,
ADD `sconto_percentuale` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_iva` decimal(12,6) NOT NULL AFTER `sconto_percentuale`,
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva`;
ADD `sconto_iva_unitario` decimal(12,6) NOT NULL AFTER `sconto_percentuale`,
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva_unitario`;
ALTER TABLE `in_righe_interventi` CHANGE `prezzo_acquisto` `costo_unitario` decimal(12,6) NOT NULL AFTER `qta`,
CHANGE `prezzo_vendita` `prezzo_unitario` decimal(12,6) NOT NULL AFTER `costo_unitario`,
ADD `iva_unitaria` decimal(12,6) NOT NULL AFTER `prezzo_unitario`,
ADD `prezzo_unitario_ivato` decimal(12,6) NOT NULL AFTER `iva_unitaria`,
ADD `sconto_percentuale` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_iva` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva`;
ADD `sconto_iva_unitario` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva_unitario`;
ALTER TABLE `co_promemoria_righe` CHANGE `prezzo_acquisto` `costo_unitario` decimal(12,6) NOT NULL AFTER `qta`,
CHANGE `prezzo_vendita` `prezzo_unitario` decimal(12,6) NOT NULL AFTER `costo_unitario`,
ADD `iva_unitaria` decimal(12,6) NOT NULL AFTER `prezzo_unitario`,
ADD `prezzo_unitario_ivato` decimal(12,6) NOT NULL AFTER `iva_unitaria`,
ADD `sconto_percentuale` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_iva` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva`;
ADD `sconto_iva_unitario` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva_unitario`;
UPDATE `co_righe_documenti` SET `qta` = IF(`qta` = 0, 1, `qta`),
`prezzo_unitario` = `subtotale` / `qta`,