diff --git a/app/common/Define/Connection.php b/app/common/Define/Connection.php
index a35af54..5b31ad1 100644
--- a/app/common/Define/Connection.php
+++ b/app/common/Define/Connection.php
@@ -3,13 +3,42 @@ namespace Incoviba\Common\Define;
use PDO;
use PDOStatement;
+use PDOException;
interface Connection
{
+ /**
+ * @return Connection
+ * @throws PDOException
+ */
public function connect(): Connection;
+
+ /**
+ * @param string $query
+ * @return PDOStatement
+ * @throws PDOException
+ */
public function query(string $query): PDOStatement;
+
+ /**
+ * @param string $query
+ * @return PDOStatement
+ * @throws PDOException
+ */
public function prepare(string $query): PDOStatement;
+
+ /**
+ * @param string $query
+ * @param array|null $data
+ * @return PDOStatement
+ * @throws PDOException
+ */
public function execute(string $query, ?array $data = null): PDOStatement;
+
+ /**
+ * @return PDO
+ * @throws PDOException
+ */
public function getPDO(): PDO;
public function getQueryBuilder(): Query\Builder;
}
diff --git a/app/common/Define/Money/Provider.php b/app/common/Define/Money/Provider.php
index f91e079..7680407 100644
--- a/app/common/Define/Money/Provider.php
+++ b/app/common/Define/Money/Provider.php
@@ -2,8 +2,15 @@
namespace Incoviba\Common\Define\Money;
use DateTimeInterface;
+use Incoviba\Common\Implement\Exception\EmptyResponse;
interface Provider
{
+ /**
+ * @param string $money_symbol
+ * @param DateTimeInterface $dateTime
+ * @return float
+ * @throws EmptyResponse
+ */
public function get(string $money_symbol, DateTimeInterface $dateTime): float;
}
diff --git a/app/common/Define/Repository.php b/app/common/Define/Repository.php
index e62d24b..8520f88 100644
--- a/app/common/Define/Repository.php
+++ b/app/common/Define/Repository.php
@@ -1,11 +1,42 @@
setDefault($model, $property);
}
+
+ /**
+ * @param Define\Model $model
+ * @param string $property
+ * @return void
+ */
protected function setDefault(Define\Model &$model, string $property): void
{
- $prop = new ReflectionProperty($model, $property);
+ try {
+ $prop = new ReflectionProperty($model, $property);
+ } catch (ReflectionException) {
+ $model->{$property} = null;
+ return;
+ }
$type = $prop->getType()->getName();
$value = match ($type) {
'int' => 0,
@@ -128,6 +141,13 @@ abstract class Repository implements Define\Repository
};
$model->{$property} = $value;
}
+
+ /**
+ * @param array $columns
+ * @param array $values
+ * @return int
+ * @throws PDOException
+ */
protected function saveNew(array $columns, array $values): int
{
$query = $this->connection->getQueryBuilder()
@@ -138,6 +158,14 @@ abstract class Repository implements Define\Repository
$this->connection->execute($query, $values);
return $this->connection->getPDO()->lastInsertId();
}
+
+ /**
+ * @param Define\Model $model
+ * @param array $columns
+ * @param array $data
+ * @return Define\Model
+ * @throws EmptyResult
+ */
protected function update(Define\Model $model, array $columns, array $data): Define\Model
{
$changes = [];
@@ -158,30 +186,59 @@ abstract class Repository implements Define\Repository
->set($columns_string)
->where("{$this->getKey()} = ?");
$values []= $this->getIndex($model);
- $this->connection->execute($query, $values);
+ try {
+ $this->connection->execute($query, $values);
+ } catch (PDOException $exception) {
+ throw new EmptyResult($query, $exception);
+ }
return $this->fetchById($this->getIndex($model));
}
+
+ /**
+ * @param string $query
+ * @param array|null $data
+ * @return Define\Model
+ * @throws EmptyResult
+ */
protected function fetchOne(string $query, ?array $data = null): Define\Model
{
- $result = $this->connection->execute($query, $data)->fetch(PDO::FETCH_ASSOC);
- if ($result === false) {
- throw new EmptyResult($query);
+ try {
+ $result = $this->connection->execute($query, $data)->fetch(PDO::FETCH_ASSOC);
+ } catch (PDOException $exception) {
+ throw new EmptyResult($query, $exception);
+
}
return $this->load($result);
}
+
+ /**
+ * @param string $query
+ * @param array|null $data
+ * @return array
+ * @throws EmptyResult
+ */
protected function fetchMany(string $query, ?array $data = null): array
{
- $results = $this->connection->execute($query, $data)->fetchAll(PDO::FETCH_ASSOC);
- if ($results === false) {
- throw new EmptyResult($query);
+ try {
+ $results = $this->connection->execute($query, $data)->fetchAll(PDO::FETCH_ASSOC);
+ } catch (PDOException $exception) {
+ throw new EmptyResult($query, $exception);
}
return array_map([$this, 'load'], $results);
}
+
+ /**
+ * @param string $query
+ * @param array|null $data
+ * @return array
+ * @throws EmptyResult
+ */
protected function fetchAsArray(string $query, ?array $data = null): array
{
- $results = $this->connection->execute($query, $data)->fetchAll(PDO::FETCH_ASSOC);
- if ($results === false) {
- throw new EmptyResult($query);
+ try {
+ $results = $this->connection->execute($query, $data)->fetchAll(PDO::FETCH_ASSOC);
+ } catch (PDOException $exception) {
+ throw new EmptyResult($query, $exception);
}
return $results;
}
diff --git a/app/common/Implement/Connection.php b/app/common/Implement/Connection.php
index 761151a..36c1512 100644
--- a/app/common/Implement/Connection.php
+++ b/app/common/Implement/Connection.php
@@ -22,6 +22,7 @@ class Connection implements Define\Connection
}
return $this;
}
+
public function getPDO(): PDO
{
$this->connect();
diff --git a/app/resources/views/ventas/facturacion/show/unidad.blade.php b/app/resources/views/ventas/facturacion/show/unidad.blade.php
index e2aa9b6..76c0d60 100644
--- a/app/resources/views/ventas/facturacion/show/unidad.blade.php
+++ b/app/resources/views/ventas/facturacion/show/unidad.blade.php
@@ -29,6 +29,7 @@
}
return response.json().then(json => {
if (!json.edited) {
+ alert('No se pudo editar la unidad.')
return
}
this.props.valor = parseFloat(json.input.valor)
@@ -68,8 +69,7 @@
return
}
this.update().precio(newValue).then(() => {
- facturas.venta.update().totalUnidades()
- facturas.draw().facturas()
+ window.location.reload()
})
})
},
diff --git a/app/resources/views/ventas/show/escritura.blade.php b/app/resources/views/ventas/show/escritura.blade.php
index 7e2aade..b627919 100644
--- a/app/resources/views/ventas/show/escritura.blade.php
+++ b/app/resources/views/ventas/show/escritura.blade.php
@@ -18,8 +18,8 @@
Firmar
-
- Factura
+
+ Factura
@else
diff --git a/app/src/Model/Venta/PropiedadUnidad.php b/app/src/Model/Venta/PropiedadUnidad.php
index 9545477..edb1270 100644
--- a/app/src/Model/Venta/PropiedadUnidad.php
+++ b/app/src/Model/Venta/PropiedadUnidad.php
@@ -5,7 +5,7 @@ class PropiedadUnidad extends Unidad
{
public int $pu_id;
public int $propiedad_id;
- public float $valor;
+ public ?float $valor;
public function jsonSerialize(): mixed
{
diff --git a/app/src/Repository/Contabilidad/Cartola.php b/app/src/Repository/Contabilidad/Cartola.php
index f2b20fc..e4ebb78 100644
--- a/app/src/Repository/Contabilidad/Cartola.php
+++ b/app/src/Repository/Contabilidad/Cartola.php
@@ -65,6 +65,13 @@ class Cartola extends Ideal\Repository
->where('cuenta_id = ?');
return $this->fetchMany($query, [$cuenta_id]);
}
+
+ /**
+ * @param int $cuenta_id
+ * @param DateTimeInterface $fecha
+ * @return Model\Contabilidad\Cartola
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByCuentaAndFecha(int $cuenta_id, DateTimeInterface $fecha): Model\Contabilidad\Cartola
{
$query = $this->connection->getQueryBuilder()
@@ -73,6 +80,13 @@ class Cartola extends Ideal\Repository
->where('cuenta_id = ? AND fecha = ?');
return $this->fetchOne($query, [$cuenta_id, $fecha->format('Y-m-d')]);
}
+
+ /**
+ * @param int $cuenta_id
+ * @param DateTimeInterface $fecha
+ * @return Model\Contabilidad\Cartola
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchLastByCuentaAndFecha(int $cuenta_id, DateTimeInterface $fecha): Model\Contabilidad\Cartola
{
$query = $this->connection->getQueryBuilder()
diff --git a/app/src/Repository/Contabilidad/Movimiento.php b/app/src/Repository/Contabilidad/Movimiento.php
index 84313a6..c2260a8 100644
--- a/app/src/Repository/Contabilidad/Movimiento.php
+++ b/app/src/Repository/Contabilidad/Movimiento.php
@@ -62,6 +62,13 @@ class Movimiento extends Ideal\Repository
->where('cuenta_id = ?');
return $this->fetchMany($query, [$cuenta_id]);
}
+
+ /**
+ * @param int $cuenta_id
+ * @param DateTimeInterface $fecha
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByCuentaAndFecha(int $cuenta_id, DateTimeInterface $fecha): array
{
$query = $this->connection->getQueryBuilder()
@@ -70,6 +77,17 @@ class Movimiento extends Ideal\Repository
->where('cuenta_id = ? AND fecha = ?');
return $this->fetchMany($query, [$cuenta_id, $fecha->format('Y-m-d')]);
}
+
+ /**
+ * @param int $cuenta_id
+ * @param DateTimeInterface $fecha
+ * @param string $glosa
+ * @param int $cargo
+ * @param int $abono
+ * @param int $saldo
+ * @return Model\Contabilidad\Movimiento
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByCuentaAndFechaAndGlosaAndCargoAndAbonoAndSaldo(int $cuenta_id, DateTimeInterface $fecha, string $glosa, int $cargo, int $abono, int $saldo): Model\Contabilidad\Movimiento
{
$len = (int) round(strlen($glosa) * .75);
@@ -99,6 +117,15 @@ class Movimiento extends Ideal\Repository
}
return $this->fetchMany($query, [$sociedad_rut, $mes->format('Y-m-01'), $mes->format('Y-m-t')]);
}
+
+ /**
+ * @param int $cuenta_id
+ * @param DateTimeInterface $startDate
+ * @param DateTimeInterface $endDate
+ * @param array $idList
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchMissingInDateRange(int $cuenta_id, DateTimeInterface $startDate, DateTimeInterface $endDate, array $idList = []): array
{
$query = $this->connection->getQueryBuilder()
diff --git a/app/src/Repository/Contabilidad/Movimiento/Detalle.php b/app/src/Repository/Contabilidad/Movimiento/Detalle.php
index 178db21..b70a059 100644
--- a/app/src/Repository/Contabilidad/Movimiento/Detalle.php
+++ b/app/src/Repository/Contabilidad/Movimiento/Detalle.php
@@ -60,6 +60,11 @@ class Detalle extends Ideal\Repository
return $data;
}
+ /**
+ * @param int $movimiento_id
+ * @return Model\Contabilidad\Movimiento\Detalle
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByMovimiento(int $movimiento_id): Model\Contabilidad\Movimiento\Detalle
{
$query = $this->connection->getQueryBuilder()
diff --git a/app/src/Repository/Direccion.php b/app/src/Repository/Direccion.php
index 0d55e98..8838dd7 100644
--- a/app/src/Repository/Direccion.php
+++ b/app/src/Repository/Direccion.php
@@ -30,16 +30,38 @@ class Direccion extends Ideal\Repository
);
return $model;
}
+
+ /**
+ * @param Define\Model $model
+ * @param array $new_data
+ * @return Define\Model
+ * @throws Implement\Exception\EmptyResult
+ */
public function edit(Define\Model $model, array $new_data): Define\Model
{
return $this->update($model, ['calle', 'numero', 'extra', 'comuna'], $new_data);
}
+ /**
+ * @param string $calle
+ * @param int $numero
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByCalleAndNumero(string $calle, int $numero): array
{
$query = "SELECT * FROM `{$this->getTable()}` WHERE `calle` = ? AND `numero` = ?";
return $this->fetchMany($query, [$calle, $numero]);
}
+
+ /**
+ * @param string $calle
+ * @param int $numero
+ * @param string $extra
+ * @param int $comuna_id
+ * @return Model\Direccion
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByCalleAndNumeroAndExtraAndComuna(string $calle, int $numero, string $extra, int $comuna_id): Model\Direccion
{
$query = "SELECT * FROM `{$this->getTable()}` WHERE `calle` = ? AND `numero` = ? AND `extra` = ? AND `comuna` = ?";
diff --git a/app/src/Repository/Inmobiliaria/Proveedor.php b/app/src/Repository/Inmobiliaria/Proveedor.php
index f337a9c..d90197b 100644
--- a/app/src/Repository/Inmobiliaria/Proveedor.php
+++ b/app/src/Repository/Inmobiliaria/Proveedor.php
@@ -35,11 +35,23 @@ class Proveedor extends Ideal\Repository
]);
return $model;
}
+
+ /**
+ * @param Define\Model $model
+ * @param array $new_data
+ * @return Model\Inmobiliaria\Proveedor
+ * @throws Implement\Exception\EmptyResult
+ */
public function edit(Define\Model $model, array $new_data): Model\Inmobiliaria\Proveedor
{
return $this->update($model, ['rut', 'digito', 'nombre', 'razon', 'contacto_rut'], $new_data);
}
+ /**
+ * @param string $nombre
+ * @return Model\Inmobiliaria\Proveedor
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByNombre(string $nombre): Model\Inmobiliaria\Proveedor
{
$query = $this->connection->getQueryBuilder()
diff --git a/app/src/Repository/Login.php b/app/src/Repository/Login.php
index fa709ad..b5e2e21 100644
--- a/app/src/Repository/Login.php
+++ b/app/src/Repository/Login.php
@@ -50,6 +50,12 @@ class Login extends Ideal\Repository
->where('user_id = ?');
return $this->fetchMany($query, [$user_id]);
}
+
+ /**
+ * @param int $user_id
+ * @return Model\Login
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchActiveByUser(int $user_id): Model\Login
{
$query = $this->connection->getQueryBuilder()
diff --git a/app/src/Repository/Persona.php b/app/src/Repository/Persona.php
index 52ba83c..c49ec27 100644
--- a/app/src/Repository/Persona.php
+++ b/app/src/Repository/Persona.php
@@ -28,6 +28,13 @@ class Persona extends Ideal\Repository
[$model->rut, $model->digito, $model->nombres, $model->apellidoPaterno, $model->apellidoMaterno]);
return $model;
}
+
+ /**
+ * @param Define\Model $model
+ * @param array $new_data
+ * @return Model\Persona
+ * @throws Implement\Exception\EmptyResult
+ */
public function edit(Define\Model $model, array $new_data): Model\Persona
{
return $this->update($model, ['digito', 'nombres', 'apellido_paterno', 'apellido_materno'], $new_data);
diff --git a/app/src/Repository/Persona/Datos.php b/app/src/Repository/Persona/Datos.php
index 1f9338d..c227c06 100644
--- a/app/src/Repository/Persona/Datos.php
+++ b/app/src/Repository/Persona/Datos.php
@@ -72,6 +72,11 @@ class Datos extends Ideal\Repository
], $new_data);
}
+ /**
+ * @param int $persona_rut
+ * @return Model\Persona\Datos
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByPersona(int $persona_rut): Model\Persona\Datos
{
$query = $this->connection->getQueryBuilder()
diff --git a/app/src/Repository/User.php b/app/src/Repository/User.php
index 4211bc6..799e2f0 100644
--- a/app/src/Repository/User.php
+++ b/app/src/Repository/User.php
@@ -27,11 +27,22 @@ class User extends Ideal\Repository
return $model;
}
+ /**
+ * @param Define\Model $model
+ * @param array $new_data
+ * @return Define\Model
+ * @throws Implement\Exception\EmptyResult
+ */
public function edit(Define\Model $model, array $new_data): Define\Model
{
return $this->update($model, ['name', 'password', 'enabled'], $new_data);
}
+ /**
+ * @param string $name
+ * @return Model\User
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByName(string $name): Model\User
{
$query = "SELECT * FROM `{$this->getTable()}` WHERE `name` = ?";
diff --git a/app/src/Repository/Venta.php b/app/src/Repository/Venta.php
index b279cbd..7aeac55 100644
--- a/app/src/Repository/Venta.php
+++ b/app/src/Repository/Venta.php
@@ -2,6 +2,7 @@
namespace Incoviba\Repository;
use PDO;
+use PDOException;
use Psr\Log\LoggerInterface;
use Incoviba\Common\Ideal;
use Incoviba\Common\Define;
@@ -128,6 +129,12 @@ class Venta extends Ideal\Repository
}
return $this->parseData(new Model\Venta(), $data, $map);
}
+
+ /**
+ * @param Define\Model $model
+ * @return Model\Venta
+ * @throws PDOException
+ */
public function save(Define\Model $model): Model\Venta
{
$model->id = $this->saveNew(
@@ -142,6 +149,13 @@ class Venta extends Ideal\Repository
);
return $model;
}
+
+ /**
+ * @param Define\Model $model
+ * @param array $new_data
+ * @return Model\Venta
+ * @throws Implement\Exception\EmptyResult
+ */
public function edit(Define\Model $model, array $new_data): Model\Venta
{
return $this->update($model, ['propietario', 'propiedad', 'pie', 'bono_pie', 'credito', 'escritura', 'subsidio', 'escriturado',
@@ -149,6 +163,11 @@ class Venta extends Ideal\Repository
'relacionado', 'promocion', 'resciliacion', 'devolucion'], $new_data);
}
+ /**
+ * @param int $proyecto_id
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByProyecto(int $proyecto_id): array
{
$query = $this->connection->getQueryBuilder()
@@ -163,6 +182,12 @@ class Venta extends Ideal\Repository
->group('a.id');
return $this->fetchMany($query, [$proyecto_id]);
}
+
+ /**
+ * @param int $proyecto_id
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchIdsByProyecto(int $proyecto_id): array
{
$query = $this->connection->getQueryBuilder()
@@ -177,6 +202,12 @@ class Venta extends Ideal\Repository
->group('a.id');
return $this->fetchIds($query, [$proyecto_id]);
}
+
+ /**
+ * @param int $proyecto_id
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchActivaByProyecto(int $proyecto_id): array
{
$query = $this->connection->getQueryBuilder()
@@ -191,6 +222,13 @@ class Venta extends Ideal\Repository
->group('a.id');
return $this->fetchMany($query, [$proyecto_id]);
}
+
+ /**
+ * @param string $proyecto_nombre
+ * @param int $unidad_descripcion
+ * @return Model\Venta
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByProyectoAndUnidad(string $proyecto_nombre, int $unidad_descripcion): Model\Venta
{
$query = $this->connection->getQueryBuilder()
@@ -205,6 +243,12 @@ class Venta extends Ideal\Repository
->where('`proyecto`.`descripcion` = ? AND `unidad`.`descripcion` = ? AND tev.`activa`');
return $this->fetchOne($query, [$proyecto_nombre, $unidad_descripcion]);
}
+
+ /**
+ * @param int $pie_id
+ * @return Model\Venta
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByPie(int $pie_id): Model\Venta
{
$query = $this->connection->getQueryBuilder()
@@ -213,6 +257,12 @@ class Venta extends Ideal\Repository
->where('pie = ?');
return $this->fetchOne($query, [$pie_id]);
}
+
+ /**
+ * @param int $pie_id
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchIdByPie(int $pie_id): array
{
$query = $this->connection->getQueryBuilder()
@@ -221,6 +271,13 @@ class Venta extends Ideal\Repository
->where('pie = ?');
return $this->fetchId($query, [$pie_id]);
}
+
+ /**
+ * @param string $unidad
+ * @param string $tipo
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByUnidad(string $unidad, string $tipo): array
{
$query = $this->connection->getQueryBuilder()
@@ -233,6 +290,12 @@ class Venta extends Ideal\Repository
->where('`unidad`.`descripcion` LIKE ? AND tu.`descripcion` = ?');
return $this->fetchMany($query, [$unidad, $tipo]);
}
+
+ /**
+ * @param int $unidad_id
+ * @return Model\Venta
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByUnidadId(int $unidad_id): Model\Venta
{
$query = $this->connection->getQueryBuilder()
@@ -242,6 +305,13 @@ class Venta extends Ideal\Repository
->where('pu.unidad = ?');
return $this->fetchOne($query, [$unidad_id]);
}
+
+ /**
+ * @param string $unidad
+ * @param string $tipo
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchIdsByUnidad(string $unidad, string $tipo): array
{
$query = $this->connection->getQueryBuilder()
@@ -254,6 +324,12 @@ class Venta extends Ideal\Repository
->where('`unidad`.`descripcion` LIKE ? AND tu.`descripcion` = ?');
return $this->fetchIds($query, [$unidad, $tipo]);
}
+
+ /**
+ * @param string $precio
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByPrecio(string $precio): array
{
$query = $this->connection->getQueryBuilder()
@@ -262,6 +338,12 @@ class Venta extends Ideal\Repository
->where('valor_uf = ?');
return $this->fetchMany($query, [$precio]);
}
+
+ /**
+ * @param string $precio
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchIdsByPrecio(string $precio): array
{
$query = $this->connection->getQueryBuilder()
@@ -270,6 +352,13 @@ class Venta extends Ideal\Repository
->where('valor_uf = ?');
return $this->fetchIds($query, [$precio]);
}
+
+ /**
+ * @param int $propietario_rut
+ * @param int $propiedad_id
+ * @return Model\Venta
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByPropietarioAndPropiedad(int $propietario_rut, int $propiedad_id): Model\Venta
{
$query = $this->connection->getQueryBuilder()
@@ -278,6 +367,12 @@ class Venta extends Ideal\Repository
->where('propietario = ? AND propiedad = ?');
return $this->fetchOne($query, [$propietario_rut, $propiedad_id]);
}
+
+ /**
+ * @param string $propietario
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByPropietario(string $propietario): array
{
$query = $this->connection->getQueryBuilder()
@@ -289,6 +384,12 @@ class Venta extends Ideal\Repository
OR CONCAT_WS(' ', `propietario`.`nombres`, `propietario`.`apellido_paterno`, `propietario`.`apellido_materno`) LIKE :propietario");
return $this->fetchMany($query, [':propietario' => "%{$propietario}%"]);
}
+
+ /**
+ * @param string $propietario
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchIdsByPropietario(string $propietario): array
{
$query = $this->connection->getQueryBuilder()
@@ -302,6 +403,12 @@ class Venta extends Ideal\Repository
OR CONCAT_WS('-', rut, dv) = :rut");
return $this->fetchIds($query, [':propietario' => "%{$propietario}%", ':rut' => $propietario]);
}
+
+ /**
+ * @param string $propietario
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByPropietarioNombreCompleto(string $propietario): array
{
$query = $this->connection->getQueryBuilder()
@@ -311,6 +418,12 @@ class Venta extends Ideal\Repository
->where("CONCAT_WS(' ', `propietario`.`nombres`, `propietario`.`apellido_paterno`, `propietario`.`apellido_materno`) LIKE ?");
return $this->fetchMany($query, [$propietario]);
}
+
+ /**
+ * @param int $proyecto_id
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchEscriturasByProyecto(int $proyecto_id): array
{
$query = $this->connection->getQueryBuilder()
@@ -325,6 +438,12 @@ class Venta extends Ideal\Repository
->group('a.id');
return $this->fetchMany($query, [$proyecto_id]);
}
+
+ /**
+ * @param int $escritura_id
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchIdByEscritura(int $escritura_id): array
{
$query = $this->connection->getQueryBuilder()
@@ -333,6 +452,12 @@ class Venta extends Ideal\Repository
->where('escritura = ?');
return $this->fetchId($query, [$escritura_id]);
}
+
+ /**
+ * @param int $subsidio_id
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchIdBySubsidio(int $subsidio_id): array
{
$query = $this->connection->getQueryBuilder()
@@ -341,6 +466,12 @@ class Venta extends Ideal\Repository
->where('subsidio = ?');
return $this->fetchId($query, [$subsidio_id]);
}
+
+ /**
+ * @param int $credito_id
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchIdByCredito(int $credito_id): array
{
$query = $this->connection->getQueryBuilder()
@@ -349,6 +480,12 @@ class Venta extends Ideal\Repository
->where('credito = ?');
return $this->fetchId($query, [$credito_id]);
}
+
+ /**
+ * @param int $bono_id
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchIdByBono(int $bono_id): array
{
$query = $this->connection->getQueryBuilder()
@@ -357,6 +494,11 @@ class Venta extends Ideal\Repository
->where('bono_pie = ?');
return $this->fetchId($query, [$bono_id]);
}
+
+ /**
+ * @param int $venta_id
+ * @return array
+ */
public function fetchByIdForSearch(int $venta_id): array
{
$query = $this->connection->getQueryBuilder()
@@ -382,6 +524,11 @@ class Venta extends Ideal\Repository
->limit(1);
return $this->connection->execute($query, [$venta_id])->fetch(PDO::FETCH_ASSOC);
}
+
+ /**
+ * @param int $venta_id
+ * @return array
+ */
public function fetchByIdForList(int $venta_id): array
{
$query = $this->connection->getQueryBuilder()
@@ -404,20 +551,33 @@ class Venta extends Ideal\Repository
return $this->connection->execute($query, [$venta_id])->fetch(PDO::FETCH_ASSOC);
}
+ /**
+ * @param string $query
+ * @param array|null $data
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
protected function fetchIds(string $query, ?array $data = null): array
{
- $results = $this->connection->execute($query, $data)->fetchAll(PDO::FETCH_ASSOC);
- if ($results === false) {
- throw new Implement\Exception\EmptyResult($query);
+ try {
+ return $this->connection->execute($query, $data)->fetchAll(PDO::FETCH_ASSOC);
+ } catch (PDOException $exception) {
+ throw new Implement\Exception\EmptyResult($query, $exception);
}
- return $results;
}
+
+ /**
+ * @param string $query
+ * @param array|null $data
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
protected function fetchId(string $query, ?array $data = null): array
{
- $results = $this->connection->execute($query, $data)->fetch(PDO::FETCH_ASSOC);
- if ($results === false) {
- throw new Implement\Exception\EmptyResult($query);
+ try {
+ return $this->connection->execute($query, $data)->fetch(PDO::FETCH_ASSOC);
+ } catch (PDOException $exception) {
+ throw new Implement\Exception\EmptyResult($query, $exception);
}
- return $results;
}
}
diff --git a/app/src/Repository/Venta/BonoPie.php b/app/src/Repository/Venta/BonoPie.php
index 672ff5b..dd575d1 100644
--- a/app/src/Repository/Venta/BonoPie.php
+++ b/app/src/Repository/Venta/BonoPie.php
@@ -31,11 +31,23 @@ class BonoPie extends Ideal\Repository
);
return $model;
}
+
+ /**
+ * @param Define\Model $model
+ * @param array $new_data
+ * @return Define\Model
+ * @throws Implement\Exception\EmptyResult
+ */
public function edit(Define\Model $model, array $new_data): Define\Model
{
return $this->update($model, ['valor', 'pago'], $new_data);
}
+ /**
+ * @param float $value
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByValue(float $value): array
{
$query = $this->connection->getQueryBuilder()
@@ -44,6 +56,12 @@ class BonoPie extends Ideal\Repository
->where('valor = ?');
return $this->fetchMany($query, [$value]);
}
+
+ /**
+ * @param int $pago_id
+ * @return Model\Venta\BonoPie
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByPago(int $pago_id): Model\Venta\BonoPie
{
$query = $this->connection->getQueryBuilder()
@@ -52,6 +70,12 @@ class BonoPie extends Ideal\Repository
->where('pago = ?');
return $this->fetchOne($query, [$pago_id]);
}
+
+ /**
+ * @param int $venta_id
+ * @return Model\Venta\BonoPie
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByVenta(int $venta_id): Model\Venta\BonoPie
{
$query = $this->connection->getQueryBuilder()
diff --git a/app/src/Repository/Venta/Credito.php b/app/src/Repository/Venta/Credito.php
index 6abe902..8100342 100644
--- a/app/src/Repository/Venta/Credito.php
+++ b/app/src/Repository/Venta/Credito.php
@@ -37,6 +37,11 @@ class Credito extends Ideal\Repository
return $this->update($model, ['banco', 'valor', 'fecha', 'uf', 'abonado', 'fecha_abono', 'pago'], $new_data);
}
+ /**
+ * @param int $value
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByValue(int $value): array
{
$query = $this->connection->getQueryBuilder()
diff --git a/app/src/Repository/Venta/Cuota.php b/app/src/Repository/Venta/Cuota.php
index e54baf5..adbed9a 100644
--- a/app/src/Repository/Venta/Cuota.php
+++ b/app/src/Repository/Venta/Cuota.php
@@ -198,6 +198,12 @@ GROUP BY p1.`fecha`, v1.`descripcion`
ORDER BY p1.`fecha`, v1.`descripcion`";
return $this->fetchAsArray($query);*/
}
+
+ /**
+ * @param int $pie_id
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByPie(int $pie_id): array
{
$query = $this->connection->getQueryBuilder()
diff --git a/app/src/Repository/Venta/Escritura.php b/app/src/Repository/Venta/Escritura.php
index 0b81440..7da49f1 100644
--- a/app/src/Repository/Venta/Escritura.php
+++ b/app/src/Repository/Venta/Escritura.php
@@ -39,6 +39,11 @@ class Escritura extends Ideal\Repository
return $this->update($model, ['valor', 'fecha', 'uf', 'abonado', 'fecha_abono', 'pago'], $new_data);
}
+ /**
+ * @param int $value
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByValue(int $value): array
{
$query = $this->connection->getQueryBuilder()
@@ -55,6 +60,12 @@ class Escritura extends Ideal\Repository
->where('pago = ?');
return $this->fetchOne($query, [$pago_id]);
}
+
+ /**
+ * @param int $venta_id
+ * @return Model\Venta\Escritura
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByVenta(int $venta_id): Model\Venta\Escritura
{
$query = $this->connection->getQueryBuilder()
diff --git a/app/src/Repository/Venta/Pago.php b/app/src/Repository/Venta/Pago.php
index cd9991b..c28bb0d 100644
--- a/app/src/Repository/Venta/Pago.php
+++ b/app/src/Repository/Venta/Pago.php
@@ -100,6 +100,12 @@ FROM (
WHERE venta_id = ?";
return $this->fetchMany($query, [$venta_id]);
}
+
+ /**
+ * @param int $value
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByValue(int $value): array
{
$query = $this->connection->getQueryBuilder()
diff --git a/app/src/Repository/Venta/Pie.php b/app/src/Repository/Venta/Pie.php
index b6b61f0..ffe8244 100644
--- a/app/src/Repository/Venta/Pie.php
+++ b/app/src/Repository/Venta/Pie.php
@@ -48,6 +48,11 @@ class Pie extends Ideal\Repository
return $this->update($model, ['fecha', 'valor', 'uf', 'cuotas', 'asociado', 'reajuste'], $new_data);
}
+ /**
+ * @param int $pie_id
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchAsociados(int $pie_id): array
{
$query = $this->connection->getQueryBuilder()
@@ -56,6 +61,12 @@ class Pie extends Ideal\Repository
->where('asociado = ?');
return $this->fetchMany($query, [$pie_id]);
}
+
+ /**
+ * @param float $value
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByValue(float $value): array
{
$query = $this->connection->getQueryBuilder()
diff --git a/app/src/Repository/Venta/Precio.php b/app/src/Repository/Venta/Precio.php
index f569afe..68c7250 100644
--- a/app/src/Repository/Venta/Precio.php
+++ b/app/src/Repository/Venta/Precio.php
@@ -32,11 +32,23 @@ class Precio extends Ideal\Repository
);
return $model;
}
+
+ /**
+ * @param Define\Model $model
+ * @param array $new_data
+ * @return Define\Model
+ * @throws Implement\Exception\EmptyResult
+ */
public function edit(Define\Model $model, array $new_data): Define\Model
{
return $this->update($model, ['unidad', 'valor'], $new_data);
}
+ /**
+ * @param int $proyecto_id
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByProyecto(int $proyecto_id): array
{
$query = "SELECT a.*
@@ -50,6 +62,12 @@ WHERE ptu.`proyecto` = ? AND tep.`descripcion` = 'vigente'
ORDER BY tu.`orden`, ptu.`nombre`, `unidad`.`subtipo`, LPAD(`unidad`.`descripcion`, 4, '0')";
return $this->fetchMany($query, [$proyecto_id]);
}
+
+ /**
+ * @param int $unidad_id
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByUnidad(int $unidad_id): array
{
$query = "SELECT a.*
@@ -59,6 +77,12 @@ FROM `{$this->getTable()}` a
WHERE `unidad` = ?";
return $this->fetchMany($query, [$unidad_id]);
}
+
+ /**
+ * @param int $unidad_id
+ * @return Define\Model
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchVigenteByUnidad(int $unidad_id): Define\Model
{
$query = "SELECT a.*
@@ -68,6 +92,13 @@ FROM `{$this->getTable()}` a
WHERE `unidad` = ? AND tep.`descripcion` = 'vigente'";
return $this->fetchOne($query, [$unidad_id]);
}
+
+ /**
+ * @param int $unidad_id
+ * @param string $date_time
+ * @return Define\Model
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByUnidadAndDate(int $unidad_id, string $date_time): Define\Model
{
$query = "SELECT a.*
diff --git a/app/src/Repository/Venta/Propiedad.php b/app/src/Repository/Venta/Propiedad.php
index 4663c56..d28dd96 100644
--- a/app/src/Repository/Venta/Propiedad.php
+++ b/app/src/Repository/Venta/Propiedad.php
@@ -48,11 +48,23 @@ class Propiedad extends Ideal\Repository
);
return $model;
}
+
+ /**
+ * @param Define\Model $model
+ * @param array $new_data
+ * @return Model\Venta\Propiedad
+ * @throws Implement\Exception\EmptyResult
+ */
public function edit(Define\Model $model, array $new_data): Model\Venta\Propiedad
{
return $this->update($model, ['unidad_principal', 'estacionamientos', 'bodegas', 'estado'], $new_data);
}
+ /**
+ * @param int $unidad_id
+ * @return Model\Venta\Propiedad
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchVigenteByUnidad(int $unidad_id): Model\Venta\Propiedad
{
$query = "SELECT * FROM `{$this->getTable()}` WHERE `unidad_principal` = ?";
diff --git a/app/src/Repository/Venta/Subsidio.php b/app/src/Repository/Venta/Subsidio.php
index 7ae4563..d0356fe 100644
--- a/app/src/Repository/Venta/Subsidio.php
+++ b/app/src/Repository/Venta/Subsidio.php
@@ -49,6 +49,12 @@ class Subsidio extends Ideal\Repository
->where('subsidio = ? OR pago = ?');
return $this->fetchOne($query, [$pago_id, $pago_id]);
}
+
+ /**
+ * @param int $venta_id
+ * @return Model\Venta\Subsidio
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByVenta(int $venta_id): Model\Venta\Subsidio
{
$query = $this->connection->getQueryBuilder()
diff --git a/app/src/Repository/Venta/TipoEstadoVenta.php b/app/src/Repository/Venta/TipoEstadoVenta.php
index 5043963..eb847c4 100644
--- a/app/src/Repository/Venta/TipoEstadoVenta.php
+++ b/app/src/Repository/Venta/TipoEstadoVenta.php
@@ -33,6 +33,11 @@ class TipoEstadoVenta extends Ideal\Repository
return $this->update($model, ['descripcion', 'activa'], $new_data);
}
+ /**
+ * @param string $descripcion
+ * @return Model\Venta\TipoEstadoVenta
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByDescripcion(string $descripcion): Model\Venta\TipoEstadoVenta
{
$query = "SELECT * FROM `{$this->getTable()}` WHERE `descripcion` = ?";
diff --git a/app/src/Repository/Venta/Unidad.php b/app/src/Repository/Venta/Unidad.php
index 19a013c..d29bc3e 100644
--- a/app/src/Repository/Venta/Unidad.php
+++ b/app/src/Repository/Venta/Unidad.php
@@ -129,6 +129,13 @@ class Unidad extends Ideal\Repository
->where("a.`descripcion` LIKE ? AND tu.`descripcion` = ? AND (pu.`id` IS NULL OR `venta`.`id` IS NULL OR tev.`activa` = 0)");
return $this->fetchMany($query, [$descripcion, $tipo]);
}
+
+ /**
+ * @param string $descripcion
+ * @param string $tipo
+ * @return array
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchDisponiblesIdsByDescripcionAndTipo(string $descripcion, string $tipo): array
{
$query = $this->connection->getQueryBuilder()
@@ -141,7 +148,11 @@ class Unidad extends Ideal\Repository
LEFT OUTER JOIN (SELECT ev1.* FROM `estado_venta` ev1 JOIN (SELECT MAX(`id`) as 'id', `venta` FROM `estado_venta`) ev0 ON ev0.`id` = ev1.`id`) ev ON ev.`venta` = `venta`.`id`
LEFT OUTER JOIN `tipo_estado_venta` tev ON tev.`id` = ev.`estado`")
->where("a.`descripcion` LIKE ? AND tu.`descripcion` = ? AND (pu.`id` IS NULL OR `venta`.`id` IS NULL OR tev.`activa` = 0)");
- return $this->connection->execute($query, [$descripcion, $tipo])->fetchAll(PDO::FETCH_ASSOC);
+ try {
+ return $this->connection->execute($query, [$descripcion, $tipo])->fetchAll(PDO::FETCH_ASSOC);
+ } catch (PDOException $exception) {
+ throw new Implement\Exception\EmptyResult($query, $exception);
+ }
}
public function fetchByIdForSearch(int $unidad_id): array
{
diff --git a/app/src/Repository/Venta/Unidad/Prorrateo.php b/app/src/Repository/Venta/Unidad/Prorrateo.php
index ec4372a..3c96c28 100644
--- a/app/src/Repository/Venta/Unidad/Prorrateo.php
+++ b/app/src/Repository/Venta/Unidad/Prorrateo.php
@@ -39,6 +39,11 @@ class Prorrateo extends Ideal\Repository
return $this->update($model, ['unidad_id', 'prorrateo'], $new_data);
}
+ /**
+ * @param int $unidad_id
+ * @return Model\Venta\Unidad\Prorrateo
+ * @throws Implement\Exception\EmptyResult
+ */
public function fetchByUnidad(int $unidad_id): Model\Venta\Unidad\Prorrateo
{
$query = $this->connection->getQueryBuilder()
diff --git a/app/src/Service/Contabilidad/Cartola.php b/app/src/Service/Contabilidad/Cartola.php
index 5d6d36b..bfc5120 100644
--- a/app/src/Service/Contabilidad/Cartola.php
+++ b/app/src/Service/Contabilidad/Cartola.php
@@ -1,6 +1,7 @@
id;
$movimiento = $this->movimientoRepository->create($data);
try {
return $this->movimientoRepository->save($movimiento);
- } catch (\PDOException $exception) {
+ } catch (PDOException $exception) {
$this->logger->critical(var_export($data,true));
throw $exception;
}
diff --git a/app/src/Service/Contabilidad/Cartola/isExcel.php b/app/src/Service/Contabilidad/Cartola/isExcel.php
index 684ac1e..7846b03 100644
--- a/app/src/Service/Contabilidad/Cartola/isExcel.php
+++ b/app/src/Service/Contabilidad/Cartola/isExcel.php
@@ -9,7 +9,7 @@ trait isExcel
* @throws PhpSpreadsheet\Exception
* @throws PhpSpreadsheet\Calculation\Exception
*/
- protected function findTitlesRow(PhpSpreadsheet\Worksheet\RowIterator &$rowIterator, string $firstTitle, int $columnOffset = 1, bool $caseInsensitive = false): ?PhpSpreadsheet\Worksheet\Row
+ protected function findTitlesRow(PhpSpreadsheet\Worksheet\RowIterator $rowIterator, string $firstTitle, int $columnOffset = 1, bool $caseInsensitive = false): ?PhpSpreadsheet\Worksheet\Row
{
if ($caseInsensitive) {
$firstTitle = strtolower($firstTitle);
@@ -100,11 +100,6 @@ trait isExcel
if ($columnOffset > 1) {
$cellIterator->seek($columnOffset);
}
- foreach ($exitValues as $exitValue) {
- if ($cellIterator->current()->getCalculatedValue() === $exitValue) {
- return true;
- }
- }
- return false;
+ return in_array($cellIterator->current()->getCalculatedValue(), $exitValues, true);
}
}
diff --git a/app/src/Service/Contabilidad/Cartola/withSubBancos.php b/app/src/Service/Contabilidad/Cartola/withSubBancos.php
index c49c3f9..fab5cf4 100644
--- a/app/src/Service/Contabilidad/Cartola/withSubBancos.php
+++ b/app/src/Service/Contabilidad/Cartola/withSubBancos.php
@@ -1,8 +1,9 @@
anterior;
}
- public function build(DateTimeInterface $fecha): array
- {}
+ /*public function build(DateTimeInterface $fecha): array
+ {}*/
}
diff --git a/app/src/Service/Contabilidad/Informe/Tesoreria/Input/Data/SaldosContables.php b/app/src/Service/Contabilidad/Informe/Tesoreria/Input/Data/SaldosContables.php
index 12f1b61..31033ce 100644
--- a/app/src/Service/Contabilidad/Informe/Tesoreria/Input/Data/SaldosContables.php
+++ b/app/src/Service/Contabilidad/Informe/Tesoreria/Input/Data/SaldosContables.php
@@ -65,7 +65,7 @@ class SaldosContables extends Ideal\Service
'saldo' => $this->getSaldo($dataMovimiento)
];
try {
- $movimiento = $this->movimientoRepository->fetchByCuentaAndFechaAndCargoAndAbonoAndSaldo($cuenta->id, $dataMovimiento->fecha, $data['cargo'], $data['abono'], $data['saldo']);
+ $movimiento = $this->movimientoRepository->fetchByCuentaAndFechaAndGlosaAndCargoAndAbonoAndSaldo($cuenta->id, $dataMovimiento->fecha, $data['glosa'], $data['cargo'], $data['abono'], $data['saldo']);
} catch (Implement\Exception\EmptyResult) {
$movimiento = $this->movimientoRepository->create($data);
$movimiento = $this->movimientoRepository->save($movimiento);
diff --git a/app/src/Service/Contabilidad/Informe/Tesoreria/Output.php b/app/src/Service/Contabilidad/Informe/Tesoreria/Output.php
index c3568fb..00635bf 100644
--- a/app/src/Service/Contabilidad/Informe/Tesoreria/Output.php
+++ b/app/src/Service/Contabilidad/Informe/Tesoreria/Output.php
@@ -5,6 +5,7 @@ use DateInterval;
use DateTimeInterface;
use Incoviba\Common\Ideal;
use Incoviba\Common\Implement;
+use Incoviba\Exception\ServiceAction\Read;
use Incoviba\Model;
use Incoviba\Repository;
use Incoviba\Service;
@@ -94,7 +95,7 @@ class Output extends Ideal\Service
$dataInmobiliaria->sociedad = $inmobiliaria;
try {
$cuentas = $this->cuentaService->getAllActiveByInmobiliaria($inmobiliaria->rut);
- } catch (Implement\Exception\EmptyResult) {
+ } catch (Read) {
return $dataInmobiliaria;
}
foreach ($cuentas as $cuenta) {
diff --git a/app/src/Service/Contabilidad/Informe/Tesoreria/Output/Data/Movimientos.php b/app/src/Service/Contabilidad/Informe/Tesoreria/Output/Data/Movimientos.php
index 00131e3..7b39be2 100644
--- a/app/src/Service/Contabilidad/Informe/Tesoreria/Output/Data/Movimientos.php
+++ b/app/src/Service/Contabilidad/Informe/Tesoreria/Output/Data/Movimientos.php
@@ -17,7 +17,7 @@ class Movimientos
const INGRESOS = 'ingresos';
const EGRESOS = 'egresos';
- public function addDap(string $tipo, array $movimientos)
+ public function addDap(string $tipo, array $movimientos): self
{
foreach ($movimientos as $movimiento) {
$this->dap->{$tipo} []= $movimiento;
@@ -66,11 +66,7 @@ class Movimientos
$date = $movimiento->fecha;
}
if ($movimiento->fecha !== $date) {
- if ($movimiento->cuenta->inmobiliaria->rut === $sociedad_rut) {
- $temp []= $movimiento;
- }
$date = $movimiento->fecha;
- continue;
}
if ($movimiento->cuenta->inmobiliaria->rut === $sociedad_rut) {
$temp []= $movimiento;
diff --git a/app/src/Service/Inmobiliaria/Cuenta.php b/app/src/Service/Inmobiliaria/Cuenta.php
index e40e602..aa6c6f3 100644
--- a/app/src/Service/Inmobiliaria/Cuenta.php
+++ b/app/src/Service/Inmobiliaria/Cuenta.php
@@ -2,6 +2,7 @@
namespace Incoviba\Service\Inmobiliaria;
use DateTimeImmutable;
+use Incoviba\Exception\ServiceAction\Read;
use Psr\Log\LoggerInterface;
use Incoviba\Common\Ideal\Service;
use Incoviba\Common\Implement;
@@ -16,19 +17,37 @@ class Cuenta extends Service
parent::__construct($logger);
}
+ /**
+ * @return array
+ * @throws Read
+ */
public function getAllActive(): array
{
- $cuentas = array_map([$this, 'process'], $this->cuentaRepository->fetchAll());
- return array_values(array_filter($cuentas, function(Model\Inmobiliaria\Cuenta $cuenta) {
- return $cuenta->currentEstado()->active;
- }));
+ try {
+ $cuentas = array_map([$this, 'process'], $this->cuentaRepository->fetchAll());
+ return array_values(array_filter($cuentas, function(Model\Inmobiliaria\Cuenta $cuenta) {
+ return $cuenta->currentEstado()->active;
+ }));
+ } catch (Implement\Exception\EmptyResult $exception) {
+ throw new Read(__CLASS__, $exception);
+ }
}
+
+ /**
+ * @param int $inmobiliaria_rut
+ * @return array
+ * @throws Read
+ */
public function getAllActiveByInmobiliaria(int $inmobiliaria_rut): array
{
- $cuentas = array_map([$this, 'process'], $this->cuentaRepository->fetchByInmobiliaria($inmobiliaria_rut));
- return array_values(array_filter($cuentas, function(Model\Inmobiliaria\Cuenta $cuenta) {
- return $cuenta->currentEstado()->active;
- }));
+ try {
+ $cuentas = array_map([$this, 'process'], $this->cuentaRepository->fetchByInmobiliaria($inmobiliaria_rut));
+ return array_values(array_filter($cuentas, function(Model\Inmobiliaria\Cuenta $cuenta) {
+ return $cuenta->currentEstado()->active;
+ }));
+ } catch (Implement\Exception\EmptyResult $exception) {
+ throw new Read(__CLASS__, $exception);
+ }
}
public function add(array $data): Model\Inmobiliaria\Cuenta
{
diff --git a/app/src/Service/Inmobiliaria/Proveedor.php b/app/src/Service/Inmobiliaria/Proveedor.php
index e7dedad..fdba293 100644
--- a/app/src/Service/Inmobiliaria/Proveedor.php
+++ b/app/src/Service/Inmobiliaria/Proveedor.php
@@ -1,6 +1,7 @@
proveedorRepository->filterData($data);
return $this->process($this->proveedorRepository->edit($proveedor, $filteredData));
- } catch (Implement\Exception\EmptyResult) {
+ } catch (Read | Implement\Exception\EmptyResult) {
return $proveedor;
}
}
@@ -82,7 +83,7 @@ class Proveedor extends Ideal\Service
try {
$this->proveedorRepository->remove($proveedor);
return true;
- } catch (Implement\Exception\EmptyResult | PDOException) {
+ } catch (PDOException) {
return false;
}
}
diff --git a/app/src/Service/Login.php b/app/src/Service/Login.php
index 1fe92c2..c4d98fe 100644
--- a/app/src/Service/Login.php
+++ b/app/src/Service/Login.php
@@ -192,7 +192,7 @@ class Login
protected function cryptoJs_aes_decrypt($data, $key): string
{
$data = base64_decode($data);
- if (substr($data, 0, 8) != "Salted__") {
+ if (!str_starts_with($data, "Salted__")) {
return false;
}
$salt = substr($data, 8, 8);
diff --git a/app/src/Service/Persona.php b/app/src/Service/Persona.php
index 39733a6..c2647e4 100644
--- a/app/src/Service/Persona.php
+++ b/app/src/Service/Persona.php
@@ -3,6 +3,7 @@ namespace Incoviba\Service;
use Incoviba\Common\Ideal;
use Incoviba\Common\Implement;
+use Incoviba\Exception\ServiceAction\Read;
use Incoviba\Model;
use Incoviba\Repository;
use Psr\Log\LoggerInterface;
@@ -17,9 +18,18 @@ class Persona extends Ideal\Service
parent::__construct($logger);
}
+ /**
+ * @param int $rut
+ * @return Model\Persona
+ * @throws Read
+ */
public function getById(int $rut): Model\Persona
{
- return $this->process($this->personaRepository->fetchById($rut));
+ try {
+ return $this->process($this->personaRepository->fetchById($rut));
+ } catch (Implement\Exception\EmptyResult $exception) {
+ throw new Read(__CLASS__, $exception);
+ }
}
public function add(array $data): Model\Persona
{
diff --git a/app/src/Service/Proyecto/Terreno.php b/app/src/Service/Proyecto/Terreno.php
index f01f7fe..1cef273 100644
--- a/app/src/Service/Proyecto/Terreno.php
+++ b/app/src/Service/Proyecto/Terreno.php
@@ -36,7 +36,7 @@ class Terreno extends Ideal\Service
return $proyecto->terreno;
}
try {
- // Valor 1o Enero
+ // Valor 1o enero
return $this->getValorContable($proyecto, $lastNovember->add(new DateInterval('P1M'))->add(new DateInterval('P1D')));
} catch (Implement\Exception\EmptyResponse) {}
if ($proyecto->terreno->fecha === null) {
diff --git a/app/src/Service/Redis.php b/app/src/Service/Redis.php
index 6b14761..e399bf3 100644
--- a/app/src/Service/Redis.php
+++ b/app/src/Service/Redis.php
@@ -9,7 +9,12 @@ class Redis
{
public function __construct(protected ClientInterface $client) {}
- public function get(string $name): mixed
+ /**
+ * @param string $name
+ * @return string|null
+ * @throws EmptyRedis
+ */
+ public function get(string $name): ?string
{
try {
if (!$this->client->exists($name)) {
diff --git a/app/src/Service/Search.php b/app/src/Service/Search.php
index 43966dd..d687cef 100644
--- a/app/src/Service/Search.php
+++ b/app/src/Service/Search.php
@@ -102,7 +102,7 @@ class Search
{
try {
return $this->unidadRepository->fetchDisponiblesIdsByDescripcionAndTipo($query, $tipo);
- } catch (EmptyResponse) {
+ } catch (EmptyResult) {
return [];
}
}
diff --git a/app/src/Service/Sociedad.php b/app/src/Service/Sociedad.php
index c2844bb..d3cdebc 100644
--- a/app/src/Service/Sociedad.php
+++ b/app/src/Service/Sociedad.php
@@ -1,6 +1,7 @@
process($this->sociedadRepository->save($this->sociedadRepository->create($data)));
- } catch (EmptyResult) {
+ } catch (PDOException) {
return null;
}
}
diff --git a/app/src/Service/Venta.php b/app/src/Service/Venta.php
index 70a761d..4d9eeea 100644
--- a/app/src/Service/Venta.php
+++ b/app/src/Service/Venta.php
@@ -4,6 +4,7 @@ namespace Incoviba\Service;
use Exception;
use DateTimeImmutable;
use DateInterval;
+use DateMalformedStringException;
use Psr\Log\LoggerInterface;
use Incoviba\Common\Ideal\Service;
use Incoviba\Common\Implement;
@@ -98,7 +99,7 @@ class Venta extends Service
public function getFacturacionById(int $venta_id): array
{
$venta = $this->getById($venta_id);
- $escritura = (in_array($venta->currentEstado()->tipoEstadoVenta->descripcion, ['escriturando'])) ? $venta->currentEstado()->fecha : $venta->fecha;
+ $escritura = (in_array($venta->currentEstado()->tipoEstadoVenta->descripcion, ['escriturando', 'firmado por inmobiliaria'])) ? $venta->currentEstado()->fecha : $venta->fecha;
$data = [
'id' => $venta->id,
'fecha' => $venta->fecha->format('Y-m-d'),
@@ -289,7 +290,7 @@ class Venta extends Service
{
try {
$fecha = new DateTimeImmutable($data['fecha']);
- } catch (\DateMalformedStringException) {
+ } catch (DateMalformedStringException) {
$fecha = new DateTimeImmutable();
}
$estadoData = [
@@ -348,7 +349,7 @@ class Venta extends Service
{
try {
$fecha = new DateTimeImmutable($data['fecha_reajuste']);
- } catch (\DateMalformedStringException) {
+ } catch (DateMalformedStringException) {
$fecha = new DateTimeImmutable();
}
$reajusteData = [
@@ -363,7 +364,7 @@ class Venta extends Service
{
try {
$fecha = new DateTimeImmutable($data['fecha_pago']);
- } catch (\DateMalformedStringException) {
+ } catch (DateMalformedStringException) {
$fecha = new DateTimeImmutable();
}
$uf = $this->moneyService->getUF($fecha);
@@ -389,7 +390,7 @@ class Venta extends Service
{
try {
$fecha = new DateTimeImmutable($data['fecha']);
- } catch (\DateMalformedStringException) {
+ } catch (DateMalformedStringException) {
$fecha = new DateTimeImmutable();
}
$uf = $this->moneyService->getUF($fecha);
@@ -399,15 +400,15 @@ class Venta extends Service
'subsidio' => $this->valorService->clean($data['valor_subsidio']),
'uf' => $uf
];
- $subsidio = $this->addSubsidio($subsidioData);
- $this->ventaRepository->edit($venta, ['subsidio' => $subsidio->id]);
+ $formaPago = $this->addFormaPago($subsidioData);
+ $this->ventaRepository->edit($venta, ['subsidio' => $formaPago->subsidio->id]);
}
protected function editCredito(Model\Venta $venta, array $data): void
{
try {
$fecha = new DateTimeImmutable($data['fecha']);
- } catch (\DateMalformedStringException) {
+ } catch (DateMalformedStringException) {
$fecha = new DateTimeImmutable();
}
$uf = $this->moneyService->getUF($fecha);
diff --git a/app/src/Service/Venta/BonoPie.php b/app/src/Service/Venta/BonoPie.php
index 51dd1e5..c0528f0 100644
--- a/app/src/Service/Venta/BonoPie.php
+++ b/app/src/Service/Venta/BonoPie.php
@@ -2,6 +2,7 @@
namespace Incoviba\Service\Venta;
use Incoviba\Common\Implement\Exception\EmptyResult;
+use Incoviba\Exception\ServiceAction\Read;
use Incoviba\Repository;
use Incoviba\Model;
use Psr\Log\LoggerInterface;
@@ -27,8 +28,18 @@ class BonoPie
}
return $bono;
}
+
+ /**
+ * @param int $venta_id
+ * @return Model\Venta\BonoPie
+ * @throws Read
+ */
public function getByVenta(int $venta_id): Model\Venta\BonoPie
{
- return $this->bonoPieRepository->fetchByVenta($venta_id);
+ try {
+ return $this->bonoPieRepository->fetchByVenta($venta_id);
+ } catch (EmptyResult $exception) {
+ throw new Read(__CLASS__, $exception);
+ }
}
}
diff --git a/app/src/Service/Venta/Cierre.php b/app/src/Service/Venta/Cierre.php
index 02c921d..b9652ed 100644
--- a/app/src/Service/Venta/Cierre.php
+++ b/app/src/Service/Venta/Cierre.php
@@ -17,7 +17,7 @@ class Cierre
public function getByProyecto(int $proyecto_id): array
{
$cierres = $this->cierreRepository->fetchByProyecto($proyecto_id);
- foreach ($cierres as &$cierre) {
+ foreach ($cierres as $cierre) {
$cierre->estados = $this->estadoCierreRepository->fetchByCierre($cierre->id);
$cierre->current = $this->estadoCierreRepository->fetchCurrentByCierre($cierre->id);
$cierre->unidades = $this->unidadRepository->fetchByCierre($cierre->id);
@@ -30,7 +30,7 @@ class Cierre
$cierre->estados = $this->estadoCierreRepository->fetchByCierre($cierre_id);
$cierre->current = $this->estadoCierreRepository->fetchCurrentByCierre($cierre_id);
$cierre->unidades = $this->unidadRepository->fetchByCierre($cierre_id);
- foreach ($cierre->unidades as &$unidad) {
+ foreach ($cierre->unidades as $unidad) {
$unidad->currentPrecio = $this->precioRepository->fetchByUnidadAndDate($unidad->id, $cierre->dateTime->format('Y-m-d'));
}
$cierre->valoresCierre = $this->valorCierreRepository->fetchByCierre($cierre_id);
diff --git a/app/src/Service/Venta/Credito.php b/app/src/Service/Venta/Credito.php
index b6cb9bf..3d8b5d2 100644
--- a/app/src/Service/Venta/Credito.php
+++ b/app/src/Service/Venta/Credito.php
@@ -3,6 +3,8 @@ namespace Incoviba\Service\Venta;
use Exception;
use DateTimeImmutable;
+use Incoviba\Common\Implement\Exception\EmptyResult;
+use Incoviba\Exception\ServiceAction\Read;
use Psr\Log\LoggerInterface;
use Incoviba\Common\Ideal;
use Incoviba\Repository;
@@ -24,9 +26,18 @@ class Credito extends Ideal\Service
parent::__construct($logger);
}
+ /**
+ * @param int $venta_id
+ * @return Model\Venta\Credito
+ * @throws Read
+ */
public function getByVenta(int $venta_id): Model\Venta\Credito
{
- return $this->creditoRepository->fetchByVenta($venta_id);
+ try {
+ return $this->creditoRepository->fetchByVenta($venta_id);
+ } catch (EmptyResult $exception) {
+ throw new Read(__CLASS__, $exception);
+ }
}
/**
diff --git a/app/src/Service/Venta/Cuota.php b/app/src/Service/Venta/Cuota.php
index 960a315..cfc9b28 100644
--- a/app/src/Service/Venta/Cuota.php
+++ b/app/src/Service/Venta/Cuota.php
@@ -3,6 +3,7 @@ namespace Incoviba\Service\Venta;
use DateTimeImmutable;
use DateInterval;
+use Incoviba\Common\Implement\Exception\EmptyResult;
use IntlDateFormatter;
use Psr\Log\LoggerInterface;
use Incoviba\Common\Ideal;
diff --git a/app/src/Service/Venta/Escritura.php b/app/src/Service/Venta/Escritura.php
index 9b6824f..7b12632 100644
--- a/app/src/Service/Venta/Escritura.php
+++ b/app/src/Service/Venta/Escritura.php
@@ -3,6 +3,7 @@ namespace Incoviba\Service\Venta;
use Exception;
use DateTimeImmutable;
+use DateMalformedStringException;
use Psr\Log\LoggerInterface;
use Incoviba\Common\Ideal;
use Incoviba\Common\Implement\Exception\EmptyResult;
@@ -65,7 +66,7 @@ class Escritura extends Ideal\Service
}
try {
$data['fecha'] = (new DateTimeImmutable($data['fecha']))->format('Y-m-d');
- } catch (\DateMalformedStringException) {
+ } catch (DateMalformedStringException) {
unset($data['fecha']);
}
diff --git a/app/src/Service/Venta/FormaPago.php b/app/src/Service/Venta/FormaPago.php
index 105fe18..6b8f17a 100644
--- a/app/src/Service/Venta/FormaPago.php
+++ b/app/src/Service/Venta/FormaPago.php
@@ -1,12 +1,14 @@
pie = $this->pieService->getByVenta($venta_id);
- } catch (Implement\Exception\EmptyResult) {}
+ } catch (Read) {}
try {
$formaPago->bonoPie = $this->bonoPieService->getByVenta($venta_id);
- } catch (Implement\Exception\EmptyResult) {}
+ } catch (Read) {}
try {
$formaPago->credito = $this->creditoService->getByVenta($venta_id);
- } catch (Implement\Exception\EmptyResult) {}
+ } catch (Read) {}
try {
$formaPago->escritura = $this->escrituraRepository->fetchByVenta($venta_id);
} catch (Implement\Exception\EmptyResult) {}
try {
$formaPago->subsidio = $this->subsidioService->getByVenta($venta_id);
- } catch (Implement\Exception\EmptyResult) {}
+ } catch (Read) {}
try {
$formaPago->devolucion = $this->pagoService->getDevolucionByVenta($venta_id);
- } catch (Implement\Exception\EmptyResult) {}
+ } catch (Read) {}
try {
$formaPago->cuotasAbono = $this->cuotaRepository->fetchByVenta($venta_id);
} catch (Implement\Exception\EmptyResult) {}
@@ -66,7 +68,7 @@ class FormaPago extends Ideal\Service
$method = 'add' . str_replace(' ', '', ucwords(str_replace('_', ' ', $name)));
$obj = $this->{$method}($data);
$forma_pago->{$name} = $obj;
- } catch (\Error $error) {
+ } catch (Error $error) {
$this->logger->critical($error);
}
}
diff --git a/app/src/Service/Venta/Pago.php b/app/src/Service/Venta/Pago.php
index 3273f58..f9313dc 100644
--- a/app/src/Service/Venta/Pago.php
+++ b/app/src/Service/Venta/Pago.php
@@ -4,6 +4,8 @@ namespace Incoviba\Service\Venta;
use Exception;
use DateTimeInterface;
use DateTimeImmutable;
+use DateMalformedStringException;
+use Incoviba\Exception\ServiceAction\Read;
use PDOException;
use Incoviba\Common\Implement\Exception\EmptyResult;
use Incoviba\Repository;
@@ -112,9 +114,19 @@ class Pago
{
return [];
}
+
+ /**
+ * @param int $venta_id
+ * @return Model\Venta\Pago
+ * @throws Read
+ */
public function getDevolucionByVenta(int $venta_id): Model\Venta\Pago
{
- return $this->process($this->pagoRepository->fetchDevolucionByVenta($venta_id));
+ try {
+ return $this->process($this->pagoRepository->fetchDevolucionByVenta($venta_id));
+ } catch (EmptyResult $exception) {
+ throw new Read(__CLASS__, $exception);
+ }
}
public function add(array $data): Model\Venta\Pago
@@ -122,7 +134,7 @@ class Pago
if (!isset($data['uf'])) {
try {
$data['uf'] = $this->ufService->get(new DateTimeImmutable($data['fecha']));
- } catch (\DateMalformedStringException) {
+ } catch (DateMalformedStringException) {
$data['uf'] = 0;
}
}
@@ -147,14 +159,14 @@ class Pago
if (array_key_exists('fecha', $data)) {
try {
$data['fecha'] = (new DateTimeImmutable($data['fecha']))->format('Y-m-d');
- } catch (\DateMalformedStringException) {
+ } catch (DateMalformedStringException) {
$data['fecha'] = (new DateTimeImmutable())->format('Y-m-d');
}
}
if (array_key_exists('uf', $data)) {
try {
$data['uf'] = $this->ufService->get(new DateTimeImmutable($data['fecha']));
- } catch (\DateMalformedStringException) {
+ } catch (DateMalformedStringException) {
$data['uf'] = 0;
}
}
@@ -171,7 +183,7 @@ class Pago
try {
$this->pagoRepository->remove($pago);
return true;
- } catch (EmptyResult|PDOException) {
+ } catch (PDOException) {
return false;
}
}
diff --git a/app/src/Service/Venta/Pie.php b/app/src/Service/Venta/Pie.php
index 92e13bc..b48e41a 100644
--- a/app/src/Service/Venta/Pie.php
+++ b/app/src/Service/Venta/Pie.php
@@ -3,6 +3,7 @@ namespace Incoviba\Service\Venta;
use Incoviba\Common\Implement\Exception\EmptyResult;
use Incoviba\Common\Implement\Repository\Factory;
+use Incoviba\Exception\ServiceAction\Read;
use Incoviba\Repository;
use Incoviba\Model;
@@ -20,7 +21,11 @@ class Pie
}
public function getByVenta(int $venta_id): Model\Venta\Pie
{
- return $this->process($this->pieRepository->fetchByVenta($venta_id));
+ try {
+ return $this->process($this->pieRepository->fetchByVenta($venta_id));
+ } catch (EmptyResult $exception) {
+ throw new Read(__CLASS__, $exception);
+ }
}
public function add(array $data): Model\Venta\Pie
diff --git a/app/src/Service/Venta/Precio.php b/app/src/Service/Venta/Precio.php
index d6ec40a..a8ee641 100644
--- a/app/src/Service/Venta/Precio.php
+++ b/app/src/Service/Venta/Precio.php
@@ -1,6 +1,8 @@
precioRepository->fetchByProyecto($proyecto_id);
- foreach ($precios as &$precio) {
- $precio->estados = $this->estadoPrecioRepository->fetchByPrecio($precio->id);
- $precio->current = $this->estadoPrecioRepository->fetchCurrentByPrecio($precio->id);
+ try {
+ $precios = $this->precioRepository->fetchByProyecto($proyecto_id);
+ foreach ($precios as $precio) {
+ $precio->estados = $this->estadoPrecioRepository->fetchByPrecio($precio->id);
+ $precio->current = $this->estadoPrecioRepository->fetchCurrentByPrecio($precio->id);
+ }
+ return $precios;
+ } catch (EmptyResult $exception) {
+ throw new Read(__CLASS__, $exception);
}
- return $precios;
}
+
+ /**
+ * @param int $unidad_id
+ * @return Model\Venta\Precio
+ * @throws Read
+ */
public function getVigenteByUnidad(int $unidad_id): Model\Venta\Precio
{
- $precio = $this->precioRepository->fetchVigenteByUnidad($unidad_id);
- $precio->estados = $this->estadoPrecioRepository->fetchByPrecio($precio->id);
- $precio->current = $this->estadoPrecioRepository->fetchCurrentByPrecio($precio->id);
- return $precio;
- }
- public function getByUnidad(int $unidad_id): array
- {
- $precios = $this->precioRepository->fetchByUnidad($unidad_id);
- foreach ($precios as &$precio) {
+ try {
+ $precio = $this->precioRepository->fetchVigenteByUnidad($unidad_id);
$precio->estados = $this->estadoPrecioRepository->fetchByPrecio($precio->id);
$precio->current = $this->estadoPrecioRepository->fetchCurrentByPrecio($precio->id);
+ return $precio;
+ } catch (EmptyResult $exception) {
+ throw new Read(__CLASS__, $exception);
+ }
+ }
+
+ /**
+ * @param int $unidad_id
+ * @return array
+ * @throws Read
+ */
+ public function getByUnidad(int $unidad_id): array
+ {
+ try {
+ $precios = $this->precioRepository->fetchByUnidad($unidad_id);
+ foreach ($precios as $precio) {
+ $precio->estados = $this->estadoPrecioRepository->fetchByPrecio($precio->id);
+ $precio->current = $this->estadoPrecioRepository->fetchCurrentByPrecio($precio->id);
+ }
+ return $precios;
+ } catch (EmptyResult $exception) {
+ throw new Read(__CLASS__, $exception);
}
- return $precios;
}
}
diff --git a/app/src/Service/Venta/PropiedadUnidad.php b/app/src/Service/Venta/PropiedadUnidad.php
index 2995983..b2c08a5 100644
--- a/app/src/Service/Venta/PropiedadUnidad.php
+++ b/app/src/Service/Venta/PropiedadUnidad.php
@@ -2,6 +2,7 @@
namespace Incoviba\Service\Venta;
use Incoviba\Common\Implement\Exception\EmptyResult;
+use Incoviba\Exception\ServiceAction\Read;
use Incoviba\Repository;
use Incoviba\Service;
use Incoviba\Model;
@@ -51,10 +52,10 @@ class PropiedadUnidad
try {
$unidad->precios = $this->precioService->getByUnidad($unidad->id);
$unidad->currentPrecio = $this->precioService->getVigenteByUnidad($unidad->id);
- if ($unidad->valor === 0 or $unidad->valor === null) {
+ if ($unidad->valor === null or $unidad->valor === 0) {
$unidad->valor = $unidad->currentPrecio->valor;
}
- } catch (EmptyResult) {}
+ } catch (Read) {}
return $unidad;
}
}
diff --git a/app/src/Service/Venta/Subsidio.php b/app/src/Service/Venta/Subsidio.php
index d7cdfb9..c99684b 100644
--- a/app/src/Service/Venta/Subsidio.php
+++ b/app/src/Service/Venta/Subsidio.php
@@ -1,8 +1,9 @@
subsidioRepository->fetchByVenta($venta_id);
+ try {
+ return $this->subsidioRepository->fetchByVenta($venta_id);
+ } catch (EmptyResult $exception) {
+ throw new Read(__CLASS__, $exception);
+ }
}
/**
diff --git a/app/src/Service/Venta/Unidad.php b/app/src/Service/Venta/Unidad.php
index 01be029..76593ad 100644
--- a/app/src/Service/Venta/Unidad.php
+++ b/app/src/Service/Venta/Unidad.php
@@ -1,6 +1,8 @@
precios = $this->precioService->getByUnidad($unidad->id);
$unidad->currentPrecio = $this->precioService->getVigenteByUnidad($unidad->id);
- } catch (EmptyResult) {
- }
+ } catch (Read) {}
return $unidad;
}
}