Restructura contabilidad
This commit is contained in:
34
app/src/Repository/Contabilidad/Banco.php
Normal file
34
app/src/Repository/Contabilidad/Banco.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
namespace Incoviba\Repository\Contabilidad;
|
||||
|
||||
use Incoviba\Common\Define;
|
||||
use Incoviba\Common\Ideal;
|
||||
use Incoviba\Common\Implement;
|
||||
use Incoviba\Model;
|
||||
|
||||
class Banco extends Ideal\Repository
|
||||
{
|
||||
public function __construct(Define\Connection $connection)
|
||||
{
|
||||
parent::__construct($connection);
|
||||
$this->setTable('banco');
|
||||
}
|
||||
|
||||
public function create(?array $data = null): Define\Model
|
||||
{
|
||||
$map = new Implement\Repository\MapperParser(['nombre']);
|
||||
return $this->parseData(new Model\Contabilidad\Banco(), $data, $map);
|
||||
}
|
||||
public function save(Define\Model $model): Define\Model
|
||||
{
|
||||
$model->id = $this->saveNew(
|
||||
['nombre'],
|
||||
[$model->nombre]
|
||||
);
|
||||
return $model;
|
||||
}
|
||||
public function edit(Define\Model $model, array $new_data): Define\Model
|
||||
{
|
||||
return $this->update($model, ['nombre'], $new_data);
|
||||
}
|
||||
}
|
78
app/src/Repository/Contabilidad/Cartola.php
Normal file
78
app/src/Repository/Contabilidad/Cartola.php
Normal file
@ -0,0 +1,78 @@
|
||||
<?php
|
||||
namespace Incoviba\Repository\Contabilidad;
|
||||
|
||||
use DateTimeInterface;
|
||||
use Incoviba\Common\Define;
|
||||
use Incoviba\Common\Ideal;
|
||||
use Incoviba\Common\Implement;
|
||||
use Incoviba\Model;
|
||||
use Incoviba\Repository;
|
||||
|
||||
class Cartola extends Ideal\Repository
|
||||
{
|
||||
public function __construct(Define\Connection $connection, protected Repository\Inmobiliaria\Cuenta $cuentaRepository)
|
||||
{
|
||||
parent::__construct($connection);
|
||||
$this->setTable('cartolas');
|
||||
}
|
||||
|
||||
public function create(?array $data = null): Model\Contabilidad\Cartola
|
||||
{
|
||||
$map = (new Implement\Repository\MapperParser(['cargos', 'abonos', 'saldo']))
|
||||
->register('fecha', new Implement\Repository\Mapper\DateTime('fecha'))
|
||||
->register('cuenta_id', (new Implement\Repository\Mapper())
|
||||
->setProperty('cuenta')
|
||||
->setFunction(function($data) {
|
||||
return $this->cuentaRepository->fetchById($data['cuenta_id']);
|
||||
}));
|
||||
return $this->parseData(new Model\Contabilidad\Cartola(), $data, $map);
|
||||
}
|
||||
public function save(Define\Model $model): Model\Contabilidad\Cartola
|
||||
{
|
||||
$model->id = $this->saveNew([
|
||||
'cuenta_id',
|
||||
'fecha',
|
||||
'cargos',
|
||||
'abonos',
|
||||
'saldo'
|
||||
], [
|
||||
$model->cuenta->id,
|
||||
$model->fecha->format('Y-m-d'),
|
||||
$model->cargos,
|
||||
$model->abonos,
|
||||
$model->saldo
|
||||
]);
|
||||
return $model;
|
||||
}
|
||||
public function edit(Define\Model $model, array $new_data): Model\Contabilidad\Cartola
|
||||
{
|
||||
return $this->update($model, ['cuenta_id', 'fecha', 'cargos', 'abonos', 'saldo'], $new_data);
|
||||
}
|
||||
|
||||
public function fetchByFecha(DateTimeInterface $fecha): array
|
||||
{
|
||||
$query = $this->connection->getQueryBuilder()
|
||||
->select()
|
||||
->from($this->getTable())
|
||||
->where('fecha = ?');
|
||||
return $this->fetchMany($query, [$fecha->format('Y-m-d')]);
|
||||
}
|
||||
public function fetchByCuentaAndFecha(int $cuenta_id, DateTimeInterface $fecha): Model\Contabilidad\Cartola
|
||||
{
|
||||
$query = $this->connection->getQueryBuilder()
|
||||
->select()
|
||||
->from($this->getTable())
|
||||
->where('cuenta_id = ? AND fecha = ?');
|
||||
return $this->fetchOne($query, [$cuenta_id, $fecha->format('Y-m-d')]);
|
||||
}
|
||||
public function fetchLastByCuentaAndFecha(int $cuenta_id, DateTimeInterface $fecha): Model\Contabilidad\Cartola
|
||||
{
|
||||
$query = $this->connection->getQueryBuilder()
|
||||
->select()
|
||||
->from($this->getTable())
|
||||
->where('cuenta_id = ? AND fecha <= ?')
|
||||
->order('fecha DESC')
|
||||
->limit(1);
|
||||
return $this->fetchOne($query, [$cuenta_id, $fecha->format('Y-m-d')]);
|
||||
}
|
||||
}
|
20
app/src/Repository/Contabilidad/CategoriaCentro.php
Normal file
20
app/src/Repository/Contabilidad/CategoriaCentro.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
namespace Incoviba\Repository\Contabilidad;
|
||||
|
||||
use Incoviba\Common\Define;
|
||||
use Incoviba\Model;
|
||||
use Incoviba\Repository\Tipo;
|
||||
|
||||
class CategoriaCentro extends Tipo
|
||||
{
|
||||
public function __construct(Define\Connection $connection)
|
||||
{
|
||||
parent::__construct($connection);
|
||||
$this->setTable('categorias_centros_costos');
|
||||
}
|
||||
|
||||
protected function getBlank(): Define\Model
|
||||
{
|
||||
return new Model\Contabilidad\CategoriaCentro();
|
||||
}
|
||||
}
|
81
app/src/Repository/Contabilidad/CentroCosto.php
Normal file
81
app/src/Repository/Contabilidad/CentroCosto.php
Normal file
@ -0,0 +1,81 @@
|
||||
<?php
|
||||
namespace Incoviba\Repository\Contabilidad;
|
||||
|
||||
use Incoviba\Common\Define;
|
||||
use Incoviba\Common\Ideal;
|
||||
use Incoviba\Common\Implement\Repository\Mapper;
|
||||
use Incoviba\Common\Implement\Repository\MapperParser;
|
||||
use Incoviba\Model;
|
||||
use Incoviba\Repository\TipoCuenta;
|
||||
|
||||
class CentroCosto extends Ideal\Repository
|
||||
{
|
||||
public function __construct(Define\Connection $connection, protected TipoCentro $tipoCentroRepository,
|
||||
protected CategoriaCentro $categoriaCentroRepository,
|
||||
protected TipoCuenta $tipoCuentaRepository)
|
||||
{
|
||||
parent::__construct($connection);
|
||||
$this->setTable('centros_costos');
|
||||
}
|
||||
|
||||
public function create(?array $data = null): Model\Contabilidad\CentroCosto
|
||||
{
|
||||
$map = (new MapperParser(['descripcion']))
|
||||
->register('tipo_centro_id', (new Mapper())
|
||||
->setProperty('tipoCentro')
|
||||
->setFunction(function(array $data) {
|
||||
return $this->tipoCentroRepository->fetchById($data['tipo_centro_id']);
|
||||
}))
|
||||
->register('categoria_id', (new Mapper())
|
||||
->setProperty('categoria')
|
||||
->setFunction(function(array $data) {
|
||||
return $this->categoriaCentroRepository->fetchById($data['categoria_id']);
|
||||
}))
|
||||
->register('tipo_cuenta_id', (new Mapper())
|
||||
->setProperty('tipoCuenta')
|
||||
->setFunction(function(array $data) {
|
||||
return $this->tipoCuentaRepository->fetchById($data['tipo_cuenta_id']);
|
||||
})
|
||||
->setDefault(null))
|
||||
->register('cuenta_contable', (new Mapper())
|
||||
->setProperty('cuentaContable'));
|
||||
return $this->parseData(new Model\Contabilidad\CentroCosto(), $data, $map);
|
||||
}
|
||||
public function save(Define\Model $model): Model\Contabilidad\CentroCosto
|
||||
{
|
||||
$this->saveNew(
|
||||
['id', 'tipo_centro_id', 'categoria_id', 'tipo_cuenta_id', 'cuenta_contable', 'descripcion'],
|
||||
[$model->id, $model->tipoCentro->id, $model->categoria->id, $model->tipoCuenta?->id, $model->cuentaContable, $model->descripcion]
|
||||
);
|
||||
return $model;
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
public function fetchByDescripcion(string $descripcion): Model\Contabilidad\CentroCosto
|
||||
{
|
||||
$query = $this->connection->getQueryBuilder()
|
||||
->select()
|
||||
->from($this->getTable())
|
||||
->where('descripcion LIKE ?');
|
||||
return $this->fetchOne($query, [$descripcion]);
|
||||
}
|
||||
public function fetchByTipoCuenta(string $tipo_cuenta): array
|
||||
{
|
||||
$query = $this->connection->getQueryBuilder()
|
||||
->select()
|
||||
->from($this->getTable())
|
||||
->where('tipo_cuenta_id LIKE ?');
|
||||
return $this->fetchMany($query, [$tipo_cuenta]);
|
||||
}
|
||||
public function fetchByCategoria(string $categoria): array
|
||||
{
|
||||
$query = $this->connection->getQueryBuilder()
|
||||
->select()
|
||||
->from($this->getTable())
|
||||
->where('categoria_id LIKE ?');
|
||||
return $this->fetchMany($query, [$categoria]);
|
||||
}
|
||||
}
|
64
app/src/Repository/Contabilidad/Deposito.php
Normal file
64
app/src/Repository/Contabilidad/Deposito.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
namespace Incoviba\Repository\Contabilidad;
|
||||
|
||||
use DateTimeImmutable;
|
||||
use Incoviba\Common\Define;
|
||||
use Incoviba\Common\Ideal;
|
||||
use Incoviba\Common\Implement;
|
||||
use Incoviba\Model;
|
||||
use Incoviba\Repository;
|
||||
|
||||
class Deposito extends Ideal\Repository
|
||||
{
|
||||
public function __construct(Define\Connection $connection, protected Repository\Inmobiliaria\Cuenta $cuentaRepository)
|
||||
{
|
||||
parent::__construct($connection);
|
||||
$this->setTable('depositos');
|
||||
}
|
||||
|
||||
public function create(?array $data = null): Model\Contabilidad\Deposito
|
||||
{
|
||||
$map = (new Implement\Repository\MapperParser(['id', 'capital', 'futuro']))
|
||||
->register('cuenta_id', (new Implement\Repository\Mapper())
|
||||
->setProperty('cuenta')
|
||||
->setFunction(function(array $data) {
|
||||
return $this->cuentaRepository->fetchById($data['cuenta_id']);
|
||||
}))
|
||||
->register('inicio', new Implement\Repository\Mapper\DateTime('inicio'))
|
||||
->register('termino', new Implement\Repository\Mapper\DateTime('termino'));
|
||||
return $this->parseData(new Model\Contabilidad\Deposito(), $data, $map);
|
||||
}
|
||||
public function save(Define\Model $model): Model\Contabilidad\Deposito
|
||||
{
|
||||
$this->saveNew([
|
||||
'id', 'cuenta_id', 'capital', 'futuro', 'inicio', 'termino'
|
||||
], [
|
||||
$model->id, $model->cuenta->id, $model->capital, $model->futuro,
|
||||
$model->inicio->format('Y-m-d'), $model->termino->format('Y-m-d')
|
||||
]);
|
||||
return $model;
|
||||
}
|
||||
|
||||
public function edit(Define\Model $model, array $new_data): Model\Contabilidad\Deposito
|
||||
{
|
||||
return $this->update($model, ['cuenta_id', 'capital', 'futuro', 'inicio', 'termino'], $new_data);
|
||||
}
|
||||
|
||||
public function fetchByCuenta(int $cuenta_id): array
|
||||
{
|
||||
$query = $this->connection->getQueryBuilder()
|
||||
->select()
|
||||
->from($this->getTable())
|
||||
->where('cuenta_id = ?');
|
||||
return $this->fetchMany($query, [$cuenta_id]);
|
||||
}
|
||||
public function fetchAllActive(): array
|
||||
{
|
||||
$fecha = new DateTimeImmutable();
|
||||
$query = $this->connection->getQueryBuilder()
|
||||
->select()
|
||||
->from($this->getTable())
|
||||
->where('inicio <= ? AND termino >= ?');
|
||||
return $this->fetchMany($query, [$fecha->format('Y-m-d'), $fecha->format('Y-m-d')]);
|
||||
}
|
||||
}
|
73
app/src/Repository/Contabilidad/Movimiento.php
Normal file
73
app/src/Repository/Contabilidad/Movimiento.php
Normal file
@ -0,0 +1,73 @@
|
||||
<?php
|
||||
namespace Incoviba\Repository\Contabilidad;
|
||||
|
||||
use DateTimeInterface;
|
||||
use Incoviba\Common\Define;
|
||||
use Incoviba\Common\Ideal;
|
||||
use Incoviba\Common\Implement;
|
||||
use Incoviba\Model;
|
||||
use Incoviba\Repository\Inmobiliaria;
|
||||
|
||||
class Movimiento extends Ideal\Repository
|
||||
{
|
||||
public function __construct(Define\Connection $connection, protected Inmobiliaria\Cuenta $cuentaRepository)
|
||||
{
|
||||
parent::__construct($connection);
|
||||
$this->setTable('movimientos');
|
||||
}
|
||||
|
||||
public function create(?array $data = null): Model\Contabilidad\Movimiento
|
||||
{
|
||||
$map = (new Implement\Repository\MapperParser(['cargo', 'abono', 'saldo', 'glosa', 'documento']))
|
||||
->register('fecha', new Implement\Repository\Mapper\DateTime('fecha'))
|
||||
->register('cuenta_id', (new Implement\Repository\Mapper())
|
||||
->setProperty('cuenta')
|
||||
->setFunction(function($data) {
|
||||
return $this->cuentaRepository->fetchById($data['cuenta_id']);
|
||||
})
|
||||
);
|
||||
return $this->parseData(new Model\Contabilidad\Movimiento(), $data, $map);
|
||||
}
|
||||
public function save(Define\Model $model): Model\Contabilidad\Movimiento
|
||||
{
|
||||
$model->id = $this->saveNew([
|
||||
'cuenta_id',
|
||||
'fecha',
|
||||
'glosa',
|
||||
'documento',
|
||||
'cargo',
|
||||
'abono',
|
||||
'saldo'
|
||||
], [
|
||||
$model->cuenta->id,
|
||||
$model->fecha->format('Y-m-d'),
|
||||
$model->glosa,
|
||||
$model->documento,
|
||||
$model->cargo,
|
||||
$model->abono,
|
||||
$model->saldo
|
||||
]);
|
||||
return $model;
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
public function fetchByCuentaAndFecha(int $cuenta_id, DateTimeInterface $fecha): array
|
||||
{
|
||||
$query = $this->connection->getQueryBuilder()
|
||||
->select()
|
||||
->from($this->getTable())
|
||||
->where('cuenta_id = ? AND fecha = ?');
|
||||
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\Contabilidad\Movimiento
|
||||
{
|
||||
$query = $this->connection->getQueryBuilder()
|
||||
->select()
|
||||
->from($this->getTable())
|
||||
->where('cuenta_id = ? AND fecha = ? AND cargo = ? AND abono = ? AND saldo = ?');
|
||||
return $this->fetchOne($query, [$cuenta_id, $fecha->format('Y-m-d'), $cargo, $abono, $saldo]);
|
||||
}
|
||||
}
|
56
app/src/Repository/Contabilidad/Nubox.php
Normal file
56
app/src/Repository/Contabilidad/Nubox.php
Normal file
@ -0,0 +1,56 @@
|
||||
<?php
|
||||
namespace Incoviba\Repository\Contabilidad;
|
||||
|
||||
use Incoviba\Common\Define;
|
||||
use Incoviba\Common\Ideal;
|
||||
use Incoviba\Common\Implement;
|
||||
use Incoviba\Model;
|
||||
use Incoviba\Repository\Inmobiliaria;
|
||||
|
||||
class Nubox extends Ideal\Repository
|
||||
{
|
||||
public function __construct(Define\Connection $connection, protected Inmobiliaria $inmobiliariaRepository)
|
||||
{
|
||||
parent::__construct($connection);
|
||||
$this->setTable('inmobiliarias_nubox');
|
||||
}
|
||||
|
||||
public function create(?array $data = null): Model\Contabilidad\Nubox
|
||||
{
|
||||
$map = (new Implement\Repository\MapperParser(['usuario', 'alias']))
|
||||
->register('inmobiliaria_rut', (new Implement\Repository\Mapper())
|
||||
->setProperty('inmobiliaria')
|
||||
->setFunction(function(array $data) {
|
||||
return $this->inmobiliariaRepository->fetchById($data['inmobiliaria_rut']);
|
||||
}))
|
||||
->register('contraseña', (new Implement\Repository\Mapper())
|
||||
->setProperty('password'));
|
||||
return $this->parseData(new Model\Contabilidad\Nubox(), $data, $map);
|
||||
}
|
||||
public function save(Define\Model $model): Model\Contabilidad\Nubox
|
||||
{
|
||||
$this->saveNew(
|
||||
['inmobiliaria_rut', 'alias', 'usuario', 'contraseña'],
|
||||
[$model->inmobiliaria->rut, $model->alias, $model->usuario, $model->password]
|
||||
);
|
||||
return $model;
|
||||
}
|
||||
public function edit(Define\Model $model, array $new_data): Model\Contabilidad\Nubox
|
||||
{
|
||||
return $this->update($model, ['inmobiliaria_rut', 'alias', 'usuario', 'contraseña'], $new_data);
|
||||
}
|
||||
|
||||
public function fetchByInmobiliaria(int $inmobiliaria_rut): Model\Contabilidad\Nubox
|
||||
{
|
||||
$query = $this->connection->getQueryBuilder()
|
||||
->select()
|
||||
->from($this->getTable())
|
||||
->where('inmobiliaria_rut = ?');
|
||||
return $this->fetchOne($query, [$inmobiliaria_rut]);
|
||||
}
|
||||
|
||||
protected function getKey(): string
|
||||
{
|
||||
return 'inmobiliaria_rut';
|
||||
}
|
||||
}
|
42
app/src/Repository/Contabilidad/PagoCentroCosto.php
Normal file
42
app/src/Repository/Contabilidad/PagoCentroCosto.php
Normal file
@ -0,0 +1,42 @@
|
||||
<?php
|
||||
namespace Incoviba\Repository\Contabilidad;
|
||||
|
||||
use Incoviba\Common\Define;
|
||||
use Incoviba\Common\Ideal;
|
||||
use Incoviba\Common\Implement;
|
||||
use Incoviba\Model;
|
||||
use Incoviba\Repository;
|
||||
|
||||
class PagoCentroCosto extends Ideal\Repository
|
||||
{
|
||||
public function __construct(Define\Connection $connection, protected Repository\Venta\Pago $pagoRepository, protected CentroCosto $centroCostoRepository)
|
||||
{
|
||||
parent::__construct($connection);
|
||||
$this->setTable('pagos_centros_costos');
|
||||
}
|
||||
|
||||
public function create(?array $data = null): Model\Contabilidad\PagoCentroCosto
|
||||
{
|
||||
$map = (new Implement\Repository\MapperParser())
|
||||
->register('pago_id', (new Implement\Repository\Mapper())
|
||||
->setProperty('pago')
|
||||
->setFunction(function(array $data) {
|
||||
return $this->pagoRepository->fetchById($data['pago_id']);
|
||||
}))
|
||||
->register('centro_costo_id', (new Implement\Repository\Mapper())
|
||||
->setProperty('centroCosto')
|
||||
->setFunction(function(array $data) {
|
||||
return $this->centroCostoRepository->fetchById($data['centro_costo_id']);
|
||||
}));
|
||||
return $this->parseData(new Model\Contabilidad\PagoCentroCosto(), $data, $map);
|
||||
}
|
||||
public function save(Define\Model $model): Model\Contabilidad\PagoCentroCosto
|
||||
{
|
||||
$model->id = $this->saveNew(['pago_id', 'centro_costo_id'], [$model->pago->id, $model->centroCosto->id]);
|
||||
return $model;
|
||||
}
|
||||
public function edit(Define\Model $model, array $new_data): Model\Contabilidad\PagoCentroCosto
|
||||
{
|
||||
return $this->update($model, ['pago_id', 'centro_costo_id'], $new_data);
|
||||
}
|
||||
}
|
20
app/src/Repository/Contabilidad/TipoCentro.php
Normal file
20
app/src/Repository/Contabilidad/TipoCentro.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
namespace Incoviba\Repository\Contabilidad;
|
||||
|
||||
use Incoviba\Common\Define;
|
||||
use Incoviba\Model;
|
||||
use Incoviba\Repository\Tipo;
|
||||
|
||||
class TipoCentro extends Tipo
|
||||
{
|
||||
public function __construct(Define\Connection $connection)
|
||||
{
|
||||
parent::__construct($connection);
|
||||
$this->setTable('tipos_centros_costos');
|
||||
}
|
||||
|
||||
protected function getBlank(): Define\Model
|
||||
{
|
||||
return new Model\Contabilidad\TipoCentro();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user