Escriturar

This commit is contained in:
2023-12-20 08:44:49 -03:00
parent 1ba53c9e12
commit 379a33a4da
11 changed files with 430 additions and 16 deletions

View File

@ -12,6 +12,8 @@ class Venta
protected Repository\Venta $ventaRepository,
protected Repository\Venta\EstadoVenta $estadoVentaRepository,
protected Repository\Venta\TipoEstadoVenta $tipoEstadoVentaRepository,
protected Repository\Venta\Credito $creditoRepository,
protected Repository\Venta\Escritura $escrituraRepository,
protected Venta\Propietario $propietarioService,
protected Venta\Propiedad $propiedadService,
protected Venta\Pie $pieService,
@ -106,6 +108,63 @@ class Venta
return $venta;
}
public function escriturar(Model\Venta $venta, array $data): bool
{
if (in_array($venta->currentEstado()->tipoEstadoVenta->descripcion, ['escriturando', 'firmado por inmobiliaria', 'archivado'])) {
return true;
}
try {
$tipoEstado = $this->tipoEstadoVentaRepository->fetchByDescripcion('escriturando');
if (isset($data['valor_reajuste']) and $data['valor_reajuste'] !== '') {
$fecha = new DateTimeImmutable($data['fecha_reajuste']);
$reajusteData = [
'valor' => $data['valor_reajuste'],
'fecha' => $fecha->format('Y-m-d')
];
$pie = $venta->formaPago()->pie;
$this->pieService->reajustar($pie, $reajusteData);
}
if (isset($data['valor_pago_pesos']) and $data['valor_pago_pesos'] !== '') {
$fecha = new DateTimeImmutable($data['fecha_pago']);
$uf = $this->moneyService->getUF($fecha);
$valor = $data['valor_pago_ufs'] !== '' ? $data['valor_pago_ufs'] * $uf : $data['valor_pago_pesos'];
$escrituraData = [
'valor' => $valor,
'fecha' => $fecha->format('Y-m-d'),
'uf' => $uf
];
$escritura = $this->escrituraRepository->create($escrituraData);
$escritura = $this->escrituraRepository->save($escritura);
$this->ventaRepository->edit($venta, ['escritura' => $escritura->id]);
}
if (isset($data['banco_credito']) and $data['banco_credito'] !== '') {
$this->creditoRepository->edit($venta->formaPago()->credito, ['banco' => $data['banco_credito']]);
}
$fecha = new DateTimeImmutable($data['fecha']);
$uf = $this->moneyService->getUF($fecha);
if (isset($data['valor_subsidio']) and $data['valor_subsidio'] !== '') {
$subsidioData = [
'fecha_venta' => $fecha->format('Y-m-d'),
'ahorro' => $data['valor_ahorro'],
'subsidio' => $data['valor_subsidio'],
'uf' => $uf
];
$subsidio = $this->addSubsidio($subsidioData);
$this->ventaRepository->edit($venta, ['subsidio' => $subsidio->id]);
}
$estadoData = [
'venta' => $venta->id,
'estado' => $tipoEstado->id,
'fecha' => $fecha->format('Y-m-d')
];
$estado = $this->estadoVentaRepository->create($estadoData);
$this->estadoVentaRepository->save($estado);
return true;
} catch (Implement\Exception\EmptyResult) {
return false;
}
}
protected function addPropietario(array $data): Model\Venta\Propietario
{
if (isset($data['natural_uno'])) {

View File

@ -1,6 +1,7 @@
<?php
namespace Incoviba\Service\Venta;
use Incoviba\Common\Implement\Exception\EmptyResult;
use Incoviba\Repository;
use Incoviba\Model;
@ -8,14 +9,13 @@ class Pie
{
public function __construct(
protected Repository\Venta\Pie $pieRepository,
protected Cuota $cuotaService
protected Cuota $cuotaService,
protected Pago $pagoService
) {}
public function getById(int $pie_id): Model\Venta\Pie
{
$pie = $this->pieRepository->fetchById($pie_id);
$pie->cuotasArray = $this->cuotaService->getVigenteByPie($pie_id);
return $pie;
return $this->process($this->pieRepository->fetchById($pie_id));
}
public function add(array $data): Model\Venta\Pie
@ -31,4 +31,18 @@ class Pie
{
return $this->pieRepository->edit($pie, $data);
}
public function reajustar(Model\Venta\Pie $pie, array $data): Model\Venta\Pie
{
$pago = $this->pagoService->add($data);
return $this->pieRepository->edit($pie, ['reajuste' => $pago->id]);
}
protected function process(Model\Venta\Pie $pie): Model\Venta\Pie
{
$pie->cuotasArray = $this->cuotaService->getVigenteByPie($pie->id);
try {
$pie->asociados = $this->pieRepository->fetchAsociados($pie->id);
} catch (EmptyResult) {}
return $pie;
}
}