mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-07 23:28:50 +01:00
Miglioramento movimentazioni
This commit is contained in:
parent
81a834ef4b
commit
bc5a0d3dfa
@ -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);
|
||||
|
@ -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).
|
||||
*
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ class Articolo extends Article
|
||||
return $model;
|
||||
}
|
||||
|
||||
public function movimenta($qta)
|
||||
public function movimentaMagazzino($qta)
|
||||
{
|
||||
$ddt = $this->ddt;
|
||||
$tipo = $ddt->tipo;
|
||||
|
@ -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)) {
|
||||
|
@ -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;
|
||||
|
@ -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()
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user