Implemented repository mapper, and venta show

This commit is contained in:
Juan Pablo Vial
2023-08-08 23:53:49 -04:00
parent ef30ae67d2
commit 59825259b6
111 changed files with 2766 additions and 612 deletions

View File

@ -1,6 +1,7 @@
<?php
namespace Incoviba\Model\Venta;
use DateTimeInterface;
use Incoviba\Common\Ideal;
use Incoviba\Model;
@ -15,6 +16,33 @@ class Unidad extends Ideal\Model
public array $precios = [];
public ?Precio $currentPrecio = null;
public function precio(DateTimeInterface $dateTime): Precio
{
if ($dateTime > $this->currentPrecio->current->fecha) {
return $this->currentPrecio;
}
$precio = array_reduce(array_filter($this->precios, function(Precio $precio) use ($dateTime) {
return $dateTime > $precio->current->fecha;
}), function(?Precio $max, Precio $precio) {
if ($max === null) {
return $precio;
}
return $max->current->fecha > $precio->current->fecha ? $max : $precio;
});
if ($precio === null) {
$precio = array_reduce(array_filter($this->precios, function(Precio $precio) use ($dateTime) {
return $dateTime < $precio->current->fecha;
}), function(?Precio $min, Precio $precio) {
if ($min === null) {
return $precio;
}
return $min->current->fecha < $precio->current->fecha ? $min : $precio;
});
}
return $precio;
}
public function jsonSerialize(): mixed
{
return array_merge(parent::jsonSerialize(), [