From 63400af1db06b1d7250b53f9184d4ce229567f37 Mon Sep 17 00:00:00 2001 From: Juan Pablo Vial Date: Thu, 21 Mar 2024 21:57:32 -0300 Subject: [PATCH] Cartola diaria adds all cartolas --- app/src/Service/Cartola.php | 36 ++++++++++++++++----------- app/src/Service/Cartola/BCI.php | 3 +-- app/src/Service/Cartola/Santander.php | 4 +-- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/app/src/Service/Cartola.php b/app/src/Service/Cartola.php index 556d8c5..48f2299 100644 --- a/app/src/Service/Cartola.php +++ b/app/src/Service/Cartola.php @@ -44,31 +44,28 @@ class Cartola extends Service { $ms = $this->getMovimientosDiarios($cuenta->banco, $file); - $cartolaData = [ - 'cargos' => 0, - 'abonos' => 0, - 'saldo' => 0 - ]; $movimientos = []; - $ultimo = null; foreach ($ms as $m) { $movimiento = $this->buildMovimiento($cuenta, $m); $movimiento = $this->movimientoService->process($movimiento); - if ($ultimo === null) { - $ultimo = $movimiento; - } - if ($ultimo->fecha < $movimiento->fecha and $movimiento->fecha <= $fecha) { - $ultimo = $movimiento; - } - + $this->groupMovimientoByDay($movimiento); if ($movimiento->fecha->getTimestamp() === $fecha->getTimestamp()) { $movimientos []= $movimiento; + } + } + foreach ($this->groupedMovimientos as $timestamp => $movimientos) { + $cartolaData = [ + 'cargos' => 0, + 'abonos' => 0, + 'saldo' => end($movimientos)->saldo + ]; + foreach ($movimientos as $movimiento) { $cartolaData['cargos'] += $movimiento->cargo; $cartolaData['abonos'] += $movimiento->abono; } + $this->buildCartola($cuenta, end($movimientos)->fecha, $cartolaData); } - $cartolaData['saldo'] = $ultimo->saldo; - $cartola = $this->buildCartola($cuenta, $fecha, $cartolaData); + $cartola = $this->cartolaRepository->fetchByCuentaAndFecha($cuenta->id, $fecha); return compact('cartola', 'movimientos'); } public function diariaManual(Model\Inmobiliaria\Cuenta $cuenta, DateTimeInterface $fecha, array $data): array @@ -100,6 +97,15 @@ class Cartola extends Service $movimientos = $this->bancos[strtolower($banco->nombre)]->process($file); return $this->bancos[strtolower($banco->nombre)]->processMovimientosDiarios($movimientos); } + protected array $groupedMovimientos = []; + protected function groupMovimientoByDay(Model\Movimiento $movimiento): Cartola + { + if (!isset($this->groupedMovimientos[$movimiento->fecha->getTimestamp()])) { + $this->groupedMovimientos[$movimiento->fecha->getTimestamp()] = []; + } + $this->groupedMovimientos[$movimiento->fecha->getTimestamp()] []= $movimiento; + return $this; + } protected function buildCartola(Model\Inmobiliaria\Cuenta $cuenta, DateTimeInterface $fecha, array $data): Model\Cartola { try { diff --git a/app/src/Service/Cartola/BCI.php b/app/src/Service/Cartola/BCI.php index a211c81..470a3ce 100644 --- a/app/src/Service/Cartola/BCI.php +++ b/app/src/Service/Cartola/BCI.php @@ -71,8 +71,7 @@ class BCI extends Banco $data []= $rowData; } - - return $data; + return array_reverse($data); } protected function getRowData(PhpSpreadsheet\Worksheet\Row $row): array diff --git a/app/src/Service/Cartola/Santander.php b/app/src/Service/Cartola/Santander.php index b37a999..c3108bc 100644 --- a/app/src/Service/Cartola/Santander.php +++ b/app/src/Service/Cartola/Santander.php @@ -89,7 +89,7 @@ class Santander extends Banco $data []= $rowData; } - return $data; + return array_reverse($data); } protected function parseHtml(string $filename): array { @@ -120,7 +120,7 @@ class Santander extends Banco $data []= $row; } - return $data; + return array_reverse($data); } protected function parseHtmlRow(array $lines, int &$rowIndex): array {