Cartola Diaria

This commit is contained in:
Juan Pablo Vial
2024-02-19 22:39:22 -03:00
parent 51cabee824
commit 879b612493
8 changed files with 529 additions and 249 deletions

View File

@ -39,11 +39,9 @@ class Cartola extends Service
{
return $this->exporter->export($inmobiliaria, $banco, $mes, $movimientos);
}
public function diaria(Model\Inmobiliaria $inmobiliaria, Model\Banco $banco, DateTimeInterface $fecha, UploadedFileInterface $file): array
public function diaria(Model\Inmobiliaria\Cuenta $cuenta, DateTimeInterface $fecha, UploadedFileInterface $file): array
{
$cuenta = $this->cuentaRepository->fetchByInmobiliariaAndBanco($inmobiliaria->rut, $banco->id);
$ms = $this->getMovimientosDiarios($banco, $file);
$ms = $this->getMovimientosDiarios($cuenta->banco, $file);
$cartolaData = [
'cargos' => 0,
@ -59,6 +57,9 @@ class Cartola extends Service
$cartolaData['cargos'] += $movimiento->cargo;
$cartolaData['abonos'] += $movimiento->abono;
}
if ($movimiento->fecha->getTimestamp() > $fecha->getTimestamp()) {
continue;
}
$cartolaData['saldo'] = $movimiento->saldo;
}
$cartola = $this->buildCartola($cuenta, $fecha, $cartolaData);
@ -68,21 +69,7 @@ class Cartola extends Service
protected function getMovimientosDiarios(Model\Banco $banco, UploadedFileInterface $file): array
{
$movimientos = $this->bancos[strtolower($banco->nombre)]->process($file);
switch (strtolower($banco->nombre)) {
case 'security':
$movimientos = $this->processMovimientosDiariosSecurity($movimientos);
break;
case 'itau':
case 'santander':
break;
}
return $movimientos;
}
protected function processMovimientosDiariosSecurity(array $movimientos): array
{
$movimientos = array_reverse($movimientos);
array_shift($movimientos);
return $movimientos;
return $this->bancos[strtolower($banco->nombre)]->processMovimientosDiarios($movimientos);
}
protected function buildCartola(Model\Inmobiliaria\Cuenta $cuenta, DateTimeInterface $fecha, array $data): Model\Cartola
{
@ -98,13 +85,14 @@ class Cartola extends Service
protected function buildMovimiento(Model\Inmobiliaria\Cuenta $cuenta, array $data): Model\Movimiento
{
try {
$valor = ($data['cargo'] !== 0 and $data['cargo'] !== null) ? $data['cargo'] : $data['abono'];
return $this->movimientoRepository
->fetchByCuentaAndFechaAndMonto(
$cuenta->id,
new DateTimeImmutable($data['fecha']),
$data['cargo'] ?? $data['abono']
$valor
);
} catch (Exception\EmptyResult) {
} catch (Exception\EmptyResult $exception) {
$data['cuenta_id'] = $cuenta->id;
$movimiento = $this->movimientoRepository->create($data);
return $this->movimientoRepository->save($movimiento);