public async Task <IActionResult> update(int BancoCuenta, [Bind("BancoCuenta,SaldoInicial,Fecha")] ProcesoBanco procesoBanco) { var user = this.GetServiceUser(); var procesoBancoSesrvices = new ProcesoBancoServices(db); var Existe = procesoBancoSesrvices.ExistSaldoIncial(BancoCuenta); if (Existe) { var oldProcesoBanco = db.ProcesoBanco.Where(b => b.BancoCuenta == BancoCuenta && b.TipoProcesoId == (int)TipoProcesos.SaldoInicial).FirstOrDefault(); if (procesoBanco.SaldoInicial != 0) { oldProcesoBanco.SaldoInicial = procesoBanco.SaldoInicial; } if (procesoBanco.Fecha > DateTime.MinValue) { oldProcesoBanco.Fecha = new DateTime(procesoBanco.Fecha.Year, procesoBanco.Fecha.Month, 1); } db.SaveChanges(); } else { var newProcesoBanco = new ProcesoBanco { BancoCuenta = BancoCuenta, SaldoInicial = procesoBanco.SaldoInicial, SaldoFinal = 0, Fecha = procesoBanco.Fecha, Username = user.username, FechaRegistrado = DateTime.Now, TipoProcesoId = (int)TipoProcesos.SaldoInicial }; db.ProcesoBanco.Add(newProcesoBanco); 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()); }
/// <summary> /// Verifica si es saldo inicial el proceso /// </summary> /// <param name="procesoBanco"></param> /// <returns></returns> internal static bool IsInitialBalance(this ProcesoBanco procesoBanco) { return(procesoBanco.TipoProcesoId == 1); }
/// <summary> /// Verifica si tiene saldo final el proceso /// </summary> /// <param name="procesoBanco"></param> /// <returns></returns> internal static bool IsClosed(this ProcesoBanco procesoBanco) { return(procesoBanco.SaldoFinal > 0); }
internal static bool Exist(this ProcesoBanco procesoBanco) { return(procesoBanco.BancoCuenta > 0); }