Miglioramento movimentazioni

This commit is contained in:
Thomas Zilio 2019-05-16 21:27:26 -07:00
parent 81a834ef4b
commit bc5a0d3dfa
8 changed files with 53 additions and 23 deletions

View File

@ -9,6 +9,7 @@ use UnexpectedValueException;
abstract class Article extends Row
{
public $movimenta_magazzino = true;
protected $serialRowID = null;
protected $abilita_movimentazione = true;
@ -27,7 +28,24 @@ abstract class Article extends Row
return $model;
}
abstract public function movimenta($qta);
public function movimenta($qta)
{
if (!$this->movimenta_magazzino) {
return;
}
$movimenta = true;
// Movimenta il magazzino solo se l'articolo non è già stato movimentato da un documento precedente
if ($this->hasOriginal()) {
$original = $this->getOriginal();
$movimenta = !$original->movimenta_magazzino;
}
if ($movimenta) {
$this->movimentaMagazzino($qta);
}
}
abstract public function getDirection();
@ -124,6 +142,8 @@ abstract class Article extends Row
return parent::save($options);
}
abstract protected function movimentaMagazzino($qta);
protected static function boot()
{
parent::boot(true);

View File

@ -38,9 +38,23 @@ abstract class Description extends Model
$previous = $this->qta;
$diff = $value - $previous;
if ($this->hasOriginal()) {
$original = $this->getOriginal();
if ($original->qta_rimanente < $diff) {
$diff = $original->qta_rimanente;
$value = $previous + $diff;
}
}
$this->attributes['qta'] = $value;
$this->evasione(-$diff);
if ($this->hasOriginal()) {
$original = $this->getOriginal();
$original->qta_evasa += $diff;
$original->save();
}
return $diff;
}
@ -57,7 +71,7 @@ abstract class Description extends Model
public function delete()
{
$this->evasione(-$this->qta);
$this->qta = 0;
return parent::delete();
}
@ -110,6 +124,9 @@ abstract class Description extends Model
// Creazione del nuovo oggetto
$model = new $object();
$model->original_id = $this->id;
$model->original_type = $current;
// Azioni specifiche di inizalizzazione
$model->customInitCopiaIn($this);
@ -131,9 +148,6 @@ abstract class Description extends Model
// Azioni specifiche successive
$model->customAfterDataCopiaIn($this);
$model->original_id = $this->id;
$model->original_type = $current;
$model->save();
return $model;
@ -163,16 +177,6 @@ abstract class Description extends Model
return $this instanceof Article;
}
protected function evasione($diff)
{
if ($this->hasOriginal()) {
$original = $this->getOriginal();
$original->qta_evasa -= $diff;
$original->save();
}
}
/**
* Azione personalizzata per la copia dell'oggetto (inizializzazione della copia).
*

View File

@ -10,6 +10,8 @@ class Articolo extends Article
{
use RelationTrait;
public $movimenta_magazzino = false;
protected $table = 'co_righe_contratti';
/**
@ -27,7 +29,7 @@ class Articolo extends Article
return $model;
}
public function movimenta($qta)
public function movimentaMagazzino($qta)
{
return;
}

View File

@ -28,7 +28,7 @@ class Articolo extends Article
return $model;
}
public function movimenta($qta)
public function movimentaMagazzino($qta)
{
$ddt = $this->ddt;
$tipo = $ddt->tipo;

View File

@ -28,7 +28,7 @@ class Articolo extends Article
return $model;
}
public function movimenta($qta)
public function movimentaMagazzino($qta)
{
// Se il documento è generato da un ddt o intervento allora **non** movimento il magazzino
if (!empty($this->idddt) || !empty($this->idintervento)) {

View File

@ -35,7 +35,7 @@ class Articolo extends Article
return $model;
}
public function movimenta($qta)
public function movimentaMagazzino($qta)
{
$articolo = $this->articolo;
$id_automezzo = $this->intervento->idautomezzo;

View File

@ -10,6 +10,8 @@ class Articolo extends Article
{
use RelationTrait;
public $movimenta_magazzino = false;
protected $table = 'or_righe_ordini';
protected $serialRowID = 'ordine';
@ -28,9 +30,9 @@ class Articolo extends Article
return $model;
}
public function movimenta($qta)
public function movimentaMagazzino($qta)
{
return true;
return;
}
public function getDirection()

View File

@ -10,6 +10,8 @@ class Articolo extends Article
{
use RelationTrait;
public $movimenta_magazzino = false;
protected $table = 'co_righe_preventivi';
/**
@ -27,7 +29,7 @@ class Articolo extends Article
return $model;
}
public function movimenta($qta)
public function movimentaMagazzino($qta)
{
return;
}