Subir cartolas procesadas
This commit is contained in:
@ -5,10 +5,14 @@ use DateTimeImmutable;
|
||||
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
|
||||
{
|
||||
@ -95,4 +99,60 @@ class Cartolas extends Controller
|
||||
} catch (EmptyResult) {}
|
||||
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
|
||||
{
|
||||
$body = $request->getParsedBody();
|
||||
$files = $request->getUploadedFiles();
|
||||
|
||||
$output = [
|
||||
'input' => $body,
|
||||
'movimientos' => []
|
||||
];
|
||||
if (is_array($files['file'])) {
|
||||
foreach ($files['file'] as $i => $file) {
|
||||
if ($file->getError() !== UPLOAD_ERR_OK) {
|
||||
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);
|
||||
$this->addMovimientos($movimientoService, $cuenta, $movimientos);
|
||||
$output['movimientos'] = array_merge($output['movimientos'], $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);
|
||||
$this->addMovimientos($movimientoService, $cuenta, $movimientos);
|
||||
$output['movimientos'] = $movimientos;
|
||||
} catch (EmptyResult) {}
|
||||
}
|
||||
return $this->withJson($response, $output);
|
||||
}
|
||||
|
||||
protected function addMovimientos(Service\Contabilidad\Movimiento $movimientoService, Inmobiliaria\Cuenta $cuenta, array $movimientos): void
|
||||
{
|
||||
foreach ($movimientos as $dataMovimiento) {
|
||||
$dataMovimiento['cuenta_id'] = $cuenta->id;
|
||||
$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;
|
||||
}
|
||||
$movimientoService->add($dataMovimiento);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,29 +23,30 @@ class Movimientos extends Ideal\Controller
|
||||
'movimiento_id' => $movimiento_id,
|
||||
'input' => $body,
|
||||
'status' => false,
|
||||
'movimiento' => null,
|
||||
'centro' => null,
|
||||
'detalle' => ''
|
||||
'movimiento' => null
|
||||
];
|
||||
try {
|
||||
$movimiento = $movimientoService->getById($movimiento_id);
|
||||
$output['movimiento'] = $this->movimientosToArray([$movimiento])[0];
|
||||
$data = [];
|
||||
if (isset($body['centro_id'])) {
|
||||
$centro = $centroCostoRepository->fetchById($body['centro_id']);
|
||||
$data['centro_costo_id'] = $centro->id;
|
||||
}
|
||||
if (isset($body['detalle'])) {
|
||||
$data['detalle'] = $body['detalle'];
|
||||
$fieldMap = [
|
||||
'centro_costo_id',
|
||||
'categoria',
|
||||
'detalle',
|
||||
'rut',
|
||||
'digito',
|
||||
'nombres',
|
||||
'identificador'
|
||||
];
|
||||
foreach ($fieldMap as $field) {
|
||||
if (key_exists($field, $body)) {
|
||||
$data[$field] = $body[$field];
|
||||
}
|
||||
}
|
||||
|
||||
$movimientoService->setDetalles($movimiento, $data);
|
||||
$output['movimiento'] = $this->movimientosToArray([$movimientoService->getById($movimiento->id)])[0];
|
||||
if (isset($body['centro_id'])) {
|
||||
$output['centro'] = $centro;
|
||||
}
|
||||
if (isset($body['detalle'])) {
|
||||
$output['detalle'] = $body['detalle'];
|
||||
}
|
||||
$output['status'] = true;
|
||||
} catch (EmptyResult) {}
|
||||
return $this->withJson($response, $output);
|
||||
}
|
||||
|
29
app/src/Controller/API/Contabilidad/Tesoreria.php
Normal file
29
app/src/Controller/API/Contabilidad/Tesoreria.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
namespace Incoviba\Controller\API\Contabilidad;
|
||||
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Incoviba\Controller\API\withJson;
|
||||
use Incoviba\Service;
|
||||
|
||||
class Tesoreria
|
||||
{
|
||||
use withJson;
|
||||
|
||||
public function import(ServerRequestInterface $request, ResponseInterface $response, LoggerInterface $logger,
|
||||
Service\Contabilidad\Informe\Tesoreria $tesoreriaService): ResponseInterface
|
||||
{
|
||||
$files = $request->getUploadedFiles();
|
||||
$output = [];
|
||||
foreach ($files['file'] as $file) {
|
||||
if ($file->getError() !== UPLOAD_ERR_OK) {
|
||||
continue;
|
||||
}
|
||||
$data = $tesoreriaService->getInput()->loadFromExcel($file);
|
||||
$tesoreriaService->getInput()->load($data);
|
||||
$output['informes'] []= $data;
|
||||
}
|
||||
return $this->withJson($response, $output);
|
||||
}
|
||||
}
|
@ -34,6 +34,20 @@ class Contabilidad extends Controller
|
||||
$centrosCostos = $centroCostoRepository->fetchAll();
|
||||
return $view->render($response, 'contabilidad.cartolas.diaria', compact('inmobiliarias', 'centrosCostos'));
|
||||
}
|
||||
public function importar(ServerRequestInterface $request, ResponseInterface $response, View $view,
|
||||
Repository\Inmobiliaria $inmobiliariaRepository,
|
||||
Repository\Contabilidad\Banco $bancoRepository): ResponseInterface
|
||||
{
|
||||
$inmobiliarias = [];
|
||||
try {
|
||||
$inmobiliarias = $inmobiliariaRepository->fetchAll('razon');
|
||||
} catch (EmptyResult) {}
|
||||
$bancos = [];
|
||||
try {
|
||||
$bancos = $bancoRepository->fetchAll('nombre');
|
||||
} catch (EmptyResult) {}
|
||||
return $view->render($response, 'contabilidad.cartolas.import', compact('inmobiliarias', 'bancos'));
|
||||
}
|
||||
public function depositos(ServerRequestInterface $request, ResponseInterface $response, View $view,
|
||||
Service\Redis $redisService,
|
||||
Repository\Inmobiliaria $inmobiliariaRepository,
|
||||
@ -68,7 +82,7 @@ class Contabilidad extends Controller
|
||||
string $fecha = 'today'): ResponseInterface
|
||||
{
|
||||
$fecha = new DateTimeImmutable($fecha);
|
||||
$anterior = $contabilidadService->getAnterior($fecha);
|
||||
$anterior = $contabilidadService->getOutput()->getAnterior($fecha);
|
||||
$yesterday = new DateTimeImmutable('yesterday');
|
||||
$siguiente = null;
|
||||
if ($yesterday > $fecha) {
|
||||
@ -77,16 +91,16 @@ class Contabilidad extends Controller
|
||||
$siguiente = $fecha->add(new DateInterval('P3D'));
|
||||
}
|
||||
}
|
||||
$informes = $contabilidadService->build($fecha);
|
||||
$informes = $contabilidadService->getOutput()->build($fecha);
|
||||
$filename = "Informe de Tesorería {$fecha->format('d.m.Y')}";
|
||||
return $view->render($response, 'contabilidad.informes.tesoreria', compact('fecha', 'anterior', 'siguiente', 'informes', 'filename'));
|
||||
}
|
||||
public function semanal(ServerRequestInterface $request, ResponseInterface $response, View $view,
|
||||
/*public function semanal(ServerRequestInterface $request, ResponseInterface $response, View $view,
|
||||
Service\Contabilidad\Informe\Semanal $semanalService,
|
||||
string $fecha = 'today'): ResponseInterface
|
||||
{
|
||||
|
||||
}
|
||||
}*/
|
||||
public function cuadratura(ServerRequestInterface $request, ResponseInterface $response, View $view,
|
||||
Repository\Inmobiliaria $inmobiliariaRepository): ResponseInterface
|
||||
{
|
||||
|
@ -13,7 +13,7 @@ class Informes extends Ideal\Controller
|
||||
{
|
||||
$fecha = new DateTimeImmutable($fecha);
|
||||
|
||||
$tesoreriaService->buildInforme($fecha, $tesoreriaService->build($fecha));
|
||||
$tesoreriaService->getOutput()->buildInforme($fecha, $tesoreriaService->getOutput()->build($fecha));
|
||||
$response->getBody()->write(file_get_contents('php://output'));
|
||||
return $response;
|
||||
}
|
||||
|
14
app/src/Controller/Contabilidad/Tesoreria.php
Normal file
14
app/src/Controller/Contabilidad/Tesoreria.php
Normal file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
namespace Incoviba\Controller\Contabilidad;
|
||||
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Incoviba\Common\Alias\View;
|
||||
|
||||
class Tesoreria
|
||||
{
|
||||
public function import(ServerRequestInterface $request, ResponseInterface $response, View $view): ResponseInterface
|
||||
{
|
||||
return $view->render($response, 'contabilidad.tesoreria.import');
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user