Files
oficial/app/src/Controller/Contabilidad.php

75 lines
3.2 KiB
PHP
Raw Normal View History

2024-02-12 09:52:48 -03:00
<?php
namespace Incoviba\Controller;
2024-02-13 01:16:17 -03:00
use DateTimeImmutable;
use DateInterval;
use Incoviba\Common\Ideal\Controller;
2024-02-12 09:52:48 -03:00
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Incoviba\Common\Alias\View;
use Incoviba\Common\Implement\Exception\{EmptyResult, EmptyRedis};
2024-02-13 12:08:25 -03:00
use Incoviba\Model;
2024-02-12 09:52:48 -03:00
use Incoviba\Repository;
use Incoviba\Service;
2024-02-13 01:16:17 -03:00
class Contabilidad extends Controller
2024-02-12 09:52:48 -03:00
{
use withRedis;
public function diaria(ServerRequestInterface $request, ResponseInterface $response, View $view,
Service\Redis $redisService,
Repository\Inmobiliaria $inmobiliariaRepository): ResponseInterface
{
$redisKey = 'inmobiliarias';
$inmobiliarias = [];
try {
$inmobiliarias = $this->fetchRedis($redisService, $redisKey);
} catch (EmptyRedis) {
try {
2024-02-19 22:39:22 -03:00
$inmobiliarias = $inmobiliariaRepository->fetchAll();
2024-02-12 09:52:48 -03:00
$this->saveRedis($redisService, $redisKey, $inmobiliarias, 30 * 24 * 60 * 60);
} catch (EmptyResult) {}
}
return $view->render($response, 'contabilidad.cartolas.diaria', compact('inmobiliarias'));
}
2024-02-13 01:16:17 -03:00
public function depositos(ServerRequestInterface $request, ResponseInterface $response, View $view,
Service\Redis $redisService,
Repository\Inmobiliaria $inmobiliariaRepository,
Repository\Deposito $dapRepository): ResponseInterface
{
$redisKey = 'inmobiliarias';
$inmobiliarias = [];
try {
$inmobiliarias = $this->fetchRedis($redisService, $redisKey);
} catch (EmptyRedis) {
try {
$inmobiliarias = $inmobiliariaRepository->fetchAll();
2024-02-13 01:16:17 -03:00
$this->saveRedis($redisService, $redisKey, $inmobiliarias, 30 * 24 * 60 * 60);
} catch (EmptyResult) {}
}
$depositos = [];
try {
$depositos = $dapRepository->fetchAll();
} catch (EmptyResult) {}
2024-02-13 12:08:25 -03:00
$fecha = new DateTimeImmutable('today');
$activos = array_filter($depositos, function(Model\Deposito $deposito) use ($fecha) {
return $deposito->termino >= $fecha;
});
$mes = $fecha->sub(new DateInterval('P1M'));
$vencidos = array_filter($depositos, function(Model\Deposito $deposito) use ($fecha, $mes) {
return $deposito->termino < $fecha and $deposito->termino >= $mes;
});
return $view->render($response, 'contabilidad.depositos', compact('inmobiliarias', 'activos', 'vencidos'));
2024-02-13 01:16:17 -03:00
}
public function tesoreria(ServerRequestInterface $request, ResponseInterface $response, View $view,
2024-02-23 22:37:09 -03:00
Service\Contabilidad\Informe\Tesoreria $contabilidadService,
2024-02-13 01:16:17 -03:00
string $fecha = 'today'): ResponseInterface
{
$fecha = new DateTimeImmutable($fecha);
$anterior = $contabilidadService->getAnterior($fecha);
$informes = $contabilidadService->build($fecha);
2024-02-23 22:37:09 -03:00
$filename = "Informe de Tesorería {$fecha->format('d.m.Y')}";
return $view->render($response, 'contabilidad.informes.tesoreria', compact('fecha', 'anterior', 'informes', 'filename'));
2024-02-13 01:16:17 -03:00
}
2024-02-12 09:52:48 -03:00
}