public IActionResult SaveAuxiliarAndIngresosEgresos(ConciliacionViewModel conciliacionViewModel) { var procesoBancoServices = new ProcesoBancoServices(db); var procesoBanco = procesoBancoServices.Find(conciliacionViewModel.BancoCuenta, conciliacionViewModel.Year, conciliacionViewModel.Month); if (procesoBanco == null) { return(BadRequest($"No se encontro el proceso para el banco {conciliacionViewModel.BancoCuenta} del año {conciliacionViewModel.Year} y mes {conciliacionViewModel.Month}")); } var id = procesoBanco.Id; var auxs = new List <ConciliacionBancariaAux>(); foreach (var aux in conciliacionViewModel.conciliacionBancariaAux) { auxs.Add(new ConciliacionBancariaAux { Fecha = aux.Fecha, Referencia = aux.Referencia, TipoMovimientoId = aux.TipoMovimientoId, Debito = aux.Debito, Credito = aux.Credito, EstadoId = aux.EstadoId, Uuid = aux.Uuid, ProcesoBancoId = id }); } var ecs = new List <ConciliacionBancaria>(); foreach (var ec in conciliacionViewModel.conciliacionBancaria) { ecs.Add(new ConciliacionBancaria { Fecha = ec.Fecha, Referencia = ec.Referencia, TipoMovimientoId = ec.TipoMovimientoId, Debito = ec.Debito, Credito = ec.Credito, EstadoId = ec.EstadoId, Uuid = ec.Uuid, ProcesoBancoId = id }); } var oldProcesoBanco = db.ProcesoBanco.Find(id); oldProcesoBanco.ConciliacionBancaria = ecs; oldProcesoBanco.ConciliacionBancariaAux = auxs; db.SaveChanges(); return(Ok()); }
public IActionResult SaveAuxiliarAndIngresosEgresos(ConciliacionViewModel conciliacionViewModel) { var usr = this.GetServiceUser(); var info = DbIpsa.BancosCuentas.Include(b => b.Banco).Where(bc => bc.BancoCuenta == conciliacionViewModel.BancoCuenta).ToList(); if (info == null) { return(BadRequest("No se encontró el banco")); } var accountInfo = from i in info join m in db.TipoMoneda on i.Moneda equals m.Id select new AccountDescription { BancoId = i.Bancoid, Banco = i.Banco.Descripcion, MonedaId = i.Moneda.Value, Moneda = m.Descripcion, Sucursal = i.NombreSucursal, Cuenta = i.CtaContable, Descripcion = i.Descripcion, BancoCuenta = i.BancoCuenta }; var _BancosCuentas = accountInfo.FirstOrDefault(); var procesoBancoServices = new ProcesoBancoServices(db); var existeSaldoInicial = procesoBancoServices.ExistSaldoIncial(conciliacionViewModel.BancoCuenta); if (!existeSaldoInicial) { return(BadRequest($"No se encontró el proceso inicial para el banco {conciliacionViewModel.BancoCuenta} del año {conciliacionViewModel.Year} y mes {conciliacionViewModel.Month}")); } var procesoBanco = procesoBancoServices.Find(conciliacionViewModel.BancoCuenta, conciliacionViewModel.Year, conciliacionViewModel.Month); if (procesoBanco.Exist() && !procesoBanco.IsInitialBalance()) { return(BadRequest($"Ya se concilio el mes de {HelperExtensions.NombreDelMes(conciliacionViewModel.Month)} para el año {conciliacionViewModel.Year} de la cuenta {conciliacionViewModel.BancoCuenta}")); } //Verificar que existe un preceso en el mes anterior var validate = procesoBancoServices.VerificarProcesoAnterio(_BancosCuentas, conciliacionViewModel.Year, conciliacionViewModel.Month); if (!validate.successed) { return(BadRequest(validate.Error)); } decimal saldoAnterior = validate.saldoAnterior; var auxs = new List <ConciliacionBancariaAux>(); foreach (var aux in conciliacionViewModel.conciliacionBancariaAux) { auxs.Add(new ConciliacionBancariaAux { Fecha = aux.Fecha, Referencia = aux.Referencia, TipoMovimientoId = aux.TipoMovimientoId, Debito = aux.Debito, Credito = aux.Credito, EstadoId = aux.EstadoId, Uuid = aux.Uuid, Conciliado = string.IsNullOrEmpty(aux.Uuid) ? false : true, TableInfo = aux.TableInfo, IdOrigen = aux.IdOrigen, IdRef = aux.IdRef }); } var ecs = new List <ConciliacionBancaria>(); foreach (var ec in conciliacionViewModel.conciliacionBancaria) { ecs.Add(new ConciliacionBancaria { Fecha = ec.Fecha, Referencia = ec.Referencia, TipoMovimientoId = ec.TipoMovimientoId, Debito = ec.Debito, Credito = ec.Credito, EstadoId = ec.EstadoId, Uuid = ec.Uuid, Conciliado = string.IsNullOrEmpty(ec.Uuid) ? false : true }); } if (procesoBanco.Exist() && procesoBanco.IsInitialBalance()) { procesoBanco.ConciliacionBancaria = ecs; procesoBanco.ConciliacionBancariaAux = auxs; procesoBanco.SaldoFinal = procesoBanco.SaldoInicial + ecs.Sum(x => x.Credito) - ecs.Sum(x => x.Debito); } else if (!procesoBanco.Exist()) { var newProcesoBanco = new ProcesoBanco { BancoCuenta = conciliacionViewModel.BancoCuenta, Fecha = new DateTime(conciliacionViewModel.Year, conciliacionViewModel.Month, 1), SaldoInicial = saldoAnterior, SaldoFinal = saldoAnterior + ecs.Sum(x => x.Credito) - ecs.Sum(x => x.Debito), Username = usr.username, FechaRegistrado = DateTime.Now, TipoProcesoId = (int)TipoProcesos.Movimientos, ConciliacionBancaria = ecs, ConciliacionBancariaAux = auxs }; } var iecData = conciliacionViewModel.conciliacionBancariaAux.Where(x => x.TableInfo == 1).Select(x => x.IdOrigen).ToArray(); var ingresosCajaReferencias = db.IngresosEgresosCajaReferencias.Where(f => iecData.Contains(f.Id)).ToList(); if (ingresosCajaReferencias.Count > 0) { ingresosCajaReferencias.ForEach(a => a.Procesado = string.IsNullOrEmpty(conciliacionViewModel.conciliacionBancariaAux.Where(x => x.IdOrigen == a.Id && x.TableInfo == 1).FirstOrDefault().Uuid) ? false : true); } var iebData = conciliacionViewModel.conciliacionBancariaAux.Where(x => x.TableInfo == 2).Select(x => x.IdOrigen).ToArray(); var ingresosBanco = db.IngresosEgresosBanco.Where(f => iebData.Contains(f.Id)).ToList(); if (ingresosBanco.Count > 0) { ingresosBanco.ForEach(a => a.Procesado = string.IsNullOrEmpty(conciliacionViewModel.conciliacionBancariaAux.Where(x => x.IdOrigen == a.Id && x.TableInfo == 2).FirstOrDefault().Uuid) ? false : true); } db.SaveChanges(); return(Ok()); }