diff --git a/app/resources/routes/api/contabilidad/movimientos.php b/app/resources/routes/api/contabilidad/movimientos.php index 2500465..397b528 100644 --- a/app/resources/routes/api/contabilidad/movimientos.php +++ b/app/resources/routes/api/contabilidad/movimientos.php @@ -9,4 +9,5 @@ $app->group('/movimientos', function($app) { }); $app->group('/movimiento/{movimiento_id}', function($app) { $app->post('/detalles[/]', [Movimientos::class, 'detalles']); + $app->delete('[/]', [Movimientos::class, 'remove']); }); diff --git a/app/resources/views/contabilidad/movimientos.blade.php b/app/resources/views/contabilidad/movimientos.blade.php index 0e70110..2d204f1 100644 --- a/app/resources/views/contabilidad/movimientos.blade.php +++ b/app/resources/views/contabilidad/movimientos.blade.php @@ -50,7 +50,7 @@
- +
@@ -71,72 +71,7 @@
Sigla
- + @include('contabilidad.movimientos.edit_modal') @endsection @include('layout.body.scripts.datatables') @@ -158,557 +93,29 @@ @endpush @push('page_scripts') + @include('contabilidad.movimientos.scripts.event_handler') + @include('contabilidad.movimientos.scripts.loading_handler') + @include('contabilidad.movimientos.scripts.control_form') + @include('contabilidad.movimientos.scripts.movimientos_table') + @include('contabilidad.movimientos.scripts.edit_modal') + @include('contabilidad.movimientos.scripts.edit_form') + @include('contabilidad.movimientos.scripts.movimientos_handler') + @include('contabilidad.movimientos.scripts.results_handler') diff --git a/app/resources/views/contabilidad/movimientos/scripts/edit_form.blade.php b/app/resources/views/contabilidad/movimientos/scripts/edit_form.blade.php new file mode 100644 index 0000000..1a4894d --- /dev/null +++ b/app/resources/views/contabilidad/movimientos/scripts/edit_form.blade.php @@ -0,0 +1,98 @@ + diff --git a/app/resources/views/contabilidad/movimientos/scripts/edit_modal.blade.php b/app/resources/views/contabilidad/movimientos/scripts/edit_modal.blade.php new file mode 100644 index 0000000..2661d78 --- /dev/null +++ b/app/resources/views/contabilidad/movimientos/scripts/edit_modal.blade.php @@ -0,0 +1,74 @@ + diff --git a/app/resources/views/contabilidad/movimientos/scripts/event_handler.blade.php b/app/resources/views/contabilidad/movimientos/scripts/event_handler.blade.php new file mode 100644 index 0000000..cf87ca2 --- /dev/null +++ b/app/resources/views/contabilidad/movimientos/scripts/event_handler.blade.php @@ -0,0 +1,54 @@ + diff --git a/app/resources/views/contabilidad/movimientos/scripts/loading_handler.blade.php b/app/resources/views/contabilidad/movimientos/scripts/loading_handler.blade.php new file mode 100644 index 0000000..a58aa82 --- /dev/null +++ b/app/resources/views/contabilidad/movimientos/scripts/loading_handler.blade.php @@ -0,0 +1,16 @@ + diff --git a/app/resources/views/contabilidad/movimientos/scripts/movimientos_handler.blade.php b/app/resources/views/contabilidad/movimientos/scripts/movimientos_handler.blade.php new file mode 100644 index 0000000..273f31c --- /dev/null +++ b/app/resources/views/contabilidad/movimientos/scripts/movimientos_handler.blade.php @@ -0,0 +1,86 @@ + diff --git a/app/resources/views/contabilidad/movimientos/scripts/movimientos_table.blade.php b/app/resources/views/contabilidad/movimientos/scripts/movimientos_table.blade.php new file mode 100644 index 0000000..cd14817 --- /dev/null +++ b/app/resources/views/contabilidad/movimientos/scripts/movimientos_table.blade.php @@ -0,0 +1,228 @@ + diff --git a/app/resources/views/contabilidad/movimientos/scripts/results_handler.blade.php b/app/resources/views/contabilidad/movimientos/scripts/results_handler.blade.php new file mode 100644 index 0000000..df7d63a --- /dev/null +++ b/app/resources/views/contabilidad/movimientos/scripts/results_handler.blade.php @@ -0,0 +1,37 @@ + diff --git a/app/src/Controller/API/Contabilidad/Movimientos.php b/app/src/Controller/API/Contabilidad/Movimientos.php index 2cda653..6a65d1f 100644 --- a/app/src/Controller/API/Contabilidad/Movimientos.php +++ b/app/src/Controller/API/Contabilidad/Movimientos.php @@ -16,7 +16,8 @@ class Movimientos extends Ideal\Controller public function detalles(ServerRequestInterface $request, ResponseInterface $response, Service\Contabilidad\Movimiento $movimientoService, - Repository\Contabilidad\CentroCosto $centroCostoRepository, int $movimiento_id): ResponseInterface + Repository\Contabilidad\CentroCosto $centroCostoRepository, + int $movimiento_id): ResponseInterface { $body = $request->getParsedBody(); $output = [ @@ -50,7 +51,8 @@ class Movimientos extends Ideal\Controller } catch (EmptyResult) {} return $this->withJson($response, $output); } - public function __invoke(ServerRequestInterface $request, ResponseInterface $response, Service\Contabilidad\Movimiento $movimientoService): ResponseInterface + public function __invoke(ServerRequestInterface $request, ResponseInterface $response, + Service\Contabilidad\Movimiento $movimientoService): ResponseInterface { $output = [ 'movimientos' => [] @@ -92,6 +94,38 @@ class Movimientos extends Ideal\Controller } return $this->withJson($response, $output); } + public function edit(ServerRequestInterface $request, ResponseInterface $response, + Service\Contabilidad\Movimiento $movimientoService): ResponseInterface + { + $body = $request->getParsedBody(); + $output = [ + 'input' => $body, + 'status' => false, + 'movimiento' => null + ]; + try { + $movimiento = $movimientoService->getById($body['id']); + $output['movimiento'] = $movimientoService->edit($movimiento, $body); + $output['status'] = true; + } catch (EmptyResult) {} + return $this->withJson($response, $output); + } + public function remove(ServerRequestInterface $request, ResponseInterface $response, + Service\Contabilidad\Movimiento $movimientoService, int $movimiento_id): ResponseInterface + { + $output = [ + 'movimiento_id' => $movimiento_id, + 'movimiento' => null, + 'status' => false + ]; + try { + $movimiento = $movimientoService->getById($movimiento_id); + $movimientoService->remove($movimiento); + $output['movimiento'] = $movimiento; + $output['status'] = true; + } catch (EmptyResult) {} + return $this->withJson($response, $output); + } protected function movimientosToArray(array $movimientos): array { diff --git a/app/src/Repository/Contabilidad/Movimiento/Detalle.php b/app/src/Repository/Contabilidad/Movimiento/Detalle.php index ba526c2..c7a298a 100644 --- a/app/src/Repository/Contabilidad/Movimiento/Detalle.php +++ b/app/src/Repository/Contabilidad/Movimiento/Detalle.php @@ -45,6 +45,20 @@ class Detalle extends Ideal\Repository { return $this->update($model, ['movimiento_id', 'centro_costo_id', 'rut', 'digito', 'nombres', 'categoria', 'detalle', 'identificador'], $new_data); } + public function filterData(array $data): array + { + $map = [ + 'costo_id' => 'centro_costo_id', + 'nombre' => 'nombres', + ]; + foreach ($map as $source => $dest) { + if (key_exists($source, $data)) { + $data[$dest] = $data[$source]; + unset($data[$source]); + } + } + return $data; + } public function fetchByMovimiento(int $movimiento_id): Model\Contabilidad\Movimiento\Detalle { diff --git a/app/src/Service/Contabilidad/Movimiento.php b/app/src/Service/Contabilidad/Movimiento.php index 604e14d..ea86519 100644 --- a/app/src/Service/Contabilidad/Movimiento.php +++ b/app/src/Service/Contabilidad/Movimiento.php @@ -62,6 +62,19 @@ class Movimiento extends Service } return $movimiento; } + public function edit(Model\Contabilidad\Movimiento $movimiento, array $data): Model\Contabilidad\Movimiento + { + try { + $detalles = $this->detalleRepository->fetchByMovimiento($movimiento->id); + $mappedData = $this->detalleRepository->filterData($data); + $this->detalleRepository->edit($detalles, $mappedData); + } catch (Implement\Exception\EmptyResult) {} + return $this->process($movimiento); + } + public function remove(Model\Contabilidad\Movimiento $movimiento): void + { + $this->movimientoRepository->remove($movimiento); + } public function process(Model\Contabilidad\Movimiento $movimiento): Model\Contabilidad\Movimiento {