Facturacion y Terreno

This commit is contained in:
Juan Pablo Vial
2024-04-18 20:30:26 -04:00
parent a33dd341cd
commit 9388dc17fc
6 changed files with 583 additions and 152 deletions

View File

@ -66,7 +66,11 @@ class Nubox extends Ideal\Service
{
if (!isset($this->sistemas[$inmobiliaria_rut])) {
$redisKey = "nubox:{$inmobiliaria_rut}";
$this->sistemas[$inmobiliaria_rut] = json_decode($this->redisService->get($redisKey));
try {
$this->sistemas[$inmobiliaria_rut] = json_decode($this->redisService->get($redisKey));
} catch (Exception\EmptyRedis) {
$this->getToken($inmobiliaria_rut);
}
}
return $this->sistemas[$inmobiliaria_rut];
}
@ -80,6 +84,34 @@ class Nubox extends Ideal\Service
return $this;
}
public function getCuentas(int $inmobiliaria_rut): array
{
$redisKey = "nubox:cuentas:{$inmobiliaria_rut}";
try {
return json_decode($this->redisService->get($redisKey));
} catch (Exception\EmptyRedis) {
$today = new DateTimeImmutable();
$libro = $this->getLibroMayor($inmobiliaria_rut, new DateTimeImmutable($today->format('Y-m-1')), new DateTimeImmutable($today->format('Y-m-t')));
$cuentas = array_map(function($cuenta) {
$full = $cuenta['Cuenta'];
$space = strpos($full, ' ');
return ['codigo' => substr($full, 0, $space), 'nombre' => substr($full, $space + 1)];
}, $libro);
$this->redisService->set($redisKey, json_encode($cuentas));
return $cuentas;
}
}
public function getCuenta(int $inmobiliaria_rut, string $cuentaNombre): string
{
$cuentas = $this->getCuentas($inmobiliaria_rut);
$validas = array_filter($cuentas, function($cuenta) use ($cuentaNombre) {
return strtolower($cuenta->nombre) === strtolower($cuentaNombre);
});
if (count($validas) === 0) {
throw new Exception\EmptyResult('Cuenta no encontrada');
}
return array_values($validas)[0]->codigo;
}
public function getLibroMayor(int $inmobiliaria_rut, DateTimeInterface $from, DateTimeInterface $to): array
{
$inmobiliaria = $this->nuboxRepository->fetchByInmobiliaria($inmobiliaria_rut);
@ -131,7 +163,7 @@ class Nubox extends Ideal\Service
}
return json_decode($response->getBody()->getContents(), JSON_OBJECT_AS_ARRAY);
}
public function getSaldoCuenta(int $inmobiliaria_rut, string $cuenta, DateTimeInterface $mes, bool $acumuladoAnual = false): array
public function getMesCuenta(int $inmobiliaria_rut, string $cuenta, DateTimeInterface $mes): array
{
$inmobiliaria = $this->nuboxRepository->fetchByInmobiliaria($inmobiliaria_rut);
$from = new DateTimeImmutable($mes->format('Y-m-1'));