Files
operadores/api/src/Venta.php
2021-08-16 22:13:08 -04:00

89 lines
2.7 KiB
PHP

<?php
namespace Incoviba;
use \Model;
class Venta extends Model {
public static $_table = 'venta';
protected $operador;
public function operador() {
if ($this->operador === null) {
$pa = $this->proyecto_agente();
if ($pa) {
$id = $this->proyecto_agente()->agente_tipo()->agente()->id;
$this->operador = Model::factory(Operador::class)->find_one($id);
}
}
return $this->operador;
}
protected $proyecto_agente;
public function proyecto_agente() {
if ($this->proyecto_agente === null) {
$this->proyecto_agente = $this->belongs_to(ProyectoAgente::class, 'agente')->find_one();
}
return $this->proyecto_agente;
}
protected $estados;
public function estados() {
if ($this->estados === null) {
$this->estados = $this->has_many(EstadoVenta::class, 'venta')->order_by_asc('fecha', 'id')->find_many();
}
return $this->estados;
}
protected $activa;
public function activa() {
if ($this->activa === null) {
$this->activa = false;
foreach ($this->estados() as $estado) {
if ($estado->tipo()->activa == 1) {
$this->activa = true;
}
}
}
return $this->activa;
}
protected $propietario_obj;
public function propietario() {
if ($this->propietario_obj === null) {
$this->propietario_obj = $this->belongs_to(Propietario::class, 'propietario', 'rut')->find_one();
}
return $this->propietario_obj;
}
protected $propiedad_obj;
public function propiedad() {
if ($this->propiedad_obj === null) {
$this->propiedad_obj = $this->belongs_to(Propiedad::class, 'propiedad')->find_one();
}
return $this->propiedad_obj;
}
protected $comision;
public function comision() {
if ($this->comision === null) {
$proyecto_id = $this->propiedad()->unidades()[0]->proyecto_tipo_unidad()->proyecto()->id;
$comision = array_values(array_filter($this->operador()->comisiones(), function($item) use ($proyecto_id) {
return ($item->proyecto->id == $proyecto_id);
}));
$comision = $comision[0]->comision;
$this->comision = (object) [
'valor' => $comision / 100,
'total' => $comision / 100 * $this->valor_uf
];
}
return $this->comision;
}
public function as_array() {
$arr = parent::as_array();
$arr['propietario'] = $this->propietario()->as_array();
$arr['propiedad'] = $this->propiedad()->as_array();
$arr['valor'] = '$ ' . number_format($this->valor_uf, 2, ',', '.');
if ($this->operador()) {
$arr['operador'] = $this->operador()->as_array();
$arr['comision'] = (array) $this->comision();
$arr['comision']['formateada'] = '$ ' . number_format($this->comision()->total, 2, ',', '.');
}
return $arr;
}
}