79 lines
2.3 KiB
PHP
79 lines
2.3 KiB
PHP
<?php
|
|
namespace Incoviba\Model\Venta;
|
|
|
|
use JsonSerializable;
|
|
|
|
class FormaPago implements JsonSerializable
|
|
{
|
|
public ?Pie $pie = null;
|
|
public ?Escritura $escritura = null;
|
|
public ?BonoPie $bonoPie = null;
|
|
public ?Subsidio $subsidio = null;
|
|
public ?Credito $credito = null;
|
|
public ?Pago $devolucion = null;
|
|
|
|
public function anticipo(string $moneda = Pago::UF): float
|
|
{
|
|
$sum = 0;
|
|
if ($this->pie !== null) {
|
|
$sum += $this->pie->pagado($moneda);
|
|
if (isset($this->pie->reajuste) and $this->pie->reajuste !== null) {
|
|
$sum += $this->pie->reajuste->valor($moneda);
|
|
}
|
|
}
|
|
if ($this->escritura !== null) {
|
|
$sum += $this->escritura->pago->valor($moneda);
|
|
}
|
|
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);
|
|
if (isset($this->bonoPie)) {
|
|
$sum += $this->bonoPie->pago->valor($moneda);
|
|
}
|
|
if (isset($this->subsidio)) {
|
|
$sum += $this->subsidio->ahorro->valor($moneda);
|
|
$sum += $this->subsidio->subsidio->valor($moneda);
|
|
}
|
|
if (isset($this->credito)) {
|
|
$sum += $this->credito->pago->valor($moneda);
|
|
}
|
|
return $sum;
|
|
}
|
|
public function ids(): array
|
|
{
|
|
return [
|
|
'pie_id' => $this->pie?->id,
|
|
'escritura_id' => $this->escritura?->id,
|
|
'bono_pie_id' => $this->bonoPie?->id,
|
|
'credito_id' => $this->credito?->id,
|
|
'subsidio_id' => $this->subsidio?->id,
|
|
'devolucion_id' => $this->devolucion?->id
|
|
];
|
|
}
|
|
|
|
public function jsonSerialize(): mixed
|
|
{
|
|
return [
|
|
'pie' => $this->pie ?? null,
|
|
'escritura' => $this->escritura ?? null,
|
|
'bono_pie' => $this->bonoPie ?? null,
|
|
'subsidio' => $this->subsidio ?? null,
|
|
'credito' => $this->credito ?? null,
|
|
'devolucion' => $this->devolucion ?? null
|
|
];
|
|
}
|
|
}
|