From bc5967b2be4d0ad47260a5059fcd721157f25866 Mon Sep 17 00:00:00 2001 From: Juan Pablo Vial Date: Wed, 12 Nov 2025 10:28:01 -0300 Subject: [PATCH] FIX: Proveedor::contacto == null --- app/common/Ideal/Repository.php | 2 ++ .../API/Contabilidad/Movimientos.php | 4 ++-- .../Repository/Contabilidad/Movimiento.php | 20 +++++++++++++++++++ app/src/Repository/Inmobiliaria/Proveedor.php | 5 ++++- 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/app/common/Ideal/Repository.php b/app/common/Ideal/Repository.php index 1014be5..7be9790 100644 --- a/app/common/Ideal/Repository.php +++ b/app/common/Ideal/Repository.php @@ -45,6 +45,8 @@ abstract class Repository implements Define\Repository } /** + * @param int $id + * @return Define\Model * @throws EmptyResult */ public function fetchById(int $id): Define\Model diff --git a/app/src/Controller/API/Contabilidad/Movimientos.php b/app/src/Controller/API/Contabilidad/Movimientos.php index fb290fc..2068689 100644 --- a/app/src/Controller/API/Contabilidad/Movimientos.php +++ b/app/src/Controller/API/Contabilidad/Movimientos.php @@ -88,8 +88,8 @@ class Movimientos extends Ideal\Controller $sociedades_ruts = $input['sociedades_ruts']; foreach ($sociedades_ruts as $sociedadRut) { try { - $movimientos = $movimientoService->getAmountBySociedadAndMes($sociedadRut, new DateTimeImmutable($input['mes']), $input['amount'] ?? null); - $output['movimientos'] = array_merge($output['movimientos'], $this->movimientosToArray($movimientos)); + $movimientos = $movimientoService->getAmountBySociedadAndMes($sociedadRut, new DateTimeImmutable($input['mes']), $input['amount'] ?? null); + $output['movimientos'] = array_merge($output['movimientos'], $this->movimientosToArray($movimientos)); } catch (EmptyResult) {} } return $this->withJson($response, $output); diff --git a/app/src/Repository/Contabilidad/Movimiento.php b/app/src/Repository/Contabilidad/Movimiento.php index c2260a8..f2c3160 100644 --- a/app/src/Repository/Contabilidad/Movimiento.php +++ b/app/src/Repository/Contabilidad/Movimiento.php @@ -54,6 +54,11 @@ class Movimiento extends Ideal\Repository return $this->update($model, ['cuenta_id', 'fecha', 'glosa', 'documento', 'cargo', 'abono', 'saldo'], $new_data); } + /** + * @param int $cuenta_id + * @return array + * @throws Implement\Exception\EmptyResult + */ public function fetchByCuenta(int $cuenta_id): array { $query = $this->connection->getQueryBuilder() @@ -97,6 +102,13 @@ class Movimiento extends Ideal\Repository ->where("cuenta_id = ? AND fecha = ? AND SUBSTRING(LOWER(LTRIM(glosa)), 0, {$len}) = SUBSTRING(LOWER(LTRIM(?)), 0, {$len}) AND cargo = ? AND abono = ? AND saldo = ?"); return $this->fetchOne($query, [$cuenta_id, $fecha->format('Y-m-d'), $glosa, $cargo, $abono, $saldo]); } + + /** + * @param int $start + * @param int $amount + * @return array + * @throws Implement\Exception\EmptyResult + */ public function fetchAmountStartingFrom(int $start, int $amount): array { $query = $this->connection->getQueryBuilder() @@ -105,6 +117,14 @@ class Movimiento extends Ideal\Repository ->limit($amount, $start); return $this->fetchMany($query); } + + /** + * @param int $sociedad_rut + * @param DateTimeInterface $mes + * @param int|null $amount + * @return array + * @throws Implement\Exception\EmptyResult + */ public function fetchAmountBySociedadAndMes(int $sociedad_rut, DateTimeInterface $mes, ?int $amount): array { $query = $this->connection->getQueryBuilder() diff --git a/app/src/Repository/Inmobiliaria/Proveedor.php b/app/src/Repository/Inmobiliaria/Proveedor.php index d90197b..098f740 100644 --- a/app/src/Repository/Inmobiliaria/Proveedor.php +++ b/app/src/Repository/Inmobiliaria/Proveedor.php @@ -19,10 +19,13 @@ class Proveedor extends Ideal\Repository public function create(?array $data = null): Model\Inmobiliaria\Proveedor { - $map = (new Implement\Repository\MapperParser(['rut', 'digito', 'nombre', 'razon'])) + $map = new Implement\Repository\MapperParser(['rut', 'digito', 'nombre', 'razon']) ->register('contacto_rut', (new Implement\Repository\Mapper()) ->setProperty('contacto') ->setFunction(function($data) { + if ($data['contacto_rut'] === null) { + return null; + } return $this->personaService->getById($data['contacto_rut']); }) ->setDefault(null));