Cartola diaria adds all cartolas

This commit is contained in:
Juan Pablo Vial
2024-03-21 21:57:32 -03:00
parent 019974614c
commit 63400af1db
3 changed files with 24 additions and 19 deletions

View File

@ -44,31 +44,28 @@ class Cartola extends Service
{ {
$ms = $this->getMovimientosDiarios($cuenta->banco, $file); $ms = $this->getMovimientosDiarios($cuenta->banco, $file);
$cartolaData = [
'cargos' => 0,
'abonos' => 0,
'saldo' => 0
];
$movimientos = []; $movimientos = [];
$ultimo = null;
foreach ($ms as $m) { foreach ($ms as $m) {
$movimiento = $this->buildMovimiento($cuenta, $m); $movimiento = $this->buildMovimiento($cuenta, $m);
$movimiento = $this->movimientoService->process($movimiento); $movimiento = $this->movimientoService->process($movimiento);
if ($ultimo === null) { $this->groupMovimientoByDay($movimiento);
$ultimo = $movimiento;
}
if ($ultimo->fecha < $movimiento->fecha and $movimiento->fecha <= $fecha) {
$ultimo = $movimiento;
}
if ($movimiento->fecha->getTimestamp() === $fecha->getTimestamp()) { if ($movimiento->fecha->getTimestamp() === $fecha->getTimestamp()) {
$movimientos []= $movimiento; $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['cargos'] += $movimiento->cargo;
$cartolaData['abonos'] += $movimiento->abono; $cartolaData['abonos'] += $movimiento->abono;
} }
$this->buildCartola($cuenta, end($movimientos)->fecha, $cartolaData);
} }
$cartolaData['saldo'] = $ultimo->saldo; $cartola = $this->cartolaRepository->fetchByCuentaAndFecha($cuenta->id, $fecha);
$cartola = $this->buildCartola($cuenta, $fecha, $cartolaData);
return compact('cartola', 'movimientos'); return compact('cartola', 'movimientos');
} }
public function diariaManual(Model\Inmobiliaria\Cuenta $cuenta, DateTimeInterface $fecha, array $data): array 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); $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 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 protected function buildCartola(Model\Inmobiliaria\Cuenta $cuenta, DateTimeInterface $fecha, array $data): Model\Cartola
{ {
try { try {

View File

@ -71,8 +71,7 @@ class BCI extends Banco
$data []= $rowData; $data []= $rowData;
} }
return array_reverse($data);
return $data;
} }
protected function getRowData(PhpSpreadsheet\Worksheet\Row $row): array protected function getRowData(PhpSpreadsheet\Worksheet\Row $row): array

View File

@ -89,7 +89,7 @@ class Santander extends Banco
$data []= $rowData; $data []= $rowData;
} }
return $data; return array_reverse($data);
} }
protected function parseHtml(string $filename): array protected function parseHtml(string $filename): array
{ {
@ -120,7 +120,7 @@ class Santander extends Banco
$data []= $row; $data []= $row;
} }
return $data; return array_reverse($data);
} }
protected function parseHtmlRow(array $lines, int &$rowIndex): array protected function parseHtmlRow(array $lines, int &$rowIndex): array
{ {