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(); } }