belongs_to(Propietario::class, 'propietario_rut', 'rut')->findOne(); } public function propiedad() { return $this->belongs_to(Propiedad::class, 'propiedad_id')->findOne(); } public function formaPago() { return $this->belongs_to(FormaPago::class, 'forma_pago_id')->findOne(); } public function agente() { $agente = $this->belongs_to(Agente::class, 'agente_id'); if ($agente) { return $agente->findOne(); } return null; } public function valor() { return $this->valor_promesa * $this->uf; } public function proyecto() { return $this->propiedad->unidadPrincipal->unidadProyecto->proyecto(); } public function comision() { return $this->agente->comision($this->proyecto->inmobiliaria->rut); } public function ufM2() { if (!$this->agente) { return 0; } return ($this->valor_promesa - $this->premios->sum('valor') - $this->comision() - $this->propiedad->unidades->sum('valor')) / $this->propiedad->unidadPrincipal->unidadProyecto->m2->vendibles(); } public function fechaPromesa() { return Carbon::parse($this->fecha_promesa, config('app.timezone')); } public function premios() { $premios = $this->has_many(Premio::class, 'venta_id'); if ($premios) { return $premios->findMany(); } return []; } public function comentarios() { $comentarios = $this->has_many(Comentario::class, 'venta_id'); if ($comentarios) { return $comentarios->findMany(); } return []; } public function fondos() { return $this->has_many(FondoVenta::class, 'venta_id')->findMany(); } public function postventas() { $postventas = $this->has_many(Postventa::class, 'venta_id'); if ($postventas) { return $postventas->findMany(); } return null; } }