1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-01-06 12:56:56 +01:00
openstamanager/src/base/Article.php

73 lines
2.1 KiB
PHP
Raw Normal View History

2018-09-25 16:47:44 +02:00
<?php
namespace Base;
use Modules\Articoli\Articolo as Original;
abstract class Article extends Row
{
abstract protected function serialID();
abstract public function movimenta($qta);
protected static function boot()
{
parent::boot();
static::addGlobalScope('articles', function (Builder $builder) {
$builder->whereNotNull('idarticolo')->where('idarticolo', '<>', 0);
});
}
public static function new(Original $articolo)
{
$model = parent::new();
$model->articolo()->associate($articolo);
$model->descrizione = $articolo->descrizione;
$model->abilita_serial = $articolo->abilita_serial;
$model->um = $articolo->um;
return $model;
}
public function setSerials($serials)
{
database()->sync('mg_prodotti', [
'id_riga_'.$this->serialID() => $this->id,
'dir' => 'entrata',
'id_articolo' => $this->idarticolo,
], [
'serial' => $serials,
]);
}
public function setQtaAttribute($value)
{
$previous = $this->qta;
$this->attributes['qta'] = $value;
$diff = $value - $previous;
$this->movimenta($diff);
$database = database();
// Se c'è un collegamento ad un ddt, aggiorno la quantità evasa
if (!empty($this->idddt)) {
$database->query('UPDATE dt_righe_ddt SET qta_evasa = qta_evasa + '.$diff.' WHERE descrizione = '.prepare($this->descrizione).' AND idarticolo = '.prepare($this->idarticolo).' AND idddt = '.prepare($this->idddt).' AND idiva = '.prepare($this->idiva));
}
// Se c'è un collegamento ad un ordine, aggiorno la quantità evasa
if (!empty($this->idordine)) {
$database->query('UPDATE or_righe_ordini SET qta_evasa = qta_evasa + '.$diff.' WHERE descrizione = '.prepare($this->descrizione).' AND idarticolo = '.prepare($this->idarticolo).' AND idordine = '.prepare($this->idordine).' AND idiva = '.prepare($this->idiva));
}
}
public function articolo()
{
return $this->belongsTo(Original::class, 'idarticolo');
}
}