Agregar Cartolas al importar, y chequeo de Cartolas faltantes
This commit is contained in:
@ -57,13 +57,13 @@ class Cartola extends Service
|
||||
$cartolaData = [
|
||||
'cargos' => 0,
|
||||
'abonos' => 0,
|
||||
'saldo' => end($movimientos)->saldo
|
||||
'saldo' => last($movimientos)->saldo
|
||||
];
|
||||
foreach ($movimientos as $movimiento) {
|
||||
$cartolaData['cargos'] += $movimiento->cargo;
|
||||
$cartolaData['abonos'] += $movimiento->abono;
|
||||
}
|
||||
$this->buildCartola($cuenta, end($movimientos)->fecha, $cartolaData);
|
||||
$this->buildCartola($cuenta, last($movimientos)->fecha, $cartolaData);
|
||||
}
|
||||
$cartola = $this->cartolaRepository->fetchByCuentaAndFecha($cuenta->id, $fecha);
|
||||
return compact('cartola', 'movimientos');
|
||||
@ -109,6 +109,31 @@ class Cartola extends Service
|
||||
}
|
||||
$this->movimientoService->add($dataMovimiento);
|
||||
}
|
||||
$fechas = array_unique(array_map(function($movimiento) {
|
||||
return $movimiento['fecha']->format('Y-m-d');
|
||||
}, $movimientos));
|
||||
foreach ($fechas as $dia) {
|
||||
try {
|
||||
$this->cartolaRepository->fetchByCuentaAndFecha($cuenta->id, new DateTimeImmutable($dia));
|
||||
continue;
|
||||
} catch (Exception\EmptyResult) {}
|
||||
$movs = array_filter($movimientos, function($movimiento) use ($dia) {
|
||||
return $movimiento['fecha']->format('Y-m-d') === $dia;
|
||||
});
|
||||
$cargos = array_sum(array_map(function($movimiento) {
|
||||
return $movimiento['cargo'];
|
||||
}, $movs));
|
||||
$abonos = array_sum(array_map(function($movimiento) {
|
||||
return $movimiento['abono'];
|
||||
}, $movs));
|
||||
$saldo = last($movs)['saldo'];
|
||||
$cartolaData = [
|
||||
'cargos' => $cargos,
|
||||
'abonos' => $abonos,
|
||||
'saldo' => $saldo
|
||||
];
|
||||
$this->buildCartola($cuenta, new DateTimeImmutable($dia), $cartolaData);
|
||||
}
|
||||
|
||||
$inmobiliaria = $cuenta->inmobiliaria;
|
||||
return array_map(function($movimiento) use ($inmobiliaria) {
|
||||
@ -116,6 +141,66 @@ class Cartola extends Service
|
||||
return $movimiento;
|
||||
}, $movimientos);
|
||||
}
|
||||
public function check(): array
|
||||
{
|
||||
try {
|
||||
$cuentas = $this->cuentaRepository->fetchAll();
|
||||
$fechas = [];
|
||||
foreach ($cuentas as $cuenta) {
|
||||
$fechas[$cuenta->id] = $this->checkForCuenta($cuenta);
|
||||
}
|
||||
return $fechas;
|
||||
} catch (Exception\EmptyResult) {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
public function checkForCuenta(Model\Inmobiliaria\Cuenta $cuenta): array
|
||||
{
|
||||
$cartolas = $this->cartolaRepository->fetchByCuenta($cuenta->id);
|
||||
$movimientos = $this->movimientoRepository->fetchByCuenta($cuenta->id);
|
||||
$fechasMovimientos = array_unique(array_map(function(Model\Contabilidad\Movimiento $movimiento) {
|
||||
return $movimiento->fecha->format('Y-m-d');
|
||||
}, $movimientos));
|
||||
$fechasCartolas = array_map(function(Model\Contabilidad\Cartola $cartola) {
|
||||
return $cartola->fecha->format('Y-m-d');
|
||||
}, $cartolas);
|
||||
$fechas = array_diff($fechasMovimientos, $fechasCartolas);
|
||||
return array_values($fechas);
|
||||
}
|
||||
public function update(array $cuentas): array
|
||||
{
|
||||
$cartolas = [];
|
||||
foreach ($cuentas as $cuenta_id => $fechas) {
|
||||
$cuenta = $this->cuentaRepository->fetchById($cuenta_id);
|
||||
$cartolas[$cuenta_id] = $this->updateForCuenta($cuenta, $fechas);
|
||||
}
|
||||
return $cartolas;
|
||||
}
|
||||
public function updateForCuenta(Model\Inmobiliaria\Cuenta $cuenta, array $fechas): array
|
||||
{
|
||||
$cartolas = [];
|
||||
foreach ($fechas as $fecha) {
|
||||
$cartolas []= $this->updateForCuentaAndFecha($cuenta, new DateTimeImmutable($fecha));
|
||||
}
|
||||
return $cartolas;
|
||||
}
|
||||
public function updateForCuentaAndFecha(Model\Inmobiliaria\Cuenta $cuenta, DateTimeInterface $fecha): Model\Contabilidad\Cartola
|
||||
{
|
||||
try {
|
||||
return $this->cartolaRepository->fetchByCuentaAndFecha($cuenta->id, $fecha);
|
||||
} catch (Exception\EmptyResult) {}
|
||||
$movimientos = $this->movimientoRepository->fetchByCuentaAndFecha($cuenta->id, $fecha);
|
||||
$cartolaData = [
|
||||
'cargos' => array_sum(array_map(function(Model\Contabilidad\Movimiento $movimiento) {
|
||||
return $movimiento->cargo;
|
||||
}, $movimientos)),
|
||||
'abonos' => array_sum(array_map(function(Model\Contabilidad\Movimiento $movimiento) {
|
||||
return $movimiento->abono;
|
||||
}, $movimientos)),
|
||||
'saldo' => last($movimientos)->saldo
|
||||
];
|
||||
return $this->buildCartola($cuenta, $fecha, $cartolaData);
|
||||
}
|
||||
|
||||
protected function getMovimientosDiarios(Model\Contabilidad\Banco $banco, UploadedFileInterface $file): array
|
||||
{
|
||||
|
Reference in New Issue
Block a user