diff --git a/app/resources/routes/api/contabilidad/movimientos.php b/app/resources/routes/api/contabilidad/movimientos.php index 545dd98..8d00044 100644 --- a/app/resources/routes/api/contabilidad/movimientos.php +++ b/app/resources/routes/api/contabilidad/movimientos.php @@ -1,6 +1,10 @@ group('/movimientos', function($app) { + $app->post('/segment', [Movimientos::class, 'segment']); + $app->get('[/]', Movimientos::class); +}); $app->group('/movimiento/{movimiento_id}', function($app) { $app->post('/detalles', [Movimientos::class, 'detalles']); }); diff --git a/app/resources/routes/contabilidad/movimientos.php b/app/resources/routes/contabilidad/movimientos.php new file mode 100644 index 0000000..6ca2aef --- /dev/null +++ b/app/resources/routes/contabilidad/movimientos.php @@ -0,0 +1,4 @@ +get('/movimientos', Movimientos::class); diff --git a/app/resources/views/contabilidad/movimientos.blade.php b/app/resources/views/contabilidad/movimientos.blade.php new file mode 100644 index 0000000..6b99ea0 --- /dev/null +++ b/app/resources/views/contabilidad/movimientos.blade.php @@ -0,0 +1,160 @@ +@extends('layout.base') + +@section('page_content') +
+

Movimientos Contables

+
+ + + + + + + + + + + + + + + +
SociedadBanco - CuentaFechaISO FechaValorValorCentro de CostoGlosaDetalle
+@endsection + +@include('layout.head.styles.datatables') +@include('layout.head.styles.datatables.searchbuilder') +@include('layout.head.styles.datatables.buttons') + +@include('layout.body.scripts.datatables') +@include('layout.body.scripts.datatables.searchbuilder') +@include('layout.body.scripts.datatables.buttons') + +@push('page_scripts') + +@endpush diff --git a/app/resources/views/layout/body/header/menu/contabilidad.blade.php b/app/resources/views/layout/body/header/menu/contabilidad.blade.php index 3f5233f..fa8c613 100644 --- a/app/resources/views/layout/body/header/menu/contabilidad.blade.php +++ b/app/resources/views/layout/body/header/menu/contabilidad.blade.php @@ -18,5 +18,6 @@ Cartola Diaria Depósitos a Plazo + Movimientos diff --git a/app/resources/views/layout/body/scripts/datatables.blade.php b/app/resources/views/layout/body/scripts/datatables.blade.php index d33c940..36ba125 100644 --- a/app/resources/views/layout/body/scripts/datatables.blade.php +++ b/app/resources/views/layout/body/scripts/datatables.blade.php @@ -1,5 +1,4 @@ @push('page_scripts') - {{----}} - - + + @endpush diff --git a/app/resources/views/layout/body/scripts/datatables/buttons.blade.php b/app/resources/views/layout/body/scripts/datatables/buttons.blade.php index 95b744e..9af8a38 100644 --- a/app/resources/views/layout/body/scripts/datatables/buttons.blade.php +++ b/app/resources/views/layout/body/scripts/datatables/buttons.blade.php @@ -1,9 +1,9 @@ @push('page_scripts') - - - - - + + + + + @endpush diff --git a/app/resources/views/layout/body/scripts/datatables/searchbuilder.blade.php b/app/resources/views/layout/body/scripts/datatables/searchbuilder.blade.php new file mode 100644 index 0000000..abd45e6 --- /dev/null +++ b/app/resources/views/layout/body/scripts/datatables/searchbuilder.blade.php @@ -0,0 +1,5 @@ +@push('page_scripts') + + + +@endpush diff --git a/app/resources/views/layout/head/styles/datatables.blade.php b/app/resources/views/layout/head/styles/datatables.blade.php index f46671d..1d9efd5 100644 --- a/app/resources/views/layout/head/styles/datatables.blade.php +++ b/app/resources/views/layout/head/styles/datatables.blade.php @@ -1,3 +1,3 @@ @push('page_styles') - + @endpush diff --git a/app/resources/views/layout/head/styles/datatables/searchbuilder.blade.php b/app/resources/views/layout/head/styles/datatables/searchbuilder.blade.php new file mode 100644 index 0000000..c7fad86 --- /dev/null +++ b/app/resources/views/layout/head/styles/datatables/searchbuilder.blade.php @@ -0,0 +1,4 @@ +@push('page_styles') + + +@endpush diff --git a/app/src/Controller/API/Contabilidad/Movimientos.php b/app/src/Controller/API/Contabilidad/Movimientos.php index f1cf7d6..a6fc07c 100644 --- a/app/src/Controller/API/Contabilidad/Movimientos.php +++ b/app/src/Controller/API/Contabilidad/Movimientos.php @@ -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); + } } diff --git a/app/src/Controller/Contabilidad/Movimientos.php b/app/src/Controller/Contabilidad/Movimientos.php new file mode 100644 index 0000000..fe1cdc1 --- /dev/null +++ b/app/src/Controller/Contabilidad/Movimientos.php @@ -0,0 +1,15 @@ +render($response, 'contabilidad.movimientos'); + } +} diff --git a/app/src/Repository/Contabilidad/Movimiento.php b/app/src/Repository/Contabilidad/Movimiento.php index c5e6bf3..536feb2 100644 --- a/app/src/Repository/Contabilidad/Movimiento.php +++ b/app/src/Repository/Contabilidad/Movimiento.php @@ -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); + } } diff --git a/app/src/Service/Contabilidad/Movimiento.php b/app/src/Service/Contabilidad/Movimiento.php index d1f1ca3..4b2bd86 100644 --- a/app/src/Service/Contabilidad/Movimiento.php +++ b/app/src/Service/Contabilidad/Movimiento.php @@ -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 {