Listado de Movimientos

This commit is contained in:
Juan Pablo Vial
2024-04-10 21:18:33 -04:00
parent 91679b164f
commit 8e4b5eaaf8
13 changed files with 256 additions and 9 deletions

View File

@ -47,4 +47,43 @@ class Movimientos extends Ideal\Controller
} catch (EmptyResult) {}
return $this->withJson($response, $output);
}
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, Service\Contabilidad\Movimiento $movimientoService): ResponseInterface
{
$output = [
'movimientos' => []
];
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;
}
}
} catch (EmptyResult) {}
return $this->withJson($response, $output);
}
public function segment(ServerRequestInterface $request, ResponseInterface $response,
Service\Contabilidad\Movimiento $movimientoService): ResponseInterface
{
$input = $request->getParsedBody();
$output = [
'input' => $input,
'movimientos' => []
];
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;
}
}
} catch (EmptyResult) {}
return $this->withJson($response, $output);
}
}

View File

@ -0,0 +1,15 @@
<?php
namespace Incoviba\Controller\Contabilidad;
use Incoviba\Common\Alias\View;
use Incoviba\Common\Ideal\Controller;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class Movimientos extends Controller
{
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, View $view): ResponseInterface
{
return $view->render($response, 'contabilidad.movimientos');
}
}

View File

@ -70,4 +70,12 @@ class Movimiento extends Ideal\Repository
->where('cuenta_id = ? AND fecha = ? AND cargo = ? AND abono = ? AND saldo = ?');
return $this->fetchOne($query, [$cuenta_id, $fecha->format('Y-m-d'), $cargo, $abono, $saldo]);
}
public function fetchAmountStartingFrom(int $start, int $amount): array
{
$query = $this->connection->getQueryBuilder()
->select()
->from($this->getTable())
->limit($amount, $start);
return $this->fetchMany($query);
}
}

View File

@ -16,10 +16,18 @@ class Movimiento extends Service
parent::__construct($logger);
}
public function getAll(null|string|array $ordering = null): array
{
return array_map([$this, 'process'], $this->movimientoRepository->fetchAll($ordering));
}
public function getById(int $movimiento_id): Model\Contabilidad\Movimiento
{
return $this->process($this->movimientoRepository->fetchById($movimiento_id));
}
public function getAmountStartingFrom(int $start, int $amount): array
{
return array_map([$this, 'process'], $this->movimientoRepository->fetchAmountStartingFrom($start, $amount));
}
public function setDetalles(Model\Contabilidad\Movimiento $movimiento, array $data): Model\Contabilidad\Movimiento
{
try {