FIX: Si no conecta con Nubox solo se reajusta el terreno.

This commit is contained in:
Juan Pablo Vial
2024-11-20 20:49:05 -03:00
parent 54f3b95b88
commit 28036fdd05
3 changed files with 53 additions and 10 deletions

View File

@ -69,7 +69,18 @@ return [
$container->get(Psr\Log\LoggerInterface::class),
$container->get(Incoviba\Repository\Contabilidad\Nubox::class),
$container->get(Incoviba\Service\Redis::class),
new GuzzleHttp\Client(),
new GuzzleHttp\Client([
'defaults' => [
'config' => [
'curl' => [
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_3
],
'verify' => false
]
],
]),
$container->get(Psr\Http\Message\RequestFactoryInterface::class),
$container->get('nubox')->get('url'));
},

View File

@ -3,10 +3,12 @@ namespace Incoviba\Service\Contabilidad;
use DateTimeInterface;
use DateTimeImmutable;
use DateMalformedStringException;
use Incoviba\Common\Ideal;
use Incoviba\Common\Implement\Exception;
use Incoviba\Repository;
use Incoviba\Service;
use Psr\Http\Client\ClientExceptionInterface;
use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestFactoryInterface;
use Psr\Http\Message\ResponseInterface;
@ -81,6 +83,13 @@ class Nubox extends Ideal\Service
return $this;
}
/**
* @param int $inmobiliaria_rut
* @return array
* @throws ClientExceptionInterface
* @throws Exception\HttpResponse
* @throws DateMalformedStringException
*/
public function getCuentas(int $inmobiliaria_rut): array
{
$redisKey = "nubox:cuentas:{$inmobiliaria_rut}";
@ -98,6 +107,13 @@ class Nubox extends Ideal\Service
return $cuentas;
}
}
/**
* @throws DateMalformedStringException
* @throws ClientExceptionInterface
* @throws Exception\HttpResponse
* @throws Exception\EmptyResult
*/
public function getCuenta(int $inmobiliaria_rut, string $cuentaNombre): string
{
$cuentas = $this->getCuentas($inmobiliaria_rut);
@ -109,6 +125,11 @@ class Nubox extends Ideal\Service
}
return array_values($validas)[0]['codigo'];
}
/**
* @throws Exception\HttpResponse
* @throws ClientExceptionInterface
*/
public function getLibroMayor(int $inmobiliaria_rut, DateTimeInterface $from, DateTimeInterface $to): array
{
$inmobiliaria = $this->nuboxRepository->fetchByInmobiliaria($inmobiliaria_rut);
@ -153,6 +174,12 @@ class Nubox extends Ideal\Service
$response = $this->send($uri, $inmobiliaria_rut);
return json_decode($response->getBody()->getContents(), JSON_OBJECT_AS_ARRAY);
}
/**
* @throws DateMalformedStringException
* @throws Exception\HttpResponse
* @throws ClientExceptionInterface
*/
public function getMesCuenta(int $inmobiliaria_rut, string $cuenta, DateTimeInterface $mes): array
{
$inmobiliaria = $this->nuboxRepository->fetchByInmobiliaria($inmobiliaria_rut);
@ -200,6 +227,10 @@ class Nubox extends Ideal\Service
return $content;
}
/**
* @throws Exception\HttpResponse
* @throws ClientExceptionInterface
*/
private function send(string $uri, int $inmobiliaria_rut, string $method = 'GET', ?StreamInterface $body = null): ResponseInterface
{
$request = $this->requestFactory

View File

@ -4,9 +4,7 @@ namespace Incoviba\Service\Proyecto;
use Exception;
use DateTimeImmutable;
use DateInterval;
use Incoviba\Common\Implement\Exception\EmptyResponse;
use Incoviba\Common\Implement\Exception\EmptyResult;
use Incoviba\Common\Implement\Exception\HttpResponse;
use Psr\Http\Client\ClientExceptionInterface;
use Psr\Log\LoggerInterface;
use Incoviba\Common\Ideal;
use Incoviba\Common\Implement;
@ -38,7 +36,7 @@ class Terreno extends Ideal\Service
return $proyecto->terreno;
}
try {
return $this->getValorContable($proyecto, $lastDecember);
return $this->getValorContable($proyecto, $lastDecember->add(new DateInterval('P1D')));
} catch (Implement\Exception\EmptyResponse) {}
if ($proyecto->terreno->fecha === null) {
return null;
@ -52,15 +50,18 @@ class Terreno extends Ideal\Service
}
/**
* @throws EmptyResponse
* @throws HttpResponse
* @throws EmptyResult
* @throws Implement\Exception\EmptyResponse
* @throws Implement\Exception\EmptyResult
* @throws Exception
*/
protected function getValorContable(Model\Proyecto $proyecto, DateTimeImmutable $lastDecember): Model\Proyecto\Terreno
{
$cuentaNubox = $this->nuboxService->getCuenta($proyecto->inmobiliaria()->rut, 'Terrenos');
$movimientos = $this->nuboxService->getMesCuenta($proyecto->inmobiliaria()->rut, $cuentaNubox, $lastDecember);
try {
$cuentaNubox = $this->nuboxService->getCuenta($proyecto->inmobiliaria()->rut, 'Terrenos');
$movimientos = $this->nuboxService->getMesCuenta($proyecto->inmobiliaria()->rut, $cuentaNubox, $lastDecember);
} catch (Implement\Exception\HttpResponse | ClientExceptionInterface $exception) {
throw new Implement\Exception\EmptyResponse("No existen cuentas para este proyecto para la fecha {$lastDecember->format('d-m-Y')}", $exception);
}
if (count($movimientos) === 0 or $movimientos[0]['Saldo'] === 0.0) {
throw new Implement\Exception\EmptyResponse("No hay movimientos para este proyecto para la fecha {$lastDecember->format('d-m-Y')}");
}