FIX: Saldos cartola diaria
This commit is contained in:
@ -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",
|
||||||
|
@ -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');
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user