Miglioramento evasione quantità per Note
This commit is contained in:
parent
ca15c2cfff
commit
681d3e734f
|
@ -189,6 +189,34 @@ trait RelationTrait
|
|||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Modifica la quantità del componente.
|
||||
* Se la fattura è una Nota di credito/debito, risale al secondo livello di origine del componente e corregge di conseguenza le quantità evase.
|
||||
*
|
||||
* @param float $value
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function setQtaAttribute($value)
|
||||
{
|
||||
list($qta, $diff) = $this->parseQta($value);
|
||||
parent::setQtaAttribute($value);
|
||||
|
||||
if ($this->fattura->isNota() && $this->hasOriginalComponent()) {
|
||||
$source = $this->getOriginalComponent();
|
||||
|
||||
// Aggiornamento della quantità evasa di origine
|
||||
if ($source->hasOriginalComponent()) {
|
||||
$target = $source->getOriginalComponent();
|
||||
|
||||
$target->qta_evasa -= $diff;
|
||||
$target->save();
|
||||
}
|
||||
}
|
||||
|
||||
return $diff;
|
||||
}
|
||||
|
||||
/**
|
||||
* Effettua i conti per la Rivalsa INPS.
|
||||
*/
|
||||
|
|
|
@ -115,21 +115,8 @@ abstract class Component extends Model
|
|||
*/
|
||||
public function setQtaAttribute($value)
|
||||
{
|
||||
$previous = $this->qta;
|
||||
$diff = $value - $previous;
|
||||
|
||||
// Controlli su eventuale massimo per la quantità
|
||||
if ($this->hasOriginalComponent()) {
|
||||
$original = $this->getOriginalComponent();
|
||||
|
||||
// Controllo per evitare di superare la quantità totale del componente di origine
|
||||
if ($original->qta_rimanente < $diff) {
|
||||
$diff = $original->qta_rimanente;
|
||||
$value = $previous + $diff;
|
||||
}
|
||||
}
|
||||
|
||||
$this->attributes['qta'] = $value;
|
||||
list($qta, $diff) = $this->parseQta($value);
|
||||
$this->attributes['qta'] = $qta;
|
||||
|
||||
// Aggiornamento della quantità evasa di origine
|
||||
if ($this->hasOriginalComponent()) {
|
||||
|
@ -363,6 +350,32 @@ abstract class Component extends Model
|
|||
return $new;
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifica e calcola quantità e differenziale delle quantità.
|
||||
*
|
||||
* @param $value
|
||||
*
|
||||
* @return array [nuova quantità, differenza rispetto alla quantità precedente]
|
||||
*/
|
||||
protected function parseQta($value)
|
||||
{
|
||||
$previous = $this->qta;
|
||||
$diff = $value - $previous;
|
||||
|
||||
// Controlli su eventuale massimo per la quantità
|
||||
if ($this->hasOriginalComponent()) {
|
||||
$original = $this->getOriginalComponent();
|
||||
|
||||
// Controllo per evitare di superare la quantità totale del componente di origine
|
||||
if ($original->qta_rimanente < $diff) {
|
||||
$diff = $original->qta_rimanente;
|
||||
$value = $previous + $diff;
|
||||
}
|
||||
}
|
||||
|
||||
return [$value, $diff];
|
||||
}
|
||||
|
||||
/**
|
||||
* Azione personalizzata per la copia dell'oggetto (inizializzazione della copia).
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue