Files
modelos/src/old/Venta/Precio.php
2019-12-23 18:01:23 -03:00

82 lines
2.1 KiB
PHP

<?php
namespace Incoviba\old\Venta;
use Incoviba\Common\Alias\OldModel as Model;
/**
* @property int $id
* @property Unidad $unidad
* @property double $valor
*/
class Precio extends Model
{
public function unidad()
{
return $this->belongsTo(Unidad::class, 'unidad')->findOne();
}
public function estados()
{
return $this->hasMany(EstadoPrecio::class, 'precio')->findMany();
}
public function estado()
{
return \model(EstadoPrecio::class)
->select('estado_precio.*')
->rawJoin('JOIN (SELECT precio, MAX(id) AS id FROM estado_precio GROUP BY precio)', ['e0.id', '=', 'estado_precio.id'], 'e0')
->where('estado_precio.precio', $this->id)
->findOne();
}
public function inicio()
{
return \model(EstadoPrecio::class)
->where('estado_precio.precio', $this->id)
->orderByAsc('id')
->findOne();
}
public function vigente()
{
if ($this->estado()->estado()->descripcion == 'vigente') {
return true;
}
return false;
}
public function reemplazar($fecha)
{
if ($this->estado()->estado()->descripcion == 'reemplazado') {
return;
}
$tipo = model(TipoEstadoPrecio::class)->where('descripcion', 'reemplazado')->findOne();
$data = [
'precio' => $this->id,
'fecha' => $fecha->format('Y-m-d'),
'estado' => $tipo->id
];
$estado = model(EstadoPrecio::class)->create($data);
$estado->save();
}
public function actualizar($fecha)
{
$tipo = model(TipoEstadoPrecio::class)->where('descripcion', 'vigente')->findOne();
$data = [
'precio' => $this->id,
'fecha' => $fecha->format('Y-m-d'),
'estado' => $tipo->id
];
$estado = model(EstadoPrecio::class)->create($data);
$estado->save();
}
public function new($fecha)
{
$this->save();
$tipo = model(TipoEstadoPrecio::class)->where('descripcion', 'vigente')->findOne();
$data = [
'precio' => $this->id,
'fecha' => $fecha->format('Y-m-d'),
'estado' => $tipo->id
];
$estado = model(EstadoPrecio::class)->create($data);
$estado->save();
}
}