Implementacion agregar abono a escritura

This commit is contained in:
Juan Pablo Vial
2024-02-14 13:54:01 -03:00
parent 338f290539
commit 1621d6fe30
8 changed files with 257 additions and 11 deletions

View File

@ -26,6 +26,17 @@ class FormaPago implements JsonSerializable
}
return $sum;
}
public function prometido(string $moneda = Pago::UF): float
{
$sum = 0;
if (isset($this->pie)) {
$sum += $this->pie->valor($moneda);
}
if (isset($this->escritura)) {
$sum += $this->escritura->pago->valor($moneda);
}
return $sum;
}
public function total(string $moneda = Pago::UF): float
{
$sum = $this->anticipo($moneda);

View File

@ -33,14 +33,19 @@ class Pie extends Model
});
}
public function valor(string $moneda = Pago::UF): float
{
$proporcion = $this->proporcion();
if ($this->asociado !== null) {
return $this->asociado->valor($moneda) * $proporcion;
}
return array_reduce($this->cuotas(), function(float $sum, Cuota $cuota) use ($moneda) {
return $sum + $cuota->pago->valor($moneda);
}, 0) * $proporcion;
}
public function pagado(string $moneda = Pago::UF): float
{
$proporcion = 1;
if (count($this->asociados()) > 0) {
$proporcion = $this->valor / ((($this->asociado) ? $this->asociado->valor : $this->valor) + array_reduce($this->asociados(), function(float $sum, Pie $pie) {
return $sum + $pie->valor;
}, 0));
}
$proporcion = $this->proporcion();
if ($this->asociado !== null) {
return $this->asociado->pagado($moneda) * $proporcion;
}
@ -49,6 +54,17 @@ class Pie extends Model
return $sum + $cuota->pago->valor($moneda);
}, 0) * $proporcion;
}
protected function proporcion(): float
{
$proporcion = 1;
if (count($this->asociados()) > 0) {
$proporcion = $this->valor / ((($this->asociado) ? $this->asociado->valor : $this->valor) + array_reduce($this->asociados(), function(float $sum, Pie $pie) {
return $sum + $pie->valor;
}, 0));
}
return $proporcion;
}
public ?array $asociados;
public function asociados(): array
{