FIX: Saldos cartola diaria

This commit is contained in:
Juan Pablo Vial
2024-03-21 21:18:40 -03:00
parent 735c341729
commit 019974614c
4 changed files with 26 additions and 13 deletions

View File

@ -4,6 +4,8 @@
"type": "project", "type": "project",
"require": { "require": {
"berrnd/slim-blade-view": "^1.0", "berrnd/slim-blade-view": "^1.0",
"ext-openssl": "*",
"ext-pdo": "*",
"guzzlehttp/guzzle": "^7.8", "guzzlehttp/guzzle": "^7.8",
"monolog/monolog": "^3.4", "monolog/monolog": "^3.4",
"nyholm/psr7": "^1.8", "nyholm/psr7": "^1.8",

View File

@ -50,20 +50,24 @@ class Cartola extends Service
'saldo' => 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) {
$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;
$cartolaData['cargos'] += $movimiento->cargo; $cartolaData['cargos'] += $movimiento->cargo;
$cartolaData['abonos'] += $movimiento->abono; $cartolaData['abonos'] += $movimiento->abono;
} }
if ($movimiento->fecha->getTimestamp() > $fecha->getTimestamp()) {
continue;
}
$cartolaData['saldo'] = $movimiento->saldo;
} }
$cartolaData['saldo'] = $ultimo->saldo;
$cartola = $this->buildCartola($cuenta, $fecha, $cartolaData); $cartola = $this->buildCartola($cuenta, $fecha, $cartolaData);
return compact('cartola', 'movimientos'); return compact('cartola', 'movimientos');
} }

View File

@ -13,7 +13,7 @@ class BCI extends Banco
'Fecha Transacción' => 'fecha', 'Fecha Transacción' => 'fecha',
'Cargo $ (-)' => 'cargo', 'Cargo $ (-)' => 'cargo',
'Abono $ (+)' => 'abono', 'Abono $ (+)' => 'abono',
'Descripción' => 'descripcion', 'Descripción' => 'glosa',
'Saldo' => 'saldo' 'Saldo' => 'saldo'
]; ];
} }
@ -65,8 +65,8 @@ class BCI extends Banco
$rowData['Fecha Transacción'] = implode('-', array_reverse(explode('/', $rowData['Fecha Transacción']))); $rowData['Fecha Transacción'] = implode('-', array_reverse(explode('/', $rowData['Fecha Transacción'])));
$rowData['Cargo $ (-)'] = (int) str_replace('.', '', $rowData['Cargo $ (-)'] ?? 0); $rowData['Cargo $ (-)'] = (int) str_replace('.', '', $rowData['Cargo $ (-)'] ?? 0);
$rowData['Abono $ (+)'] = (int) str_replace('.', '', $rowData['Abono $ (+)'] ?? 0); $rowData['Abono $ (+)'] = (int) str_replace('.', '', $rowData['Abono $ (+)'] ?? 0);
$saldo = $saldo + $rowData['Cargo $ (-)'] - $rowData['Abono $ (+)'];
$rowData['Saldo'] = $saldo; $rowData['Saldo'] = $saldo;
$saldo = $saldo + $rowData['Cargo $ (-)'] - $rowData['Abono $ (+)'];
unset($rowData['']); unset($rowData['']);
$data []= $rowData; $data []= $rowData;

View File

@ -26,17 +26,24 @@ class Santander extends Banco
} }
protected function getFilename(UploadedFileInterface $uploadedFile): string protected function getFilename(UploadedFileInterface $uploadedFile): string
{ {
$start = $uploadedFile->getStream()->read(10);
if (str_starts_with($start, '<')) {
return '/tmp/cartola.html';
}
return '/tmp/cartola.xlsx'; return '/tmp/cartola.xlsx';
} }
protected function parseFile(string $filename): array protected function parseFile(string $filename): array
{ {
$reader = PhpSpreadsheet\IOFactory::createReader('Xlsx'); if (str_ends_with($filename, 'xlsx')) {
try { return $this->parseXlsx($filename);
$xlsx = $reader->load($filename);
} catch (PhpSpreadsheet\Reader\Exception) {
return $this->parseHtml($filename);
} }
return $this->parseHtml($filename);
}
protected function parseXlsx(string $filename): array
{
$reader = PhpSpreadsheet\IOFactory::createReader('Xlsx');
$xlsx = $reader->load($filename);
$sheet = $xlsx->getActiveSheet(); $sheet = $xlsx->getActiveSheet();
$found = false; $found = false;
@ -66,7 +73,7 @@ class Santander extends Banco
if ($mapped === 'fecha') { if ($mapped === 'fecha') {
$value = implode('-', array_reverse(explode('/', $value))); $value = implode('-', array_reverse(explode('/', $value)));
} }
if ($column === 'MONTO') { if ($column === 'MONTO' or $column === 'SALDO') {
$value = (int) $value; $value = (int) $value;
} }
$rowData[$column] = $value; $rowData[$column] = $value;
@ -109,10 +116,10 @@ class Santander extends Banco
foreach (['Cargo ($)', 'Abono ($)', 'Saldo Diario'] as $column) { foreach (['Cargo ($)', 'Abono ($)', 'Saldo Diario'] as $column) {
$row[$column] = (int) str_replace('.', '', $row[$column]); $row[$column] = (int) str_replace('.', '', $row[$column]);
} }
$row['Saldo Diario'] -= ($row['Abono ($)'] - $row['Cargo ($)']);
$row['N° DOCUMENTO'] = ''; $row['N° DOCUMENTO'] = '';
$data []= $row; $data []= $row;
} }
return $data; return $data;
} }
protected function parseHtmlRow(array $lines, int &$rowIndex): array protected function parseHtmlRow(array $lines, int &$rowIndex): array