Restructura contabilidad

This commit is contained in:
Juan Pablo Vial
2024-03-26 09:38:20 -03:00
parent 4b3397dd63
commit 5f56022109
57 changed files with 311 additions and 291 deletions

View File

@ -6,5 +6,5 @@ use Incoviba\Model;
interface Exporter interface Exporter
{ {
public function export(Model\Inmobiliaria $inmobiliaria, Model\Banco $banco, DateTimeInterface $mes, array $movimientos): string; public function export(Model\Inmobiliaria $inmobiliaria, Model\Contabilidad\Banco $banco, DateTimeInterface $mes, array $movimientos): string;
} }

View File

@ -1,5 +1,6 @@
<?php <?php
use Incoviba\Controller\API\CentrosCostos;
use Incoviba\Controller\API\Contabilidad\CentrosCostos;
$app->group('/centros_costos', function($app) { $app->group('/centros_costos', function($app) {
$app->post('/add[/]', [CentrosCostos::class, 'add']); $app->post('/add[/]', [CentrosCostos::class, 'add']);

View File

@ -1,5 +1,6 @@
<?php <?php
use Incoviba\Controller\API\Nubox;
use Incoviba\Controller\API\Contabilidad\Nubox;
$app->group('/nubox/{inmobiliaria_rut}', function($app) { $app->group('/nubox/{inmobiliaria_rut}', function($app) {
$app->get('/token[/]', [Nubox::class, 'token']); $app->get('/token[/]', [Nubox::class, 'token']);

View File

@ -1,5 +1,6 @@
<?php <?php
use Incoviba\Controller\CentrosCostos;
use Incoviba\Controller\Contabilidad\CentrosCostos;
$app->group('/centros_costos', function($app) { $app->group('/centros_costos', function($app) {
$app->get('/asignar[/]', [CentrosCostos::class, 'asignar']); $app->get('/asignar[/]', [CentrosCostos::class, 'asignar']);

View File

@ -14,9 +14,10 @@
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="default text">Inmobiliaria</div> <div class="default text">Inmobiliaria</div>
<div class="menu"> <div class="menu">
@foreach ($inmobiliarias as $inmobiliaria) @foreach ($inmobiliarias as $inmobiliaria)
<div class="item" data-value="{{$inmobiliaria->rut}}">{{$inmobiliaria->razon}}</div> <div class="item"
@endforeach data-value="{{$inmobiliaria->rut}}">{{$inmobiliaria->razon}}</div>
@endforeach
</div> </div>
</div> </div>
</div> </div>
@ -40,7 +41,7 @@
</div> </div>
<div class="field"> <div class="field">
<label for="file">Cartola</label> <label for="file">Cartola</label>
<input type="file" name="file" id="file" class="ui invisible file input" /> <input type="file" name="file" id="file" class="ui invisible file input"/>
<label for="file" class="ui icon button"> <label for="file" class="ui icon button">
<i class="file icon"></i> <i class="file icon"></i>
Cargar Cargar
@ -119,20 +120,20 @@
mes: '', mes: '',
movimientos: [], movimientos: [],
centrosCostos: { centrosCostos: {
ingresos: JSON.parse('{!! json_encode(array_values(array_map(function(\Incoviba\Model\CentroCosto $centroCosto) { ingresos: JSON.parse('{!! json_encode(array_values(array_map(function(\Incoviba\Model\Contabilidad\CentroCosto $centroCosto) {
return [ return [
'id' => $centroCosto->id, 'id' => $centroCosto->id,
'descripcion' => $centroCosto->descripcion 'descripcion' => $centroCosto->descripcion
]; ];
}, array_filter($centrosCostos, function(\Incoviba\Model\CentroCosto $centroCosto) { }, array_filter($centrosCostos, function(\Incoviba\Model\Contabilidad\CentroCosto $centroCosto) {
return $centroCosto->tipoCentro->descripcion === 'Ingreso'; return $centroCosto->tipoCentro->descripcion === 'Ingreso';
})))) !!}'), })))) !!}'),
egresos: JSON.parse('{!! json_encode(array_values(array_map(function(\Incoviba\Model\CentroCosto $centroCosto) { egresos: JSON.parse('{!! json_encode(array_values(array_map(function(\Incoviba\Model\Contabilidad\CentroCosto $centroCosto) {
return [ return [
'id' => $centroCosto->id, 'id' => $centroCosto->id,
'descripcion' => $centroCosto->descripcion 'descripcion' => $centroCosto->descripcion
]; ];
}, array_filter($centrosCostos, function(\Incoviba\Model\CentroCosto $centroCosto) { }, array_filter($centrosCostos, function(\Incoviba\Model\Contabilidad\CentroCosto $centroCosto) {
return $centroCosto->tipoCentro->descripcion === 'Egreso'; return $centroCosto->tipoCentro->descripcion === 'Egreso';
})))) !!}'), })))) !!}'),
} }
@ -170,7 +171,11 @@
return return
} }
$(this.ids.form.banco).dropdown('change values', json.cuentas.map(cuenta => { $(this.ids.form.banco).dropdown('change values', json.cuentas.map(cuenta => {
return {value: cuenta.banco.id, text: cuenta.banco.nombre, name: cuenta.banco.nombre} return {
value: cuenta.banco.id,
text: cuenta.banco.nombre,
name: cuenta.banco.nombre
}
})).dropdown('refresh') })).dropdown('refresh')
}) })
}) })
@ -247,12 +252,12 @@
const movimientos = this.data.movimientos.map((movimiento, idx) => { const movimientos = this.data.movimientos.map((movimiento, idx) => {
const temp = structuredClone(movimiento) const temp = structuredClone(movimiento)
temp.fecha = movimiento.fecha.toISOString() temp.fecha = movimiento.fecha.toISOString()
let centro = $(".centro[data-index='" + (idx+1) + "']").dropdown('get value') let centro = $(".centro[data-index='" + (idx + 1) + "']").dropdown('get value')
if (centro.length === 0) { if (centro.length === 0) {
centro = '' centro = ''
} }
temp.centro_costo = centro temp.centro_costo = centro
let detalle = $("[name='detalle" + (idx+1) + "']").val() let detalle = $("[name='detalle" + (idx + 1) + "']").val()
if (typeof detalle === 'undefined') { if (typeof detalle === 'undefined') {
detalle = '' detalle = ''
} }
@ -294,7 +299,10 @@
month: 'numeric', month: 'numeric',
day: 'numeric' day: 'numeric'
}) })
const numberFormatter = new Intl.NumberFormat('es-CL', {minimumFractionDigits: 0, maximumFractionDigits: 0}) const numberFormatter = new Intl.NumberFormat('es-CL', {
minimumFractionDigits: 0,
maximumFractionDigits: 0
})
this.data.movimientos.forEach((row, idx) => { this.data.movimientos.forEach((row, idx) => {
tbody.append( tbody.append(
$('<tr></tr>').append( $('<tr></tr>').append(
@ -322,7 +330,7 @@
}) })
table.DataTable(this.dataTableConfig) table.DataTable(this.dataTableConfig)
}, },
centrosDropdown: (idx, ingreso=true) => { centrosDropdown: (idx, ingreso = true) => {
const menu = $('<div></div>').addClass('menu') const menu = $('<div></div>').addClass('menu')
let centros = this.data.centrosCostos.ingresos let centros = this.data.centrosCostos.ingresos
if (!ingreso) { if (!ingreso) {

View File

@ -33,33 +33,33 @@ return [
'port' => $container->get('REDIS_PORT') 'port' => $container->get('REDIS_PORT')
]); ]);
}, },
Incoviba\Service\Cartola::class => function(ContainerInterface $container) { \Incoviba\Service\Contabilidad\Cartola::class => function(ContainerInterface $container) {
return (new Incoviba\Service\Cartola( return (new \Incoviba\Service\Contabilidad\Cartola(
$container->get(Psr\Log\LoggerInterface::class), $container->get(Psr\Log\LoggerInterface::class),
$container->get(Psr\Http\Message\StreamFactoryInterface::class), $container->get(Psr\Http\Message\StreamFactoryInterface::class),
$container->get(Incoviba\Common\Define\Contabilidad\Exporter::class), $container->get(Incoviba\Common\Define\Contabilidad\Exporter::class),
$container->get(Incoviba\Repository\Inmobiliaria::class), $container->get(Incoviba\Repository\Inmobiliaria::class),
$container->get(Incoviba\Repository\Inmobiliaria\Cuenta::class), $container->get(Incoviba\Repository\Inmobiliaria\Cuenta::class),
$container->get(Incoviba\Repository\Movimiento::class), $container->get(\Incoviba\Repository\Contabilidad\Movimiento::class),
$container->get(Incoviba\Service\Movimiento::class), $container->get(\Incoviba\Service\Contabilidad\Movimiento::class),
$container->get(Incoviba\Repository\Cartola::class) $container->get(\Incoviba\Repository\Contabilidad\Cartola::class)
)) ))
->register('security', $container->get(Incoviba\Service\Cartola\Security::class)) ->register('security', $container->get(\Incoviba\Service\Contabilidad\Cartola\Security::class))
->register('itau', $container->get(Incoviba\Service\Cartola\Itau::class)) ->register('itau', $container->get(\Incoviba\Service\Contabilidad\Cartola\Itau::class))
->register('santander', $container->get(Incoviba\Service\Cartola\Santander::class)) ->register('santander', $container->get(\Incoviba\Service\Contabilidad\Cartola\Santander::class))
->register('bci', $container->get(Incoviba\Service\Cartola\BCI::class)); ->register('bci', $container->get(\Incoviba\Service\Contabilidad\Cartola\BCI::class));
}, },
Incoviba\Common\Define\Contabilidad\Exporter::class => function(ContainerInterface $container) { Incoviba\Common\Define\Contabilidad\Exporter::class => function(ContainerInterface $container) {
return $container->get(Incoviba\Service\Contabilidad\Exporter\Nubox::class); return $container->get(Incoviba\Service\Contabilidad\Exporter\Nubox::class);
}, },
Incoviba\Service\Contabilidad\Exporter\Nubox::class => function(ContainerInterface $container) { Incoviba\Service\Contabilidad\Exporter\Nubox::class => function(ContainerInterface $container) {
return new Incoviba\Service\Contabilidad\Exporter\Nubox($container->get(Incoviba\Repository\CentroCosto::class), return new Incoviba\Service\Contabilidad\Exporter\Nubox($container->get(\Incoviba\Repository\Contabilidad\CentroCosto::class),
$container->get('folders')->get('uploads')); $container->get('folders')->get('uploads'));
}, },
Incoviba\Service\Contabilidad\Nubox::class => function(ContainerInterface $container) { Incoviba\Service\Contabilidad\Nubox::class => function(ContainerInterface $container) {
return new Incoviba\Service\Contabilidad\Nubox( return new Incoviba\Service\Contabilidad\Nubox(
$container->get(Psr\Log\LoggerInterface::class), $container->get(Psr\Log\LoggerInterface::class),
$container->get(Incoviba\Repository\Nubox::class), $container->get(\Incoviba\Repository\Contabilidad\Nubox::class),
$container->get(Incoviba\Service\Redis::class), $container->get(Incoviba\Service\Redis::class),
new GuzzleHttp\Client(), new GuzzleHttp\Client(),
$container->get(Psr\Http\Message\RequestFactoryInterface::class), $container->get(Psr\Http\Message\RequestFactoryInterface::class),

View File

@ -1,24 +1,23 @@
<?php <?php
namespace Incoviba\Controller\API\Contabilidad; namespace Incoviba\Controller\API\Contabilidad;
use DateTimeInterface;
use DateTimeImmutable; use DateTimeImmutable;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Incoviba\Common\Ideal\Controller; use Incoviba\Common\Ideal\Controller;
use Incoviba\Common\Implement\Exception\EmptyResult; use Incoviba\Common\Implement\Exception\EmptyResult;
use Incoviba\Controller\API\withJson; use Incoviba\Controller\API\withJson;
use Incoviba\Repository; use Incoviba\Repository;
use Incoviba\Service; use Incoviba\Service;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class Cartolas extends Controller class Cartolas extends Controller
{ {
use withJson; use withJson;
public function procesar(ServerRequestInterface $request, ResponseInterface $response, public function procesar(ServerRequestInterface $request, ResponseInterface $response,
Repository\Inmobiliaria $inmobiliariaRepository, Repository\Inmobiliaria $inmobiliariaRepository,
Repository\Banco $bancoRepository, Repository\Contabilidad\Banco $bancoRepository,
Service\Cartola $cartolaService): ResponseInterface Service\Contabilidad\Cartola $cartolaService): ResponseInterface
{ {
$body = $request->getParsedBody(); $body = $request->getParsedBody();
$output = [ $output = [
@ -34,10 +33,10 @@ class Cartolas extends Controller
} catch (EmptyResult) {} } catch (EmptyResult) {}
return $this->withJson($response, $output); return $this->withJson($response, $output);
} }
public function exportar(ServerRequestInterface $request, ResponseInterface $response, public function exportar(ServerRequestInterface $request, ResponseInterface $response,
Repository\Inmobiliaria $inmobiliariaRepository, Repository\Inmobiliaria $inmobiliariaRepository,
Repository\Banco $bancoRepository, Repository\Contabilidad\Banco $bancoRepository,
Service\Cartola $cartolaService): ResponseInterface Service\Contabilidad\Cartola $cartolaService): ResponseInterface
{ {
$body = $request->getParsedBody(); $body = $request->getParsedBody();
$output = [ $output = [
@ -52,9 +51,9 @@ class Cartolas extends Controller
} catch (EmptyResult) {} } catch (EmptyResult) {}
return $this->withJson($response, $output); return $this->withJson($response, $output);
} }
public function diaria(ServerRequestInterface $request, ResponseInterface $response, public function diaria(ServerRequestInterface $request, ResponseInterface $response,
Repository\Inmobiliaria\Cuenta $cuentaRepository, Repository\Inmobiliaria\Cuenta $cuentaRepository,
Service\Cartola $cartolaService): ResponseInterface Service\Contabilidad\Cartola $cartolaService): ResponseInterface
{ {
$body = $request->getParsedBody(); $body = $request->getParsedBody();
$output = [ $output = [
@ -80,9 +79,9 @@ class Cartolas extends Controller
} }
return $this->withJson($response, $output); return $this->withJson($response, $output);
} }
public function ayer(ServerRequestInterface $request, ResponseInterface $response, public function ayer(ServerRequestInterface $request, ResponseInterface $response,
Repository\Inmobiliaria\Cuenta $cuentaRepository, Repository\Inmobiliaria\Cuenta $cuentaRepository,
Repository\Cartola $cartolaRepository): ResponseInterface Repository\Contabilidad\Cartola $cartolaRepository): ResponseInterface
{ {
$body = $request->getParsedBody(); $body = $request->getParsedBody();
$output = [ $output = [

View File

@ -1,17 +1,18 @@
<?php <?php
namespace Incoviba\Controller\API; namespace Incoviba\Controller\API\Contabilidad;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Incoviba\Common\Implement\Exception\EmptyResult; use Incoviba\Common\Implement\Exception\EmptyResult;
use Incoviba\Controller\API\withJson;
use Incoviba\Repository; use Incoviba\Repository;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class CentrosCostos class CentrosCostos
{ {
use withJson; use withJson;
public function add(ServerRequestInterface $request, ResponseInterface $response, public function add(ServerRequestInterface $request, ResponseInterface $response,
Repository\CentroCosto $centroCostoRepository): ResponseInterface Repository\Contabilidad\CentroCosto $centroCostoRepository): ResponseInterface
{ {
$body = $request->getParsedBody(); $body = $request->getParsedBody();
$output = [ $output = [
@ -26,8 +27,8 @@ class CentrosCostos
} catch (EmptyResult) {} } catch (EmptyResult) {}
return $this->withJson($response, $output); return $this->withJson($response, $output);
} }
public function edit(ServerRequestInterface $request, ResponseInterface $response, public function edit(ServerRequestInterface $request, ResponseInterface $response,
Repository\CentroCosto $centroCostoRepository, int $centro_costo_id): ResponseInterface Repository\Contabilidad\CentroCosto $centroCostoRepository, int $centro_costo_id): ResponseInterface
{ {
$body = $request->getParsedBody(); $body = $request->getParsedBody();
$output = [ $output = [
@ -45,8 +46,8 @@ class CentrosCostos
} catch (EmptyResult) {} } catch (EmptyResult) {}
return $this->withJson($response, $output); return $this->withJson($response, $output);
} }
public function remove(ServerRequestInterface $request, ResponseInterface $response, public function remove(ServerRequestInterface $request, ResponseInterface $response,
Repository\CentroCosto $centroCostoRepository, int $centro_costo_id): ResponseInterface Repository\Contabilidad\CentroCosto $centroCostoRepository, int $centro_costo_id): ResponseInterface
{ {
$output = [ $output = [
'centro_costo_id' => $centro_costo_id, 'centro_costo_id' => $centro_costo_id,

View File

@ -2,23 +2,23 @@
namespace Incoviba\Controller\API\Contabilidad; namespace Incoviba\Controller\API\Contabilidad;
use DateTimeImmutable; use DateTimeImmutable;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Incoviba\Common\Ideal; use Incoviba\Common\Ideal;
use Incoviba\Common\Implement; use Incoviba\Common\Implement;
use Incoviba\Controller\API\withJson; use Incoviba\Controller\API\withJson;
use Incoviba\Repository; use Incoviba\Repository;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class Depositos extends Ideal\Controller class Depositos extends Ideal\Controller
{ {
use withJson; use withJson;
public function inmobiliaria(ServerRequestInterface $request, ResponseInterface $response, public function inmobiliaria(ServerRequestInterface $request, ResponseInterface $response,
Repository\Inmobiliaria $inmobiliariaRepository, Repository\Inmobiliaria $inmobiliariaRepository,
Repository\Banco $bancoRepository, Repository\Contabilidad\Banco $bancoRepository,
Repository\Inmobiliaria\Cuenta $cuentaRepository, Repository\Inmobiliaria\Cuenta $cuentaRepository,
Repository\Deposito $dapRepository, Repository\Contabilidad\Deposito $dapRepository,
int $inmobiliaria_rut): ResponseInterface int $inmobiliaria_rut): ResponseInterface
{ {
$output = [ $output = [
'inmobiliaria_rut' => $inmobiliaria_rut, 'inmobiliaria_rut' => $inmobiliaria_rut,
@ -33,10 +33,10 @@ class Depositos extends Ideal\Controller
} catch (Implement\Exception\EmptyResult) {} } catch (Implement\Exception\EmptyResult) {}
return $this->withJson($response, $output); return $this->withJson($response, $output);
} }
public function add(ServerRequestInterface $request, ResponseInterface $response, public function add(ServerRequestInterface $request, ResponseInterface $response,
Repository\Inmobiliaria $inmobiliariaRepository, Repository\Banco $bancoRepository, Repository\Inmobiliaria $inmobiliariaRepository, Repository\Contabilidad\Banco $bancoRepository,
Repository\Inmobiliaria\Cuenta $cuentaRepository, Repository\Inmobiliaria\Cuenta $cuentaRepository,
Repository\Deposito $dapRepository): ResponseInterface Repository\Contabilidad\Deposito $dapRepository): ResponseInterface
{ {
$body = $request->getParsedBody(); $body = $request->getParsedBody();
$output = [ $output = [

View File

@ -1,21 +1,21 @@
<?php <?php
namespace Incoviba\Controller\API\Contabilidad; namespace Incoviba\Controller\API\Contabilidad;
use Psr\Http\Message\ResponseInterface; use Incoviba\Common\Ideal;
use Psr\Http\Message\ServerRequestInterface;
use Incoviba\Common\Implement\Exception\EmptyResult; use Incoviba\Common\Implement\Exception\EmptyResult;
use Incoviba\Controller\API\withJson; use Incoviba\Controller\API\withJson;
use Incoviba\Common\Ideal;
use Incoviba\Repository; use Incoviba\Repository;
use Incoviba\Service; use Incoviba\Service;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class Movimientos extends Ideal\Controller class Movimientos extends Ideal\Controller
{ {
use withJson; use withJson;
public function detalles(ServerRequestInterface $request, ResponseInterface $response, public function detalles(ServerRequestInterface $request, ResponseInterface $response,
Service\Movimiento $movimientoService, Service\Contabilidad\Movimiento $movimientoService,
Repository\CentroCosto $centroCostoRepository, int $movimiento_id): ResponseInterface Repository\Contabilidad\CentroCosto $centroCostoRepository, int $movimiento_id): ResponseInterface
{ {
$body = $request->getParsedBody(); $body = $request->getParsedBody();
$output = [ $output = [

View File

@ -1,11 +1,12 @@
<?php <?php
namespace Incoviba\Controller\API; namespace Incoviba\Controller\API\Contabilidad;
use DateTimeImmutable; use DateTimeImmutable;
use Incoviba\Common\Implement\Exception\HttpResponse;
use Incoviba\Controller\API\withJson;
use Incoviba\Service;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Incoviba\Common\Implement\Exception\HttpResponse;
use Incoviba\Service;
class Nubox class Nubox
{ {

View File

@ -1,32 +0,0 @@
<?php
namespace Incoviba\Controller;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Incoviba\Repository;
use Incoviba\Common\Alias\View;
class CentrosCostos
{
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, View $view,
Repository\CentroCosto $centroCostoRepository,
Repository\TipoCentro $tipoCentroRepository,
Repository\CategoriaCentro $categoriaCentroRepository,
Repository\TipoCuenta $tipoCuentaRepository): ResponseInterface
{
$centrosCostos = $centroCostoRepository->fetchAll();
$tiposCentros = $tipoCentroRepository->fetchAll();
$categorias = $categoriaCentroRepository->fetchAll('descripcion');
$tiposCuentas = $tipoCuentaRepository->fetchAll();
return $view->render($response, 'contabilidad.centros_costos', compact('centrosCostos',
'tiposCentros', 'categorias', 'tiposCuentas'));
}
public function asignar(ServerRequestInterface $request, ResponseInterface $response, View $view,
Repository\CentroCosto $centroCostoRepository,
Repository\Inmobiliaria $inmobiliariaRepository): ResponseInterface
{
$centrosCostos = $centroCostoRepository->fetchAll();
$inmobiliarias = $inmobiliariaRepository->fetchAllActive('razon');
return $view->render($response, 'contabilidad.centros_costos.asignar', compact('centrosCostos', 'inmobiliarias'));
}
}

View File

@ -1,25 +1,25 @@
<?php <?php
namespace Incoviba\Controller; namespace Incoviba\Controller;
use DateTimeImmutable;
use DateInterval; use DateInterval;
use Incoviba\Common\Ideal\Controller; use DateTimeImmutable;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Incoviba\Common\Alias\View; use Incoviba\Common\Alias\View;
use Incoviba\Common\Implement\Exception\{EmptyResult, EmptyRedis}; use Incoviba\Common\Ideal\Controller;
use Incoviba\Common\Implement\Exception\{EmptyRedis, EmptyResult};
use Incoviba\Model; use Incoviba\Model;
use Incoviba\Repository; use Incoviba\Repository;
use Incoviba\Service; use Incoviba\Service;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class Contabilidad extends Controller class Contabilidad extends Controller
{ {
use withRedis; use withRedis;
public function diaria(ServerRequestInterface $request, ResponseInterface $response, View $view, public function diaria(ServerRequestInterface $request, ResponseInterface $response, View $view,
Service\Redis $redisService, Service\Redis $redisService,
Repository\Inmobiliaria $inmobiliariaRepository, Repository\Inmobiliaria $inmobiliariaRepository,
Repository\CentroCosto $centroCostoRepository): ResponseInterface Repository\Contabilidad\CentroCosto $centroCostoRepository): ResponseInterface
{ {
$redisKey = 'inmobiliarias'; $redisKey = 'inmobiliarias';
$inmobiliarias = []; $inmobiliarias = [];
@ -34,10 +34,10 @@ class Contabilidad extends Controller
$centrosCostos = $centroCostoRepository->fetchAll(); $centrosCostos = $centroCostoRepository->fetchAll();
return $view->render($response, 'contabilidad.cartolas.diaria', compact('inmobiliarias', 'centrosCostos')); return $view->render($response, 'contabilidad.cartolas.diaria', compact('inmobiliarias', 'centrosCostos'));
} }
public function depositos(ServerRequestInterface $request, ResponseInterface $response, View $view, public function depositos(ServerRequestInterface $request, ResponseInterface $response, View $view,
Service\Redis $redisService, Service\Redis $redisService,
Repository\Inmobiliaria $inmobiliariaRepository, Repository\Inmobiliaria $inmobiliariaRepository,
Repository\Deposito $dapRepository): ResponseInterface Repository\Contabilidad\Deposito $dapRepository): ResponseInterface
{ {
$redisKey = 'inmobiliarias'; $redisKey = 'inmobiliarias';
$inmobiliarias = []; $inmobiliarias = [];
@ -54,11 +54,11 @@ class Contabilidad extends Controller
$depositos = $dapRepository->fetchAll(); $depositos = $dapRepository->fetchAll();
} catch (EmptyResult) {} } catch (EmptyResult) {}
$fecha = new DateTimeImmutable('today'); $fecha = new DateTimeImmutable('today');
$activos = array_filter($depositos, function(Model\Deposito $deposito) use ($fecha) { $activos = array_filter($depositos, function(Model\Contabilidad\Deposito $deposito) use ($fecha) {
return $deposito->termino >= $fecha; return $deposito->termino >= $fecha;
}); });
$mes = $fecha->sub(new DateInterval('P1M')); $mes = $fecha->sub(new DateInterval('P1M'));
$vencidos = array_filter($depositos, function(Model\Deposito $deposito) use ($fecha, $mes) { $vencidos = array_filter($depositos, function(Model\Contabilidad\Deposito $deposito) use ($fecha, $mes) {
return $deposito->termino < $fecha and $deposito->termino >= $mes; return $deposito->termino < $fecha and $deposito->termino >= $mes;
}); });
return $view->render($response, 'contabilidad.depositos', compact('inmobiliarias', 'activos', 'vencidos')); return $view->render($response, 'contabilidad.depositos', compact('inmobiliarias', 'activos', 'vencidos'));

View File

@ -0,0 +1,32 @@
<?php
namespace Incoviba\Controller\Contabilidad;
use Incoviba\Common\Alias\View;
use Incoviba\Repository;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class CentrosCostos
{
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, View $view,
Repository\Contabilidad\CentroCosto $centroCostoRepository,
Repository\Contabilidad\TipoCentro $tipoCentroRepository,
Repository\Contabilidad\CategoriaCentro $categoriaCentroRepository,
Repository\TipoCuenta $tipoCuentaRepository): ResponseInterface
{
$centrosCostos = $centroCostoRepository->fetchAll();
$tiposCentros = $tipoCentroRepository->fetchAll();
$categorias = $categoriaCentroRepository->fetchAll('descripcion');
$tiposCuentas = $tipoCuentaRepository->fetchAll();
return $view->render($response, 'contabilidad.centros_costos', compact('centrosCostos',
'tiposCentros', 'categorias', 'tiposCuentas'));
}
public function asignar(ServerRequestInterface $request, ResponseInterface $response, View $view,
Repository\Contabilidad\CentroCosto $centroCostoRepository,
Repository\Inmobiliaria $inmobiliariaRepository): ResponseInterface
{
$centrosCostos = $centroCostoRepository->fetchAll();
$inmobiliarias = $inmobiliariaRepository->fetchAllActive('razon');
return $view->render($response, 'contabilidad.centros_costos.asignar', compact('centrosCostos', 'inmobiliarias'));
}
}

View File

@ -1,14 +1,14 @@
<?php <?php
namespace Incoviba\Controller; namespace Incoviba\Controller;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Incoviba\Common\Alias\View; use Incoviba\Common\Alias\View;
use Incoviba\Common\Implement\Exception\EmptyResult;
use Incoviba\Common\Implement\Exception\EmptyRedis; use Incoviba\Common\Implement\Exception\EmptyRedis;
use Incoviba\Common\Implement\Exception\EmptyResult;
use Incoviba\Model; use Incoviba\Model;
use Incoviba\Repository; use Incoviba\Repository;
use Incoviba\Service; use Incoviba\Service;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class Ventas class Ventas
{ {
@ -103,12 +103,12 @@ class Ventas
$venta = $ventaService->getById($venta_id); $venta = $ventaService->getById($venta_id);
return $view->render($response, 'ventas.pies.cuotas', compact('venta')); return $view->render($response, 'ventas.pies.cuotas', compact('venta'));
} }
public function escriturar(ServerRequestInterface $request, ResponseInterface $response, Service\Venta $ventaService, public function escriturar(ServerRequestInterface $request, ResponseInterface $response, Service\Venta $ventaService,
Repository\Banco $bancoRepository, View $view, int $venta_id): ResponseInterface Repository\Contabilidad\Banco $bancoRepository, View $view, int $venta_id): ResponseInterface
{ {
$venta = $ventaService->getById($venta_id); $venta = $ventaService->getById($venta_id);
$bancos = $bancoRepository->fetchAll(); $bancos = $bancoRepository->fetchAll();
usort($bancos, function(Model\Banco $a, Model\Banco $b) { usort($bancos, function(Model\Contabilidad\Banco $a, Model\Contabilidad\Banco $b) {
return strcmp($a->nombre, $b->nombre); return strcmp($a->nombre, $b->nombre);
}); });
return $view->render($response, 'ventas.escriturar', compact('venta', 'bancos')); return $view->render($response, 'ventas.escriturar', compact('venta', 'bancos'));

View File

@ -1,17 +1,17 @@
<?php <?php
namespace Incoviba\Controller\Ventas; namespace Incoviba\Controller\Ventas;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Incoviba\Common\Alias\View; use Incoviba\Common\Alias\View;
use Incoviba\Common\Ideal\Controller; use Incoviba\Common\Ideal\Controller;
use Incoviba\Repository; use Incoviba\Repository;
use Incoviba\Service; use Incoviba\Service;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class Creditos extends Controller class Creditos extends Controller
{ {
public function show(ServerRequestInterface $request, ResponseInterface $response, View $view, public function show(ServerRequestInterface $request, ResponseInterface $response, View $view,
Service\Venta $ventaService, Repository\Banco $bancoRepository, Service\Venta $ventaService, Repository\Contabilidad\Banco $bancoRepository,
int $venta_id): ResponseInterface int $venta_id): ResponseInterface
{ {
$venta = $ventaService->getById($venta_id); $venta = $ventaService->getById($venta_id);

View File

@ -2,13 +2,13 @@
namespace Incoviba\Controller\Ventas; namespace Incoviba\Controller\Ventas;
use DateTimeImmutable; use DateTimeImmutable;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Incoviba\Common\Implement\Exception\EmptyResult;
use Incoviba\Common\Alias\View; use Incoviba\Common\Alias\View;
use Incoviba\Common\Implement\Exception\EmptyResult;
use Incoviba\Model;
use Incoviba\Repository; use Incoviba\Repository;
use Incoviba\Service; use Incoviba\Service;
use Incoviba\Model; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class Cuotas class Cuotas
{ {
@ -73,12 +73,12 @@ class Cuotas
$response->getBody()->write(json_encode($output)); $response->getBody()->write(json_encode($output));
return $response->withHeader('Content-Type', 'application/json'); return $response->withHeader('Content-Type', 'application/json');
} }
public function add(ServerRequestInterface $request, ResponseInterface $response, Service\Venta\Pie $pieService, Repository\Venta $ventaRepository, Repository\Banco $bancoRepository, View $view, int $pie_id): ResponseInterface public function add(ServerRequestInterface $request, ResponseInterface $response, Service\Venta\Pie $pieService, Repository\Venta $ventaRepository, Repository\Contabilidad\Banco $bancoRepository, View $view, int $pie_id): ResponseInterface
{ {
$pie = $pieService->getById($pie_id); $pie = $pieService->getById($pie_id);
$venta = $ventaRepository->fetchByPie($pie_id); $venta = $ventaRepository->fetchByPie($pie_id);
$bancos = $bancoRepository->fetchAll(); $bancos = $bancoRepository->fetchAll();
usort($bancos, function(Model\Banco $a, Model\Banco $b) { usort($bancos, function(Model\Contabilidad\Banco $a, Model\Contabilidad\Banco $b) {
return strcmp($a->nombre, $b->nombre); return strcmp($a->nombre, $b->nombre);
}); });
return $view->render($response, 'ventas.pies.cuotas.add', compact('pie', 'venta', 'bancos')); return $view->render($response, 'ventas.pies.cuotas.add', compact('pie', 'venta', 'bancos'));

View File

@ -1,11 +1,11 @@
<?php <?php
namespace Incoviba\Controller\Ventas; namespace Incoviba\Controller\Ventas;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Incoviba\Common\Alias\View; use Incoviba\Common\Alias\View;
use Incoviba\Repository; use Incoviba\Repository;
use Incoviba\Service; use Incoviba\Service;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class Escrituras class Escrituras
{ {
@ -22,8 +22,8 @@ class Escrituras
return $view->render($response, 'ventas.escrituras.informe', compact('venta')); return $view->render($response, 'ventas.escrituras.informe', compact('venta'));
} }
public function add(ServerRequestInterface $request, ResponseInterface $response, View $view, public function add(ServerRequestInterface $request, ResponseInterface $response, View $view,
Service\Venta $ventaService, Repository\Banco $bancoRepository, Service\Venta $ventaService, Repository\Contabilidad\Banco $bancoRepository,
int $venta_id): ResponseInterface int $venta_id): ResponseInterface
{ {
$venta = $ventaService->getById($venta_id); $venta = $ventaService->getById($venta_id);
$bancos = $bancoRepository->fetchAll('nombre'); $bancos = $bancoRepository->fetchAll('nombre');

View File

@ -1,21 +1,21 @@
<?php <?php
namespace Incoviba\Controller\Ventas; namespace Incoviba\Controller\Ventas;
use Incoviba\Common\Alias\View;
use Incoviba\Model;
use Incoviba\Repository;
use Incoviba\Service;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Incoviba\Common\Alias\View;
use Incoviba\Service;
use Incoviba\Repository;
use Incoviba\Model;
class Pies class Pies
{ {
public function cuotas(ServerRequestInterface $request, ResponseInterface $response, Service\Venta\Pie $pieService, Repository\Venta $ventaRepository, Repository\Banco $bancoRepository, View $view, int $pie_id): ResponseInterface public function cuotas(ServerRequestInterface $request, ResponseInterface $response, Service\Venta\Pie $pieService, Repository\Venta $ventaRepository, Repository\Contabilidad\Banco $bancoRepository, View $view, int $pie_id): ResponseInterface
{ {
$pie = $pieService->getById($pie_id); $pie = $pieService->getById($pie_id);
$venta = $ventaRepository->fetchByPie($pie_id); $venta = $ventaRepository->fetchByPie($pie_id);
$bancos = $bancoRepository->fetchAll(); $bancos = $bancoRepository->fetchAll();
usort($bancos, function(Model\Banco $a, Model\Banco $b) { usort($bancos, function(Model\Contabilidad\Banco $a, Model\Contabilidad\Banco $b) {
return strcmp($a->nombre, $b->nombre); return strcmp($a->nombre, $b->nombre);
}); });
return $view->render($response, 'ventas.pies.cuotas', compact('pie', 'venta', 'bancos')); return $view->render($response, 'ventas.pies.cuotas', compact('pie', 'venta', 'bancos'));

View File

@ -1,5 +0,0 @@
<?php
namespace Incoviba\Model;
class CategoriaCentro extends Tipo
{}

View File

@ -1,5 +1,5 @@
<?php <?php
namespace Incoviba\Model; namespace Incoviba\Model\Contabilidad;
use Incoviba\Common\Ideal\Model; use Incoviba\Common\Ideal\Model;

View File

@ -1,8 +1,9 @@
<?php <?php
namespace Incoviba\Model; namespace Incoviba\Model\Contabilidad;
use DateTimeInterface; use DateTimeInterface;
use Incoviba\Common\Ideal; use Incoviba\Common\Ideal;
use Incoviba\Model\Inmobiliaria;
class Cartola extends Ideal\Model class Cartola extends Ideal\Model
{ {

View File

@ -0,0 +1,7 @@
<?php
namespace Incoviba\Model\Contabilidad;
use Incoviba\Model\Tipo;
class CategoriaCentro extends Tipo
{}

View File

@ -1,7 +1,8 @@
<?php <?php
namespace Incoviba\Model; namespace Incoviba\Model\Contabilidad;
use Incoviba\Common\Ideal; use Incoviba\Common\Ideal;
use Incoviba\Model\TipoCuenta;
class CentroCosto extends Ideal\Model class CentroCosto extends Ideal\Model
{ {

View File

@ -1,8 +1,9 @@
<?php <?php
namespace Incoviba\Model; namespace Incoviba\Model\Contabilidad;
use DateTimeInterface; use DateTimeInterface;
use Incoviba\Common\Ideal; use Incoviba\Common\Ideal;
use Incoviba\Model\Inmobiliaria;
class Deposito extends Ideal\Model class Deposito extends Ideal\Model
{ {

View File

@ -1,9 +1,10 @@
<?php <?php
namespace Incoviba\Model; namespace Incoviba\Model\Contabilidad;
use DateTimeInterface; use DateTimeInterface;
use Incoviba\Common\Ideal; use Incoviba\Common\Ideal;
use Incoviba\Common\Implement\Exception\EmptyResult; use Incoviba\Common\Implement\Exception\EmptyResult;
use Incoviba\Model\Inmobiliaria;
use Incoviba\Model\Movimiento\Detalle; use Incoviba\Model\Movimiento\Detalle;
class Movimiento extends Ideal\Model class Movimiento extends Ideal\Model

View File

@ -1,8 +1,8 @@
<?php <?php
namespace Incoviba\Model; namespace Incoviba\Model\Contabilidad;
use Incoviba\Common\Define;
use Incoviba\Common\Ideal; use Incoviba\Common\Ideal;
use Incoviba\Model\Inmobiliaria;
class Nubox extends Ideal\Model class Nubox extends Ideal\Model
{ {

View File

@ -1,7 +1,8 @@
<?php <?php
namespace Incoviba\Model; namespace Incoviba\Model\Contabilidad;
use Incoviba\Common\Ideal; use Incoviba\Common\Ideal;
use Incoviba\Model\Venta;
class PagoCentroCosto extends Ideal\Model class PagoCentroCosto extends Ideal\Model
{ {

View File

@ -0,0 +1,7 @@
<?php
namespace Incoviba\Model\Contabilidad;
use Incoviba\Model\Tipo;
class TipoCentro extends Tipo
{}

View File

@ -8,7 +8,7 @@ use Incoviba\Model;
class Cuenta extends Ideal\Model class Cuenta extends Ideal\Model
{ {
public Model\Inmobiliaria $inmobiliaria; public Model\Inmobiliaria $inmobiliaria;
public Model\Banco $banco; public Model\Contabilidad\Banco $banco;
public string $cuenta; public string $cuenta;
protected array $estados; protected array $estados;

View File

@ -6,8 +6,8 @@ use Incoviba\Model;
class Detalle extends Ideal\Model class Detalle extends Ideal\Model
{ {
public Model\Movimiento $movimiento; public Model\Contabilidad\Movimiento $movimiento;
public ?Model\CentroCosto $centroCosto; public ?Model\Contabilidad\CentroCosto $centroCosto;
public ?string $detalle; public ?string $detalle;
public function jsonSerialize(): mixed public function jsonSerialize(): mixed

View File

@ -1,5 +0,0 @@
<?php
namespace Incoviba\Model;
class TipoCentro extends Tipo
{}

View File

@ -3,7 +3,7 @@ namespace Incoviba\Model\Venta;
use DateTimeInterface; use DateTimeInterface;
use Incoviba\Common\Ideal\Model; use Incoviba\Common\Ideal\Model;
use Incoviba\Model\Banco; use Incoviba\Model\Contabilidad\Banco;
class Cuota extends Model class Cuota extends Model
{ {

View File

@ -3,7 +3,7 @@ namespace Incoviba\Model\Venta;
use DateTimeInterface; use DateTimeInterface;
use Incoviba\Common\Ideal\Model; use Incoviba\Common\Ideal\Model;
use Incoviba\Model\Banco; use Incoviba\Model\Contabilidad\Banco;
class Pago extends Model class Pago extends Model
{ {

View File

@ -1,5 +1,5 @@
<?php <?php
namespace Incoviba\Repository; namespace Incoviba\Repository\Contabilidad;
use Incoviba\Common\Define; use Incoviba\Common\Define;
use Incoviba\Common\Ideal; use Incoviba\Common\Ideal;
@ -17,7 +17,7 @@ class Banco extends Ideal\Repository
public function create(?array $data = null): Define\Model public function create(?array $data = null): Define\Model
{ {
$map = new Implement\Repository\MapperParser(['nombre']); $map = new Implement\Repository\MapperParser(['nombre']);
return $this->parseData(new Model\Banco(), $data, $map); return $this->parseData(new Model\Contabilidad\Banco(), $data, $map);
} }
public function save(Define\Model $model): Define\Model public function save(Define\Model $model): Define\Model
{ {

View File

@ -1,5 +1,5 @@
<?php <?php
namespace Incoviba\Repository; namespace Incoviba\Repository\Contabilidad;
use DateTimeInterface; use DateTimeInterface;
use Incoviba\Common\Define; use Incoviba\Common\Define;
@ -16,7 +16,7 @@ class Cartola extends Ideal\Repository
$this->setTable('cartolas'); $this->setTable('cartolas');
} }
public function create(?array $data = null): Model\Cartola public function create(?array $data = null): Model\Contabilidad\Cartola
{ {
$map = (new Implement\Repository\MapperParser(['cargos', 'abonos', 'saldo'])) $map = (new Implement\Repository\MapperParser(['cargos', 'abonos', 'saldo']))
->register('fecha', new Implement\Repository\Mapper\DateTime('fecha')) ->register('fecha', new Implement\Repository\Mapper\DateTime('fecha'))
@ -25,9 +25,9 @@ class Cartola extends Ideal\Repository
->setFunction(function($data) { ->setFunction(function($data) {
return $this->cuentaRepository->fetchById($data['cuenta_id']); return $this->cuentaRepository->fetchById($data['cuenta_id']);
})); }));
return $this->parseData(new Model\Cartola(), $data, $map); return $this->parseData(new Model\Contabilidad\Cartola(), $data, $map);
} }
public function save(Define\Model $model): Model\Cartola public function save(Define\Model $model): Model\Contabilidad\Cartola
{ {
$model->id = $this->saveNew([ $model->id = $this->saveNew([
'cuenta_id', 'cuenta_id',
@ -44,7 +44,7 @@ class Cartola extends Ideal\Repository
]); ]);
return $model; return $model;
} }
public function edit(Define\Model $model, array $new_data): Model\Cartola public function edit(Define\Model $model, array $new_data): Model\Contabilidad\Cartola
{ {
return $this->update($model, ['cuenta_id', 'fecha', 'cargos', 'abonos', 'saldo'], $new_data); return $this->update($model, ['cuenta_id', 'fecha', 'cargos', 'abonos', 'saldo'], $new_data);
} }
@ -57,7 +57,7 @@ class Cartola extends Ideal\Repository
->where('fecha = ?'); ->where('fecha = ?');
return $this->fetchMany($query, [$fecha->format('Y-m-d')]); return $this->fetchMany($query, [$fecha->format('Y-m-d')]);
} }
public function fetchByCuentaAndFecha(int $cuenta_id, DateTimeInterface $fecha): Model\Cartola public function fetchByCuentaAndFecha(int $cuenta_id, DateTimeInterface $fecha): Model\Contabilidad\Cartola
{ {
$query = $this->connection->getQueryBuilder() $query = $this->connection->getQueryBuilder()
->select() ->select()
@ -65,7 +65,7 @@ class Cartola extends Ideal\Repository
->where('cuenta_id = ? AND fecha = ?'); ->where('cuenta_id = ? AND fecha = ?');
return $this->fetchOne($query, [$cuenta_id, $fecha->format('Y-m-d')]); return $this->fetchOne($query, [$cuenta_id, $fecha->format('Y-m-d')]);
} }
public function fetchLastByCuentaAndFecha(int $cuenta_id, DateTimeInterface $fecha): Model\Cartola public function fetchLastByCuentaAndFecha(int $cuenta_id, DateTimeInterface $fecha): Model\Contabilidad\Cartola
{ {
$query = $this->connection->getQueryBuilder() $query = $this->connection->getQueryBuilder()
->select() ->select()

View File

@ -1,8 +1,9 @@
<?php <?php
namespace Incoviba\Repository; namespace Incoviba\Repository\Contabilidad;
use Incoviba\Common\Define; use Incoviba\Common\Define;
use Incoviba\Model; use Incoviba\Model;
use Incoviba\Repository\Tipo;
class CategoriaCentro extends Tipo class CategoriaCentro extends Tipo
{ {
@ -14,6 +15,6 @@ class CategoriaCentro extends Tipo
protected function getBlank(): Define\Model protected function getBlank(): Define\Model
{ {
return new Model\CategoriaCentro(); return new Model\Contabilidad\CategoriaCentro();
} }
} }

View File

@ -1,12 +1,12 @@
<?php <?php
namespace Incoviba\Repository; namespace Incoviba\Repository\Contabilidad;
use Incoviba\Common\Define; use Incoviba\Common\Define;
use Incoviba\Common\Ideal; use Incoviba\Common\Ideal;
use Incoviba\Common\Implement\Repository\Mapper; use Incoviba\Common\Implement\Repository\Mapper;
use Incoviba\Common\Implement\Repository\MapperParser; use Incoviba\Common\Implement\Repository\MapperParser;
use Incoviba\Repository;
use Incoviba\Model; use Incoviba\Model;
use Incoviba\Repository\TipoCuenta;
class CentroCosto extends Ideal\Repository class CentroCosto extends Ideal\Repository
{ {
@ -18,7 +18,7 @@ class CentroCosto extends Ideal\Repository
$this->setTable('centros_costos'); $this->setTable('centros_costos');
} }
public function create(?array $data = null): Model\CentroCosto public function create(?array $data = null): Model\Contabilidad\CentroCosto
{ {
$map = (new MapperParser(['descripcion'])) $map = (new MapperParser(['descripcion']))
->register('tipo_centro_id', (new Mapper()) ->register('tipo_centro_id', (new Mapper())
@ -39,9 +39,9 @@ class CentroCosto extends Ideal\Repository
->setDefault(null)) ->setDefault(null))
->register('cuenta_contable', (new Mapper()) ->register('cuenta_contable', (new Mapper())
->setProperty('cuentaContable')); ->setProperty('cuentaContable'));
return $this->parseData(new Model\CentroCosto(), $data, $map); return $this->parseData(new Model\Contabilidad\CentroCosto(), $data, $map);
} }
public function save(Define\Model $model): Model\CentroCosto public function save(Define\Model $model): Model\Contabilidad\CentroCosto
{ {
$this->saveNew( $this->saveNew(
['id', 'tipo_centro_id', 'categoria_id', 'tipo_cuenta_id', 'cuenta_contable', 'descripcion'], ['id', 'tipo_centro_id', 'categoria_id', 'tipo_cuenta_id', 'cuenta_contable', 'descripcion'],
@ -49,12 +49,12 @@ class CentroCosto extends Ideal\Repository
); );
return $model; return $model;
} }
public function edit(Define\Model $model, array $new_data): Model\CentroCosto public function edit(Define\Model $model, array $new_data): Model\Contabilidad\CentroCosto
{ {
return $this->update($model, ['tipo_centro_id', 'categoria_id', 'tipo_cuenta_id', 'cuenta_contable', 'descripcion'], $new_data); return $this->update($model, ['tipo_centro_id', 'categoria_id', 'tipo_cuenta_id', 'cuenta_contable', 'descripcion'], $new_data);
} }
public function fetchByDescripcion(string $descripcion): Model\CentroCosto public function fetchByDescripcion(string $descripcion): Model\Contabilidad\CentroCosto
{ {
$query = $this->connection->getQueryBuilder() $query = $this->connection->getQueryBuilder()
->select() ->select()

View File

@ -1,12 +1,12 @@
<?php <?php
namespace Incoviba\Repository; namespace Incoviba\Repository\Contabilidad;
use DateTimeImmutable; use DateTimeImmutable;
use Incoviba\Common\Define; use Incoviba\Common\Define;
use Incoviba\Common\Ideal; use Incoviba\Common\Ideal;
use Incoviba\Common\Implement; use Incoviba\Common\Implement;
use Incoviba\Repository;
use Incoviba\Model; use Incoviba\Model;
use Incoviba\Repository;
class Deposito extends Ideal\Repository class Deposito extends Ideal\Repository
{ {
@ -16,7 +16,7 @@ class Deposito extends Ideal\Repository
$this->setTable('depositos'); $this->setTable('depositos');
} }
public function create(?array $data = null): Model\Deposito public function create(?array $data = null): Model\Contabilidad\Deposito
{ {
$map = (new Implement\Repository\MapperParser(['id', 'capital', 'futuro'])) $map = (new Implement\Repository\MapperParser(['id', 'capital', 'futuro']))
->register('cuenta_id', (new Implement\Repository\Mapper()) ->register('cuenta_id', (new Implement\Repository\Mapper())
@ -26,9 +26,9 @@ class Deposito extends Ideal\Repository
})) }))
->register('inicio', new Implement\Repository\Mapper\DateTime('inicio')) ->register('inicio', new Implement\Repository\Mapper\DateTime('inicio'))
->register('termino', new Implement\Repository\Mapper\DateTime('termino')); ->register('termino', new Implement\Repository\Mapper\DateTime('termino'));
return $this->parseData(new Model\Deposito(), $data, $map); return $this->parseData(new Model\Contabilidad\Deposito(), $data, $map);
} }
public function save(Define\Model $model): Model\Deposito public function save(Define\Model $model): Model\Contabilidad\Deposito
{ {
$this->saveNew([ $this->saveNew([
'id', 'cuenta_id', 'capital', 'futuro', 'inicio', 'termino' 'id', 'cuenta_id', 'capital', 'futuro', 'inicio', 'termino'
@ -39,7 +39,7 @@ class Deposito extends Ideal\Repository
return $model; return $model;
} }
public function edit(Define\Model $model, array $new_data): Model\Deposito public function edit(Define\Model $model, array $new_data): Model\Contabilidad\Deposito
{ {
return $this->update($model, ['cuenta_id', 'capital', 'futuro', 'inicio', 'termino'], $new_data); return $this->update($model, ['cuenta_id', 'capital', 'futuro', 'inicio', 'termino'], $new_data);
} }

View File

@ -1,11 +1,12 @@
<?php <?php
namespace Incoviba\Repository; namespace Incoviba\Repository\Contabilidad;
use DateTimeInterface; use DateTimeInterface;
use Incoviba\Common\Define; use Incoviba\Common\Define;
use Incoviba\Common\Ideal; use Incoviba\Common\Ideal;
use Incoviba\Common\Implement; use Incoviba\Common\Implement;
use Incoviba\Model; use Incoviba\Model;
use Incoviba\Repository\Inmobiliaria;
class Movimiento extends Ideal\Repository class Movimiento extends Ideal\Repository
{ {
@ -15,7 +16,7 @@ class Movimiento extends Ideal\Repository
$this->setTable('movimientos'); $this->setTable('movimientos');
} }
public function create(?array $data = null): Model\Movimiento public function create(?array $data = null): Model\Contabilidad\Movimiento
{ {
$map = (new Implement\Repository\MapperParser(['cargo', 'abono', 'saldo', 'glosa', 'documento'])) $map = (new Implement\Repository\MapperParser(['cargo', 'abono', 'saldo', 'glosa', 'documento']))
->register('fecha', new Implement\Repository\Mapper\DateTime('fecha')) ->register('fecha', new Implement\Repository\Mapper\DateTime('fecha'))
@ -25,9 +26,9 @@ class Movimiento extends Ideal\Repository
return $this->cuentaRepository->fetchById($data['cuenta_id']); return $this->cuentaRepository->fetchById($data['cuenta_id']);
}) })
); );
return $this->parseData(new Model\Movimiento(), $data, $map); return $this->parseData(new Model\Contabilidad\Movimiento(), $data, $map);
} }
public function save(Define\Model $model): Model\Movimiento public function save(Define\Model $model): Model\Contabilidad\Movimiento
{ {
$model->id = $this->saveNew([ $model->id = $this->saveNew([
'cuenta_id', 'cuenta_id',
@ -48,7 +49,7 @@ class Movimiento extends Ideal\Repository
]); ]);
return $model; return $model;
} }
public function edit(Define\Model $model, array $new_data): Model\Movimiento public function edit(Define\Model $model, array $new_data): Model\Contabilidad\Movimiento
{ {
return $this->update($model, ['cuenta_id', 'fecha', 'glosa', 'documento', 'cargo', 'abono', 'saldo'], $new_data); return $this->update($model, ['cuenta_id', 'fecha', 'glosa', 'documento', 'cargo', 'abono', 'saldo'], $new_data);
} }
@ -61,7 +62,7 @@ class Movimiento extends Ideal\Repository
->where('cuenta_id = ? AND fecha = ?'); ->where('cuenta_id = ? AND fecha = ?');
return $this->fetchMany($query, [$cuenta_id, $fecha->format('Y-m-d')]); return $this->fetchMany($query, [$cuenta_id, $fecha->format('Y-m-d')]);
} }
public function fetchByCuentaAndFechaAndCargoAndAbonoAndSaldo(int $cuenta_id, DateTimeInterface $fecha, int $cargo, int $abono, int $saldo): Model\Movimiento public function fetchByCuentaAndFechaAndCargoAndAbonoAndSaldo(int $cuenta_id, DateTimeInterface $fecha, int $cargo, int $abono, int $saldo): Model\Contabilidad\Movimiento
{ {
$query = $this->connection->getQueryBuilder() $query = $this->connection->getQueryBuilder()
->select() ->select()

View File

@ -1,10 +1,11 @@
<?php <?php
namespace Incoviba\Repository; namespace Incoviba\Repository\Contabilidad;
use Incoviba\Common\Define; use Incoviba\Common\Define;
use Incoviba\Common\Ideal; use Incoviba\Common\Ideal;
use Incoviba\Common\Implement; use Incoviba\Common\Implement;
use Incoviba\Model; use Incoviba\Model;
use Incoviba\Repository\Inmobiliaria;
class Nubox extends Ideal\Repository class Nubox extends Ideal\Repository
{ {
@ -14,7 +15,7 @@ class Nubox extends Ideal\Repository
$this->setTable('inmobiliarias_nubox'); $this->setTable('inmobiliarias_nubox');
} }
public function create(?array $data = null): Model\Nubox public function create(?array $data = null): Model\Contabilidad\Nubox
{ {
$map = (new Implement\Repository\MapperParser(['usuario', 'alias'])) $map = (new Implement\Repository\MapperParser(['usuario', 'alias']))
->register('inmobiliaria_rut', (new Implement\Repository\Mapper()) ->register('inmobiliaria_rut', (new Implement\Repository\Mapper())
@ -24,9 +25,9 @@ class Nubox extends Ideal\Repository
})) }))
->register('contraseña', (new Implement\Repository\Mapper()) ->register('contraseña', (new Implement\Repository\Mapper())
->setProperty('password')); ->setProperty('password'));
return $this->parseData(new Model\Nubox(), $data, $map); return $this->parseData(new Model\Contabilidad\Nubox(), $data, $map);
} }
public function save(Define\Model $model): Model\Nubox public function save(Define\Model $model): Model\Contabilidad\Nubox
{ {
$this->saveNew( $this->saveNew(
['inmobiliaria_rut', 'alias', 'usuario', 'contraseña'], ['inmobiliaria_rut', 'alias', 'usuario', 'contraseña'],
@ -34,12 +35,12 @@ class Nubox extends Ideal\Repository
); );
return $model; return $model;
} }
public function edit(Define\Model $model, array $new_data): Model\Nubox public function edit(Define\Model $model, array $new_data): Model\Contabilidad\Nubox
{ {
return $this->update($model, ['inmobiliaria_rut', 'alias', 'usuario', 'contraseña'], $new_data); return $this->update($model, ['inmobiliaria_rut', 'alias', 'usuario', 'contraseña'], $new_data);
} }
public function fetchByInmobiliaria(int $inmobiliaria_rut): Model\Nubox public function fetchByInmobiliaria(int $inmobiliaria_rut): Model\Contabilidad\Nubox
{ {
$query = $this->connection->getQueryBuilder() $query = $this->connection->getQueryBuilder()
->select() ->select()

View File

@ -1,5 +1,5 @@
<?php <?php
namespace Incoviba\Repository; namespace Incoviba\Repository\Contabilidad;
use Incoviba\Common\Define; use Incoviba\Common\Define;
use Incoviba\Common\Ideal; use Incoviba\Common\Ideal;
@ -15,7 +15,7 @@ class PagoCentroCosto extends Ideal\Repository
$this->setTable('pagos_centros_costos'); $this->setTable('pagos_centros_costos');
} }
public function create(?array $data = null): Model\PagoCentroCosto public function create(?array $data = null): Model\Contabilidad\PagoCentroCosto
{ {
$map = (new Implement\Repository\MapperParser()) $map = (new Implement\Repository\MapperParser())
->register('pago_id', (new Implement\Repository\Mapper()) ->register('pago_id', (new Implement\Repository\Mapper())
@ -28,14 +28,14 @@ class PagoCentroCosto extends Ideal\Repository
->setFunction(function(array $data) { ->setFunction(function(array $data) {
return $this->centroCostoRepository->fetchById($data['centro_costo_id']); return $this->centroCostoRepository->fetchById($data['centro_costo_id']);
})); }));
return $this->parseData(new Model\PagoCentroCosto(), $data, $map); return $this->parseData(new Model\Contabilidad\PagoCentroCosto(), $data, $map);
} }
public function save(Define\Model $model): Model\PagoCentroCosto public function save(Define\Model $model): Model\Contabilidad\PagoCentroCosto
{ {
$model->id = $this->saveNew(['pago_id', 'centro_costo_id'], [$model->pago->id, $model->centroCosto->id]); $model->id = $this->saveNew(['pago_id', 'centro_costo_id'], [$model->pago->id, $model->centroCosto->id]);
return $model; return $model;
} }
public function edit(Define\Model $model, array $new_data): Model\PagoCentroCosto public function edit(Define\Model $model, array $new_data): Model\Contabilidad\PagoCentroCosto
{ {
return $this->update($model, ['pago_id', 'centro_costo_id'], $new_data); return $this->update($model, ['pago_id', 'centro_costo_id'], $new_data);
} }

View File

@ -1,8 +1,9 @@
<?php <?php
namespace Incoviba\Repository; namespace Incoviba\Repository\Contabilidad;
use Incoviba\Common\Define; use Incoviba\Common\Define;
use Incoviba\Model; use Incoviba\Model;
use Incoviba\Repository\Tipo;
class TipoCentro extends Tipo class TipoCentro extends Tipo
{ {
@ -14,6 +15,6 @@ class TipoCentro extends Tipo
protected function getBlank(): Define\Model protected function getBlank(): Define\Model
{ {
return new Model\TipoCentro(); return new Model\Contabilidad\TipoCentro();
} }
} }

View File

@ -9,7 +9,7 @@ use Incoviba\Repository;
class Inmobiliaria extends Ideal\Repository class Inmobiliaria extends Ideal\Repository
{ {
public function __construct(Define\Connection $connection, protected Repository\Banco $bancoRepository, protected Repository\Inmobiliaria\TipoSociedad $tipoSociedadRepository) public function __construct(Define\Connection $connection, protected Contabilidad\Banco $bancoRepository, protected Repository\Inmobiliaria\TipoSociedad $tipoSociedadRepository)
{ {
parent::__construct($connection); parent::__construct($connection);
$this->setTable('inmobiliaria'); $this->setTable('inmobiliaria');

View File

@ -3,16 +3,15 @@ namespace Incoviba\Repository\Inmobiliaria;
use Incoviba\Common\Define; use Incoviba\Common\Define;
use Incoviba\Common\Ideal; use Incoviba\Common\Ideal;
use Incoviba\Repository;
use Incoviba\Model;
use Incoviba\Common\Implement; use Incoviba\Common\Implement;
use PhpParser\Node\Expr\BinaryOp\Mod; use Incoviba\Model;
use Incoviba\Repository;
class Cuenta extends Ideal\Repository class Cuenta extends Ideal\Repository
{ {
public function __construct(Define\Connection $connection, public function __construct(Define\Connection $connection,
protected Repository\Inmobiliaria $inmobiliariaRepository, protected Repository\Inmobiliaria $inmobiliariaRepository,
protected Repository\Banco $bancoRepository) protected Repository\Contabilidad\Banco $bancoRepository)
{ {
parent::__construct($connection); parent::__construct($connection);
$this->setTable('cuenta'); $this->setTable('cuenta');

View File

@ -9,8 +9,8 @@ use Incoviba\Repository;
class Detalle extends Ideal\Repository class Detalle extends Ideal\Repository
{ {
public function __construct(Define\Connection $connection, protected Repository\Movimiento $movimientoRepository, public function __construct(Define\Connection $connection, protected Repository\Contabilidad\Movimiento $movimientoRepository,
protected Repository\CentroCosto $centroCostoRepository) protected Repository\Contabilidad\CentroCosto $centroCostoRepository)
{ {
parent::__construct($connection); parent::__construct($connection);
$this->setTable('movimientos_detalles'); $this->setTable('movimientos_detalles');

View File

@ -1,8 +1,6 @@
<?php <?php
namespace Incoviba\Repository\Venta; namespace Incoviba\Repository\Venta;
use PDO;
use DateTimeImmutable;
use Incoviba\Common\Define; use Incoviba\Common\Define;
use Incoviba\Common\Ideal; use Incoviba\Common\Ideal;
use Incoviba\Common\Implement; use Incoviba\Common\Implement;
@ -13,10 +11,10 @@ use Incoviba\Service;
class Cuota extends Ideal\Repository class Cuota extends Ideal\Repository
{ {
public function __construct( public function __construct(
Define\Connection $connection, Define\Connection $connection,
protected Pie $pieRepository, protected Pie $pieRepository,
protected Repository\Banco $bancoRepository, protected Repository\Contabilidad\Banco $bancoRepository,
protected Service\Venta\Pago $pagoService protected Service\Venta\Pago $pagoService
) )
{ {
parent::__construct($connection); parent::__construct($connection);

View File

@ -10,9 +10,9 @@ use Incoviba\Repository;
class Pago extends Ideal\Repository class Pago extends Ideal\Repository
{ {
public function __construct( public function __construct(
Define\Connection $connection, Define\Connection $connection,
protected Repository\Banco $bancoRepository, protected Repository\Contabilidad\Banco $bancoRepository,
protected TipoPago $tipoPagoRepository protected TipoPago $tipoPagoRepository
) )
{ {
parent::__construct($connection); parent::__construct($connection);

View File

@ -1,28 +1,27 @@
<?php <?php
namespace Incoviba\Service; namespace Incoviba\Service\Contabilidad;
use DateTimeInterface;
use DateTimeImmutable; use DateTimeImmutable;
use DateInterval; use DateTimeInterface;
use Psr\Http\Message\StreamFactoryInterface;
use Psr\Http\Message\UploadedFileInterface;
use Psr\Log\LoggerInterface;
use Incoviba\Common\Ideal\Service;
use Incoviba\Common\Define\Cartola\Banco; use Incoviba\Common\Define\Cartola\Banco;
use Incoviba\Common\Define\Contabilidad\Exporter; use Incoviba\Common\Define\Contabilidad\Exporter;
use Incoviba\Common\Ideal\Service;
use Incoviba\Common\Implement\Exception; use Incoviba\Common\Implement\Exception;
use Incoviba\Model; use Incoviba\Model;
use Incoviba\Repository; use Incoviba\Repository;
use Psr\Http\Message\StreamFactoryInterface;
use Psr\Http\Message\UploadedFileInterface;
use Psr\Log\LoggerInterface;
class Cartola extends Service class Cartola extends Service
{ {
public function __construct(LoggerInterface $logger, public function __construct(LoggerInterface $logger,
protected StreamFactoryInterface $streamFactory, protected Exporter $exporter, protected StreamFactoryInterface $streamFactory, protected Exporter $exporter,
protected Repository\Inmobiliaria $inmobiliariaRepository, protected Repository\Inmobiliaria $inmobiliariaRepository,
protected Repository\Inmobiliaria\Cuenta $cuentaRepository, protected Repository\Inmobiliaria\Cuenta $cuentaRepository,
protected Repository\Movimiento $movimientoRepository, protected Repository\Contabilidad\Movimiento $movimientoRepository,
protected Movimiento $movimientoService, protected Movimiento $movimientoService,
protected Repository\Cartola $cartolaRepository) { protected Repository\Contabilidad\Cartola $cartolaRepository) {
parent::__construct($logger); parent::__construct($logger);
} }
@ -32,11 +31,11 @@ class Cartola extends Service
$this->bancos[$name] = $banco; $this->bancos[$name] = $banco;
return $this; return $this;
} }
public function process(Model\Inmobiliaria $inmobiliaria, Model\Banco $banco, DateTimeInterface $mes, UploadedFileInterface $file): array public function process(Model\Inmobiliaria $inmobiliaria, Model\Contabilidad\Banco $banco, DateTimeInterface $mes, UploadedFileInterface $file): array
{ {
return $this->bancos[strtolower($banco->nombre)]->process($file); return $this->bancos[strtolower($banco->nombre)]->process($file);
} }
public function export(Model\Inmobiliaria $inmobiliaria, Model\Banco $banco, DateTimeInterface $mes, array $movimientos): string public function export(Model\Inmobiliaria $inmobiliaria, Model\Contabilidad\Banco $banco, DateTimeInterface $mes, array $movimientos): string
{ {
return $this->exporter->export($inmobiliaria, $banco, $mes, $movimientos); return $this->exporter->export($inmobiliaria, $banco, $mes, $movimientos);
} }
@ -93,13 +92,13 @@ class Cartola extends Service
return compact('cartola', 'movimientos'); return compact('cartola', 'movimientos');
} }
protected function getMovimientosDiarios(Model\Banco $banco, UploadedFileInterface $file): array protected function getMovimientosDiarios(Model\Contabilidad\Banco $banco, UploadedFileInterface $file): array
{ {
$movimientos = $this->bancos[strtolower($banco->nombre)]->process($file); $movimientos = $this->bancos[strtolower($banco->nombre)]->process($file);
return $this->bancos[strtolower($banco->nombre)]->processMovimientosDiarios($movimientos); return $this->bancos[strtolower($banco->nombre)]->processMovimientosDiarios($movimientos);
} }
protected array $groupedMovimientos = []; protected array $groupedMovimientos = [];
protected function groupMovimientoByDay(Model\Movimiento $movimiento): Cartola protected function groupMovimientoByDay(Model\Contabilidad\Movimiento $movimiento): Cartola
{ {
if (!isset($this->groupedMovimientos[$movimiento->fecha->getTimestamp()])) { if (!isset($this->groupedMovimientos[$movimiento->fecha->getTimestamp()])) {
$this->groupedMovimientos[$movimiento->fecha->getTimestamp()] = []; $this->groupedMovimientos[$movimiento->fecha->getTimestamp()] = [];
@ -107,7 +106,7 @@ class Cartola extends Service
$this->groupedMovimientos[$movimiento->fecha->getTimestamp()] []= $movimiento; $this->groupedMovimientos[$movimiento->fecha->getTimestamp()] []= $movimiento;
return $this; return $this;
} }
protected function buildCartola(Model\Inmobiliaria\Cuenta $cuenta, DateTimeInterface $fecha, array $data): Model\Cartola protected function buildCartola(Model\Inmobiliaria\Cuenta $cuenta, DateTimeInterface $fecha, array $data): Model\Contabilidad\Cartola
{ {
try { try {
return $this->cartolaRepository->fetchByCuentaAndFecha($cuenta->id, $fecha); return $this->cartolaRepository->fetchByCuentaAndFecha($cuenta->id, $fecha);
@ -118,7 +117,7 @@ class Cartola extends Service
return $this->cartolaRepository->save($cartola); return $this->cartolaRepository->save($cartola);
} }
} }
protected function buildMovimiento(Model\Inmobiliaria\Cuenta $cuenta, array $data): Model\Movimiento protected function buildMovimiento(Model\Inmobiliaria\Cuenta $cuenta, array $data): Model\Contabilidad\Movimiento
{ {
try { try {
return $this->movimientoRepository return $this->movimientoRepository

View File

@ -1,9 +1,9 @@
<?php <?php
namespace Incoviba\Service\Cartola; namespace Incoviba\Service\Contabilidad\Cartola;
use Psr\Http\Message\UploadedFileInterface;
use PhpOffice\PhpSpreadsheet;
use Incoviba\Common\Ideal\Cartola\Banco; use Incoviba\Common\Ideal\Cartola\Banco;
use PhpOffice\PhpSpreadsheet;
use Psr\Http\Message\UploadedFileInterface;
class BCI extends Banco class BCI extends Banco
{ {

View File

@ -1,10 +1,10 @@
<?php <?php
namespace Incoviba\Service\Cartola; namespace Incoviba\Service\Contabilidad\Cartola;
use DateTimeImmutable; use DateTimeImmutable;
use Psr\Http\Message\UploadedFileInterface;
use PhpOffice\PhpSpreadsheet;
use Incoviba\Common\Ideal\Cartola\Banco; use Incoviba\Common\Ideal\Cartola\Banco;
use PhpOffice\PhpSpreadsheet;
use Psr\Http\Message\UploadedFileInterface;
class Itau extends Banco class Itau extends Banco
{ {

View File

@ -1,10 +1,9 @@
<?php <?php
namespace Incoviba\Service\Cartola; namespace Incoviba\Service\Contabilidad\Cartola;
use DateTimeImmutable;
use Psr\Http\Message\UploadedFileInterface;
use PhpOffice\PhpSpreadsheet;
use Incoviba\Common\Ideal\Cartola\Banco; use Incoviba\Common\Ideal\Cartola\Banco;
use PhpOffice\PhpSpreadsheet;
use Psr\Http\Message\UploadedFileInterface;
class Santander extends Banco class Santander extends Banco
{ {

View File

@ -1,11 +1,11 @@
<?php <?php
namespace Incoviba\Service\Cartola; namespace Incoviba\Service\Contabilidad\Cartola;
use DOMDocument;
use DateTimeImmutable; use DateTimeImmutable;
use Psr\Http\Message\UploadedFileInterface; use DOMDocument;
use PhpOffice\PhpSpreadsheet;
use Incoviba\Common\Ideal\Cartola\Banco; use Incoviba\Common\Ideal\Cartola\Banco;
use PhpOffice\PhpSpreadsheet;
use Psr\Http\Message\UploadedFileInterface;
class Security extends Banco class Security extends Banco
{ {

View File

@ -10,9 +10,9 @@ use PhpOffice\PhpSpreadsheet;
class Nubox implements Exporter class Nubox implements Exporter
{ {
public function __construct(protected Repository\CentroCosto $centroCostoRepository, protected string $uploadFolder) {} public function __construct(protected Repository\Contabilidad\CentroCosto $centroCostoRepository, protected string $uploadFolder) {}
public function export(Model\Inmobiliaria $inmobiliaria, Model\Banco $banco, DateTimeInterface $mes, array $movimientos): string public function export(Model\Inmobiliaria $inmobiliaria, Model\Contabilidad\Banco $banco, DateTimeInterface $mes, array $movimientos): string
{ {
PhpSpreadsheet\Settings::setLocale('es-CL'); PhpSpreadsheet\Settings::setLocale('es-CL');
$workbook = new PhpSpreadsheet\Spreadsheet(); $workbook = new PhpSpreadsheet\Spreadsheet();

View File

@ -1,23 +1,23 @@
<?php <?php
namespace Incoviba\Service\Contabilidad\Informe; namespace Incoviba\Service\Contabilidad\Informe;
use DateTimeInterface;
use DateInterval; use DateInterval;
use Psr\Log\LoggerInterface; use DateTimeInterface;
use Incoviba\Common\Ideal; use Incoviba\Common\Ideal;
use Incoviba\Common\Implement; use Incoviba\Common\Implement;
use Incoviba\Model; use Incoviba\Model;
use Incoviba\Repository; use Incoviba\Repository;
use Incoviba\Service; use Incoviba\Service;
use Psr\Log\LoggerInterface;
class Tesoreria extends Ideal\Service class Tesoreria extends Ideal\Service
{ {
public function __construct(LoggerInterface $logger, public function __construct(LoggerInterface $logger,
protected Repository\Inmobiliaria $inmobiliariaRepository, protected Repository\Inmobiliaria $inmobiliariaRepository,
protected Service\Inmobiliaria\Cuenta $cuentaService, protected Service\Inmobiliaria\Cuenta $cuentaService,
protected Repository\Deposito $depositoRepository, protected Repository\Contabilidad\Deposito $depositoRepository,
protected Repository\Cartola $cartolaRepository, protected Repository\Contabilidad\Cartola $cartolaRepository,
protected Repository\Movimiento $movimientoRepository, protected Repository\Contabilidad\Movimiento $movimientoRepository,
protected Service\Contabilidad\Informe\Tesoreria\Excel $excelService, protected Service\Contabilidad\Informe\Tesoreria\Excel $excelService,
protected Service\Contabilidad\Informe\Tesoreria\PDF $pdfService) protected Service\Contabilidad\Informe\Tesoreria\PDF $pdfService)
{ {
@ -241,11 +241,11 @@ class Tesoreria extends Ideal\Service
try { try {
$movimientos = $this->movimientoRepository->fetchByCuentaAndFecha($cuenta->id, $fecha); $movimientos = $this->movimientoRepository->fetchByCuentaAndFecha($cuenta->id, $fecha);
$this->addMovimientos(self::INGRESOS, $this->addMovimientos(self::INGRESOS,
array_filter($movimientos, function(Model\Movimiento $movimiento) { array_filter($movimientos, function(Model\Contabilidad\Movimiento $movimiento) {
return $movimiento->abono > 0; return $movimiento->abono > 0;
})); }));
$this->addMovimientos(self::EGRESOS, $this->addMovimientos(self::EGRESOS,
array_filter($movimientos, function(Model\Movimiento $movimiento) { array_filter($movimientos, function(Model\Contabilidad\Movimiento $movimiento) {
return $movimiento->cargo > 0; return $movimiento->cargo > 0;
})); }));
} catch (Implement\Exception\EmptyResult) {} } catch (Implement\Exception\EmptyResult) {}

View File

@ -1,26 +1,26 @@
<?php <?php
namespace Incoviba\Service; namespace Incoviba\Service\Contabilidad;
use DateTimeInterface;
use Psr\Log\LoggerInterface;
use Incoviba\Common\Ideal\Service; use Incoviba\Common\Ideal\Service;
use Incoviba\Common\Implement; use Incoviba\Common\Implement;
use Incoviba\Repository;
use Incoviba\Model; use Incoviba\Model;
use Incoviba\Repository;
use Psr\Log\LoggerInterface;
class Movimiento extends Service class Movimiento extends Service
{ {
public function __construct(LoggerInterface $logger, protected Repository\Movimiento $movimientoRepository, public function __construct(LoggerInterface $logger,
protected Repository\Contabilidad\Movimiento $movimientoRepository,
protected Repository\Movimiento\Detalle $detalleRepository) protected Repository\Movimiento\Detalle $detalleRepository)
{ {
parent::__construct($logger); parent::__construct($logger);
} }
public function getById(int $movimiento_id): Model\Movimiento public function getById(int $movimiento_id): Model\Contabilidad\Movimiento
{ {
return $this->process($this->movimientoRepository->fetchById($movimiento_id)); return $this->process($this->movimientoRepository->fetchById($movimiento_id));
} }
public function setDetalles(Model\Movimiento $movimiento, array $data): Model\Movimiento public function setDetalles(Model\Contabilidad\Movimiento $movimiento, array $data): Model\Contabilidad\Movimiento
{ {
try { try {
$detalles = $this->detalleRepository->fetchByMovimiento($movimiento->id); $detalles = $this->detalleRepository->fetchByMovimiento($movimiento->id);
@ -33,7 +33,7 @@ class Movimiento extends Service
return $movimiento; return $movimiento;
} }
public function process(Model\Movimiento $movimiento): Model\Movimiento public function process(Model\Contabilidad\Movimiento $movimiento): Model\Contabilidad\Movimiento
{ {
$movimiento->addFactory('detalles', (new Implement\Repository\Factory())->setCallable(function(int $movimiento_id) { $movimiento->addFactory('detalles', (new Implement\Repository\Factory())->setCallable(function(int $movimiento_id) {
return $this->detalleRepository->fetchByMovimiento($movimiento_id); return $this->detalleRepository->fetchByMovimiento($movimiento_id);

View File

@ -2,24 +2,24 @@
namespace Incoviba\Service\Contabilidad; namespace Incoviba\Service\Contabilidad;
use DateTimeInterface; use DateTimeInterface;
use Incoviba\Common\Ideal;
use Incoviba\Common\Implement\Exception;
use Incoviba\Repository;
use Incoviba\Service;
use Psr\Http\Client\ClientInterface; use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestFactoryInterface; use Psr\Http\Message\RequestFactoryInterface;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\StreamInterface; use Psr\Http\Message\StreamInterface;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Incoviba\Common\Implement\Exception;
use Incoviba\Repository;
use Incoviba\Service;
use Incoviba\Common\Ideal;
class Nubox extends Ideal\Service class Nubox extends Ideal\Service
{ {
public function __construct(protected LoggerInterface $logger, public function __construct(protected LoggerInterface $logger,
protected Repository\Nubox $nuboxRepository, protected Repository\Contabilidad\Nubox $nuboxRepository,
protected Service\Redis $redisService, protected Service\Redis $redisService,
protected ClientInterface $client, protected ClientInterface $client,
protected RequestFactoryInterface $requestFactory, protected RequestFactoryInterface $requestFactory,
protected string $api_url) protected string $api_url)
{ {
parent::__construct($logger); parent::__construct($logger);
} }