Movimientos filtrados y editables
This commit is contained in:
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -1,15 +1,21 @@
|
||||
<?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;
|
||||
use Incoviba\Common\Alias\View;
|
||||
use Incoviba\Common\Ideal\Controller;
|
||||
use Incoviba\Repository;
|
||||
use Incoviba\Service;
|
||||
|
||||
class Movimientos extends Controller
|
||||
{
|
||||
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, View $view): ResponseInterface
|
||||
public function __invoke(ServerRequestInterface $request, ResponseInterface $response,
|
||||
Repository\Inmobiliaria $inmobiliariaRepository,
|
||||
Repository\Contabilidad\CentroCosto $centroCostoRepository, View $view): ResponseInterface
|
||||
{
|
||||
return $view->render($response, 'contabilidad.movimientos');
|
||||
$sociedades = $inmobiliariaRepository->fetchAll('razon');
|
||||
$centros = $centroCostoRepository->fetchAll('descripcion');
|
||||
return $view->render($response, 'contabilidad.movimientos', compact('sociedades', 'centros'));
|
||||
}
|
||||
}
|
||||
|
@ -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')]);
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,12 @@
|
||||
<?php
|
||||
namespace Incoviba\Service\Contabilidad;
|
||||
|
||||
use DateTimeInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Incoviba\Common\Ideal\Service;
|
||||
use Incoviba\Common\Implement;
|
||||
use Incoviba\Model;
|
||||
use Incoviba\Repository;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class Movimiento extends Service
|
||||
{
|
||||
@ -28,6 +29,10 @@ class Movimiento extends Service
|
||||
{
|
||||
return array_map([$this, 'process'], $this->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 {
|
||||
|
Reference in New Issue
Block a user