Cleanup
This commit is contained in:
@ -36,46 +36,71 @@ class Cartola
|
|||||||
{
|
{
|
||||||
$cuenta = $this->cuentaRepository->fetchByInmobiliariaAndBanco($inmobiliaria->rut, $banco->id);
|
$cuenta = $this->cuentaRepository->fetchByInmobiliariaAndBanco($inmobiliaria->rut, $banco->id);
|
||||||
|
|
||||||
$ms = $this->bancos[strtolower($banco->nombre)]->process($file);
|
$ms = $this->getMovimientosDiarios($banco, $file);
|
||||||
$ms = array_reverse($ms);
|
|
||||||
$c = array_shift($ms);
|
|
||||||
$cargos = 0;
|
|
||||||
$abonos = 0;
|
|
||||||
$saldo = $c['saldo'];
|
|
||||||
|
|
||||||
|
$cartolaData = [
|
||||||
|
'cargos' => 0,
|
||||||
|
'abonos' => 0,
|
||||||
|
'saldo' => 0
|
||||||
|
];
|
||||||
$movimientos = [];
|
$movimientos = [];
|
||||||
foreach ($ms as $m) {
|
foreach ($ms as $m) {
|
||||||
$m['cuenta_id'] = $cuenta->id;
|
$movimiento = $this->buildMovimiento($cuenta, $m);
|
||||||
try {
|
|
||||||
$movimiento = $this->movimientoRepository
|
|
||||||
->fetchByCuentaAndFechaAndMonto(
|
|
||||||
$cuenta->id,
|
|
||||||
new DateTimeImmutable($m['fecha']),
|
|
||||||
$m['cargo'] ?? $m['abono']
|
|
||||||
);
|
|
||||||
} catch (Exception\EmptyResult) {
|
|
||||||
$movimiento = $this->movimientoRepository->create($m);
|
|
||||||
$movimiento = $this->movimientoRepository->save($movimiento);
|
|
||||||
}
|
|
||||||
$movimientos []= $movimiento;
|
$movimientos []= $movimiento;
|
||||||
|
|
||||||
if ($movimiento->fecha === $fecha) {
|
if ($movimiento->fecha === $fecha) {
|
||||||
$cargos += $movimiento->cargo;
|
$cartolaData['cargos'] += $movimiento->cargo;
|
||||||
$abonos += $movimiento->abono;
|
$cartolaData['abonos'] += $movimiento->abono;
|
||||||
}
|
}
|
||||||
$saldo = $m['saldo'];
|
$cartolaData['saldo'] = $movimiento->saldo;
|
||||||
}
|
|
||||||
try {
|
|
||||||
$cartola = $this->cartolaRepository->fetchByCuentaAndFecha($cuenta->id, $fecha);
|
|
||||||
} catch (Exception\EmptyResult) {
|
|
||||||
$cartola = $this->cartolaRepository->create([
|
|
||||||
'cuenta_id' => $cuenta->id,
|
|
||||||
'fecha' => $fecha->format('Y-m-d'),
|
|
||||||
'cargos' => $cargos,
|
|
||||||
'abonos' => $abonos,
|
|
||||||
'saldo' => $saldo
|
|
||||||
]);
|
|
||||||
$cartola = $this->cartolaRepository->save($cartola);
|
|
||||||
}
|
}
|
||||||
|
$cartola = $this->buildCartola($cuenta, $fecha, $cartolaData);
|
||||||
return compact('cartola', 'movimientos');
|
return compact('cartola', 'movimientos');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function getMovimientosDiarios(Model\Banco $banco, UploadedFileInterface $file): array
|
||||||
|
{
|
||||||
|
$movimientos = $this->bancos[strtolower($banco->nombre)]->process($file);
|
||||||
|
switch ($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;
|
||||||
|
}
|
||||||
|
protected function buildCartola(Model\Inmobiliaria\Cuenta $cuenta, DateTimeInterface $fecha, array $data): Model\Cartola
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
return $this->cartolaRepository->fetchByCuentaAndFecha($cuenta->id, $fecha);
|
||||||
|
} catch (Exception\EmptyResult) {
|
||||||
|
$data['cuenta_id'] = $cuenta->id;
|
||||||
|
$data['fecha'] = $fecha->format('Y-m-d');
|
||||||
|
$cartola = $this->cartolaRepository->create($data);
|
||||||
|
return $this->cartolaRepository->save($cartola);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
protected function buildMovimiento(Model\Inmobiliaria\Cuenta $cuenta, array $data): Model\Movimiento
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
return $this->movimientoRepository
|
||||||
|
->fetchByCuentaAndFechaAndMonto(
|
||||||
|
$cuenta->id,
|
||||||
|
new DateTimeImmutable($data['fecha']),
|
||||||
|
$data['cargo'] ?? $data['abono']
|
||||||
|
);
|
||||||
|
} catch (Exception\EmptyResult) {
|
||||||
|
$data['cuenta_id'] = $cuenta->id;
|
||||||
|
$movimiento = $this->movimientoRepository->create($data);
|
||||||
|
return $this->movimientoRepository->save($movimiento);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user