diff --git a/app/resources/routes/api/contabilidad/movimientos.php b/app/resources/routes/api/contabilidad/movimientos.php
index 8d00044..0e85222 100644
--- a/app/resources/routes/api/contabilidad/movimientos.php
+++ b/app/resources/routes/api/contabilidad/movimientos.php
@@ -2,6 +2,7 @@
use Incoviba\Controller\API\Contabilidad\Movimientos;
$app->group('/movimientos', function($app) {
+ $app->post('/sociedad/mes', [Movimientos::class, 'sociedad']);
$app->post('/segment', [Movimientos::class, 'segment']);
$app->get('[/]', Movimientos::class);
});
diff --git a/app/resources/views/contabilidad/movimientos.blade.php b/app/resources/views/contabilidad/movimientos.blade.php
index 6b99ea0..2d83c35 100644
--- a/app/resources/views/contabilidad/movimientos.blade.php
+++ b/app/resources/views/contabilidad/movimientos.blade.php
@@ -1,160 +1,389 @@
@extends('layout.base')
-@section('page_content')
-
-
-
-
-
-
- Sociedad |
- Banco - Cuenta |
- Fecha |
- ISO Fecha |
- Valor |
- Valor |
- Centro de Costo |
- Glosa |
- Detalle |
-
-
-
-
-@endsection
-
@include('layout.head.styles.datatables')
@include('layout.head.styles.datatables.searchbuilder')
@include('layout.head.styles.datatables.buttons')
+@push('page_styles')
+
+@endpush
+
+@section('page_content')
+
+
+
+
+
+ Sigla |
+ Banco |
+ Cuenta |
+ Fecha |
+ ISO Fecha |
+ Mes |
+ Año |
+ Valor |
+ Valor |
+ Centro de Costo |
+ Glosa |
+ Detalle |
+ Editar |
+
+
+
+
+
+
+@endsection
+
@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/scripts.blade.php b/app/resources/views/layout/body/scripts.blade.php
index 64de786..2522dfc 100644
--- a/app/resources/views/layout/body/scripts.blade.php
+++ b/app/resources/views/layout/body/scripts.blade.php
@@ -21,6 +21,28 @@
console.error(error)
})
}
+ const datatables_defaults = {
+ language: {
+ emptyTable: 'No hay datos disponibles',
+ info: 'Mostrando _START_ a _END_ de _TOTAL_ registros',
+ infoEmpty: 'Mostrando desde 0 a 0 de 0 registros',
+ infoFiltered: '(filtrado de _MAX_ registros totales)',
+ lengthMenu: 'Mostrar _MENU_ registros',
+ loadingRecords: 'Cargando...',
+ search: 'Buscar:',
+ zeroRecords: 'No se encontraron registros',
+ paginate: {
+ first: 'Primero',
+ last: 'Último',
+ next: 'Siguiente',
+ previous: 'Anterior',
+ },
+ aria: {
+ orderable: 'Ordenar por esta columna',
+ orderableReverse: 'Ordenar por esta columna en orden inverso',
+ }
+ }
+ }
const calendar_date_options = {
type: 'date',
firstDayOfWeek: 1,
@@ -28,9 +50,12 @@
monthFirst: false,
text: {
days: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
+ dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sab'],
+ dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
months: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
monthsShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
- today: 'Hoy'
+ today: 'Hoy',
+ now: 'Ahora',
},
formatter: {
date: 'DD-MM-YYYY'
diff --git a/app/src/Controller/API/Contabilidad/Movimientos.php b/app/src/Controller/API/Contabilidad/Movimientos.php
index a6fc07c..3daeb2d 100644
--- a/app/src/Controller/API/Contabilidad/Movimientos.php
+++ b/app/src/Controller/API/Contabilidad/Movimientos.php
@@ -1,13 +1,14 @@
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;
+ }
}
diff --git a/app/src/Controller/Contabilidad/Movimientos.php b/app/src/Controller/Contabilidad/Movimientos.php
index fe1cdc1..bd247bd 100644
--- a/app/src/Controller/Contabilidad/Movimientos.php
+++ b/app/src/Controller/Contabilidad/Movimientos.php
@@ -1,15 +1,21 @@
render($response, 'contabilidad.movimientos');
+ $sociedades = $inmobiliariaRepository->fetchAll('razon');
+ $centros = $centroCostoRepository->fetchAll('descripcion');
+ return $view->render($response, 'contabilidad.movimientos', compact('sociedades', 'centros'));
}
}
diff --git a/app/src/Repository/Contabilidad/Movimiento.php b/app/src/Repository/Contabilidad/Movimiento.php
index 536feb2..4f36d3c 100644
--- a/app/src/Repository/Contabilidad/Movimiento.php
+++ b/app/src/Repository/Contabilidad/Movimiento.php
@@ -78,4 +78,16 @@ class Movimiento extends Ideal\Repository
->limit($amount, $start);
return $this->fetchMany($query);
}
+ public function fetchAmountBySociedadAndMes(int $sociedad_rut, DateTimeInterface $mes, ?int $amount): array
+ {
+ $query = $this->connection->getQueryBuilder()
+ ->select('a.*')
+ ->from("{$this->getTable()} a")
+ ->joined('JOIN cuenta b ON a.cuenta_id = b.id')
+ ->where('b.inmobiliaria = ? AND a.fecha BETWEEN ? AND ?');
+ if ($amount !== null) {
+ $query->limit($amount);
+ }
+ return $this->fetchMany($query, [$sociedad_rut, $mes->format('Y-m-01'), $mes->format('Y-m-t')]);
+ }
}
diff --git a/app/src/Service/Contabilidad/Movimiento.php b/app/src/Service/Contabilidad/Movimiento.php
index 4b2bd86..dc18085 100644
--- a/app/src/Service/Contabilidad/Movimiento.php
+++ b/app/src/Service/Contabilidad/Movimiento.php
@@ -1,11 +1,12 @@
movimientoRepository->fetchAmountStartingFrom($start, $amount));
}
+ public function getAmountBySociedadAndMes(int $sociedad_rut, DateTimeInterface $mes, ?int $amount): array
+ {
+ return array_map([$this, 'process'], $this->movimientoRepository->fetchAmountBySociedadAndMes($sociedad_rut, $mes, $amount));
+ }
public function setDetalles(Model\Contabilidad\Movimiento $movimiento, array $data): Model\Contabilidad\Movimiento
{
try {