Movimientos filtrados y editables

This commit is contained in:
Juan Pablo Vial
2024-05-13 16:54:59 -04:00
parent 71bbe7f2d7
commit a5125aff74
7 changed files with 456 additions and 160 deletions

View File

@ -1,13 +1,14 @@
<?php
namespace Incoviba\Controller\API\Contabilidad;
use DateTimeImmutable;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Incoviba\Common\Ideal;
use Incoviba\Common\Implement\Exception\EmptyResult;
use Incoviba\Controller\API\withJson;
use Incoviba\Repository;
use Incoviba\Service;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class Movimientos extends Ideal\Controller
{
@ -28,7 +29,7 @@ class Movimientos extends Ideal\Controller
];
try {
$movimiento = $movimientoService->getById($movimiento_id);
$output['movimiento'] = $movimiento;
$output['movimiento'] = $this->movimientosToArray([$movimiento])[0];
$data = [];
if (isset($body['centro_id'])) {
$centro = $centroCostoRepository->fetchById($body['centro_id']);
@ -38,6 +39,7 @@ class Movimientos extends Ideal\Controller
$data['detalle'] = $body['detalle'];
}
$movimientoService->setDetalles($movimiento, $data);
$output['movimiento'] = $this->movimientosToArray([$movimientoService->getById($movimiento->id)])[0];
if (isset($body['centro_id'])) {
$output['centro'] = $centro;
}
@ -54,14 +56,7 @@ class Movimientos extends Ideal\Controller
];
try {
$movimientos = $movimientoService->getAll();
$output['movimientos'] = json_decode(json_encode($movimientos), JSON_OBJECT_AS_ARRAY);
foreach ($output['movimientos'] as $i => &$arrayMovimiento) {
$arrayMovimiento['cuenta'] = json_decode(json_encode($movimientos[$i]->cuenta), JSON_OBJECT_AS_ARRAY);
$arrayMovimiento['cuenta']['inmobiliaria'] = json_decode(json_encode($movimientos[$i]->cuenta->inmobiliaria), JSON_OBJECT_AS_ARRAY);
if ($arrayMovimiento['detalles'] !== null) {
$arrayMovimiento['detalles']['centro_costo'] = $movimientos[$i]->getDetalles()->centroCosto;
}
}
$output['movimientos'] = $this->movimientosToArray($movimientos);
} catch (EmptyResult) {}
return $this->withJson($response, $output);
}
@ -75,15 +70,38 @@ class Movimientos extends Ideal\Controller
];
try {
$movimientos = $movimientoService->getAmountStartingFrom($input['from'], $input['amount']);
$output['movimientos'] = json_decode(json_encode($movimientos), JSON_OBJECT_AS_ARRAY);
foreach ($output['movimientos'] as $i => &$arrayMovimiento) {
$arrayMovimiento['cuenta'] = json_decode(json_encode($movimientos[$i]->cuenta), JSON_OBJECT_AS_ARRAY);
$arrayMovimiento['cuenta']['inmobiliaria'] = json_decode(json_encode($movimientos[$i]->cuenta->inmobiliaria), JSON_OBJECT_AS_ARRAY);
if ($arrayMovimiento['detalles'] !== null) {
$arrayMovimiento['detalles']['centro_costo'] = $movimientos[$i]->getDetalles()->centroCosto;
}
$output['movimientos'] = $this->movimientosToArray($movimientos);
} catch (EmptyResult) {}
return $this->withJson($response, $output);
}
public function sociedad(ServerRequestInterface $request, ResponseInterface $response,
Service\Contabilidad\Movimiento $movimientoService): ResponseInterface
{
$input = $request->getParsedBody();
$output = [
'input' => $input,
'movimientos' => []
];
try {
$sociedades_ruts = $input['sociedades_ruts'];
foreach ($sociedades_ruts as $sociedadRut) {
$movimientos = $movimientoService->getAmountBySociedadAndMes($sociedadRut, new DateTimeImmutable($input['mes']), $input['amount'] ?? null);
$output['movimientos'] = array_merge($output['movimientos'], $this->movimientosToArray($movimientos));
}
} catch (EmptyResult) {}
return $this->withJson($response, $output);
}
protected function movimientosToArray(array $movimientos): array
{
$output = json_decode(json_encode($movimientos), JSON_OBJECT_AS_ARRAY);
foreach ($output as $i => &$arrayMovimiento) {
$arrayMovimiento['cuenta'] = json_decode(json_encode($movimientos[$i]->cuenta), JSON_OBJECT_AS_ARRAY);
$arrayMovimiento['cuenta']['inmobiliaria'] = json_decode(json_encode($movimientos[$i]->cuenta->inmobiliaria), JSON_OBJECT_AS_ARRAY);
if ($arrayMovimiento['detalles'] !== null) {
$arrayMovimiento['detalles']['centro_costo'] = $movimientos[$i]->getDetalles()->centroCosto;
}
}
return $output;
}
}