FIX: Importar cartolas correctamente.

This commit is contained in:
Juan Pablo Vial
2024-07-18 21:25:10 -04:00
parent a471a1083e
commit b2f1bd5ba0
4 changed files with 101 additions and 47 deletions

View File

@ -2,17 +2,14 @@
namespace Incoviba\Controller\API\Contabilidad;
use DateTimeImmutable;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Incoviba\Common\Ideal\Controller;
use Incoviba\Common\Implement\Exception\EmptyResult;
use Incoviba\Controller\API\withJson;
use Incoviba\Model\Contabilidad\Banco;
use Incoviba\Model\Inmobiliaria;
use Incoviba\Repository;
use Incoviba\Service;
use PhpParser\Node\Stmt\TryCatch;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Log\LoggerInterface;
class Cartolas extends Controller
{
@ -33,7 +30,7 @@ class Cartolas extends Controller
$banco = $bancoRepository->fetchById($body['banco']);
$mes = new DateTimeImmutable($body['mes']);
$file = $request->getUploadedFiles()['file'];
$output['movimientos'] = $cartolaService->process($inmobiliaria, $banco, $mes, $file);
$output['movimientos'] = $cartolaService->process($banco, $file);
} catch (EmptyResult) {}
return $this->withJson($response, $output);
}
@ -100,9 +97,6 @@ class Cartolas extends Controller
return $this->withJson($response, $output);
}
public function importar(ServerRequestInterface $request, ResponseInterface $response,
LoggerInterface $logger,
Repository\Inmobiliaria $inmobiliariaRepository,
Repository\Contabilidad\Banco $bancoRepository,
Repository\Inmobiliaria\Cuenta $cuentaRepository,
Service\Contabilidad\Cartola $cartolaService,
Service\Contabilidad\Movimiento $movimientoService): ResponseInterface
@ -120,22 +114,26 @@ class Cartolas extends Controller
continue;
}
try {
$inmobiliaria = $inmobiliariaRepository->fetchById($body['sociedad_rut'][$i]);
$banco = $bancoRepository->fetchById($body['banco_id'][$i]);
$movimientos = $cartolaService->process($inmobiliaria, $banco, new DateTimeImmutable($body['mes'][$i]), $file);
$cuenta = $cuentaRepository->fetchByInmobiliariaAndBanco($inmobiliaria->rut, $banco->id);
$cuenta = $cuentaRepository->fetchById($body['cuenta_id'][$i]);
$movimientos = $cartolaService->process($cuenta->banco, $file);
$this->addMovimientos($movimientoService, $cuenta, $movimientos);
$output['movimientos'] = array_merge($output['movimientos'], $movimientos);
$inmobiliaria = $cuenta->inmobiliaria;
$output['movimientos'] = array_merge($output['movimientos'], array_map(function($movimiento) use ($inmobiliaria) {
$movimiento['sociedad'] = $inmobiliaria;
return $movimiento;
}, $movimientos));
} catch (EmptyResult) {}
}
} else {
try {
$inmobiliaria = $inmobiliariaRepository->fetchById($body['sociedad_rut']);
$banco = $bancoRepository->fetchById($body['banco_id']);
$movimientos = $cartolaService->process($inmobiliaria, $banco, new DateTimeImmutable($body['mes']), $files['file']);
$cuenta = $cuentaRepository->fetchByInmobiliariaAndBanco($inmobiliaria->rut, $banco->id);
$cuenta = $cuentaRepository->fetchById($body['cuenta_id']);
$movimientos = $cartolaService->process($cuenta->banco, $files['file']);
$this->addMovimientos($movimientoService, $cuenta, $movimientos);
$output['movimientos'] = $movimientos;
$inmobiliaria = $cuenta->inmobiliaria;
$output['movimientos'] = array_map(function($movimiento) use ($inmobiliaria) {
$movimiento['sociedad'] = $inmobiliaria;
return $movimiento;
}, $movimientos);
} catch (EmptyResult) {}
}
return $this->withJson($response, $output);
@ -145,12 +143,14 @@ class Cartolas extends Controller
{
foreach ($movimientos as $dataMovimiento) {
$dataMovimiento['cuenta_id'] = $cuenta->id;
$dataMovimiento['centro_costo_id'] = $dataMovimiento['centro_costo'];
if (array_key_exists('centro_costo', $dataMovimiento)) {
$dataMovimiento['centro_costo_id'] = $dataMovimiento['centro_costo'];
}
$dataMovimiento['fecha'] = new DateTimeImmutable($dataMovimiento['fecha']);
if (array_key_exists('rut', $dataMovimiento)) {
list($rut, $digito) = explode('-', $dataMovimiento['rut']);
$dataMovimiento['rut'] = preg_replace('/\D+/', '', $rut);
$dataMovimiento['digito'] = $digito;
$dataMovimiento['rut'] = trim(preg_replace('/\D+/', '', $rut));
$dataMovimiento['digito'] = trim($digito);
}
$movimientoService->add($dataMovimiento);
}