// GET: ContabilidadConciliacionBancaria public ActionResult ConciliacionBancaria(FiltrosEstadoCtasCorrientes Filtros) { string UserID = User.Identity.GetUserId(); FacturaPoliContext db = ParseExtensions.GetDatabaseContext(UserID); ClientesContablesModel objCliente = PerfilamientoModule.GetClienteContableSeleccionado(Session, UserID, db); //Consulta cuentas contables Banco var lstCuentasDeBanco = ConciliacionBancariaViewModel.getCtasBancarias(db, objCliente); ViewBag.CuentasBancarias = lstCuentasDeBanco; return(View()); }
public ActionResult EstCtasCtesConciliado(FiltrosEstadoCtasCorrientes Filtros) { //Condiciones Si elige un tipo de listado. //Si se quiere mostrar no conciliada "Eliminar las que esten conciliadas". //Si se quiere mostrar las conciliadas "Retornar solo las conciliadas". //Si se quiere mostrar todas entonces no pasar por este proceso. //Cambiar el estado en la base de datos a conciliado si el movimiento lo está al momento de calcularlo //En el futuro utilizar este modulo para refrescar y calcular los conciliados ¿Con qué sentido? -> //R: al hacer esto por detrás y no renderizar una vista se habrán establecido los conciliados -> no conciliados y la lista completa que incluye a los 2 //Entonces al crear la query simplemente irá a buscar los que estén conciliados y no tendrá que hacer todo el calculo nuevamente lo que permite una mejora //Tremenda en el tiempo de carga de estas listas. //Entonces paso 1 -> Según el id del movimiento si está conciliado etiquetarlo como tal. //Paso 2 Crear las querys correspondientes para obtener esta lista conciliada //Paso 3 Crear el modulo de los pendientes que solo tendrá aquellos que no estén conciliados. //Paso 4 Crear la manera de pagar estos documentos basandose en como se hace la conciliación bancaria. string UserID = User.Identity.GetUserId(); FacturaPoliContext db = ParseExtensions.GetDatabaseContext(UserID); ClientesContablesModel objCliente = PerfilamientoModule.GetClienteContableSeleccionado(Session, UserID, db); var lstCtasAux = UsoComunAux.LstAuxConMovimiento(db, objCliente); ViewBag.lstCtasCtes = lstCtasAux; ViewBag.ObjCliente = objCliente; List <ObjetoCtasCtesPorConciliar> ListaOrdenadaConAcumulados = new List <ObjetoCtasCtesPorConciliar>(); List <EstCtasCtesConciliadasViewModel> ListaProcesada = new List <EstCtasCtesConciliadasViewModel>(); List <ObjetoCtasCtesPorConciliar> ListaOrdenada = new List <ObjetoCtasCtesPorConciliar>(); IQueryable <EstCtasCtesConciliadasViewModel> QueryCtaCorrienteTodosLosAnios = EstCtasCtesConciliadasViewModel.GetlstCtasCtesConciliadas(db, objCliente); IQueryable <EstCtasCtesConciliadasViewModel> ListaFiltrada = EstCtasCtesConciliadasViewModel.FiltrosCtaCorriente(QueryCtaCorrienteTodosLosAnios, Filtros); ListaProcesada = EstCtasCtesConciliadasViewModel.CalcularYConciliarLista(db, objCliente, ListaFiltrada, Filtros); ListaOrdenada = EstCtasCtesConciliadasViewModel.OrdenarListaCtasCtes(ListaProcesada); ListaOrdenadaConAcumulados = EstCtasCtesConciliadasViewModel.CalcularAcumulados(ListaOrdenada, QueryCtaCorrienteTodosLosAnios, db, objCliente, Filtros); decimal TotalAcumuladosGenerales = EstCtasCtesConciliadasViewModel.CalcularAcumuladosGenerales(ListaOrdenadaConAcumulados, QueryCtaCorrienteTodosLosAnios, Filtros); ViewBag.TotalSaldoAcumulado = TotalAcumuladosGenerales; Session["EstadoDeCuentasCorrientes"] = ListaOrdenadaConAcumulados; Session["TotalAcumEstadoCuentasCorrientes"] = TotalAcumuladosGenerales; Session["Filtros"] = Filtros; // Para manejar los filtros consultados para el reporte de excel. return(View(ListaOrdenadaConAcumulados)); }
public ActionResult EstadoCtasCorrientes(FiltrosEstadoCtasCorrientes Filtros) { string UserID = User.Identity.GetUserId(); FacturaPoliContext db = ParseExtensions.GetDatabaseContext(UserID); ClientesContablesModel objCliente = PerfilamientoModule.GetClienteContableSeleccionado(Session, UserID, db); var lstCtasAux = UsoComunAux.LstAuxConMovimiento(db, objCliente); ViewBag.lstCtasCtes = lstCtasAux; IQueryable <EstadoCuentasCorrientesViewModel> QueryCtaCorriente = EstadoCuentasCorrientesViewModel.GetLstCtaCorriente(db, objCliente); IQueryable <EstadoCuentasCorrientesViewModel> LstCtaCorrienteBusqueda = EstadoCuentasCorrientesViewModel.FiltrosCtaCorriente(QueryCtaCorriente, Filtros); PaginadorModel LstCtasConPaginacion = EstadoCuentasCorrientesViewModel.PaginacionCtasCorrientes(LstCtaCorrienteBusqueda, Filtros); Session["EstadoCtaCorriente"] = LstCtasConPaginacion.LstCtasCorrientes; return(View(LstCtasConPaginacion)); }
public static List <EstCtasCtesConciliadasViewModel> CalcularYConciliarLista(FacturaPoliContext db, ClientesContablesModel ObjCliente, IQueryable <EstCtasCtesConciliadasViewModel> LstCtaCorriente, FiltrosEstadoCtasCorrientes Filtros) { List <EstCtasCtesConciliadasViewModel> lstCtasCorrientes = new List <EstCtasCtesConciliadasViewModel>(LstCtaCorriente); List <EstCtasCtesConciliadasViewModel> ListaConciliada = new List <EstCtasCtesConciliadasViewModel>(); if (LstCtaCorriente.Count() > 0) { string AuxCompra = "PR"; string AuxVenta = "CL"; string AuxHonorario = "H"; string AuxPersona = "P"; foreach (EstCtasCtesConciliadasViewModel ItemAanalizar in lstCtasCorrientes) { if (ItemAanalizar.TipoAux == AuxCompra) { if (ItemAanalizar.DebeAnalisis > 0) { ItemAanalizar.Debe = ItemAanalizar.MontoTotal; } if (ItemAanalizar.HaberAnalisis > 0) { ItemAanalizar.Haber = ItemAanalizar.MontoTotal; } } if (ItemAanalizar.TipoAux == AuxVenta) { if (ItemAanalizar.DebeAnalisis > 0) { ItemAanalizar.Debe = ItemAanalizar.MontoTotal; } if (ItemAanalizar.HaberAnalisis > 0) { ItemAanalizar.Haber = ItemAanalizar.MontoTotal; } } if (ItemAanalizar.TipoAux == AuxHonorario) { if (ItemAanalizar.DebeAnalisis > 0) { ItemAanalizar.Debe = ItemAanalizar.MontoTotal; } if (ItemAanalizar.HaberAnalisis > 0) { ItemAanalizar.Haber = ItemAanalizar.MontoTotal; } } if (ItemAanalizar.TipoAux == AuxPersona) { if (ItemAanalizar.DebeAnalisis > 0) { ItemAanalizar.Debe = ItemAanalizar.MontoTotal; } if (ItemAanalizar.HaberAnalisis > 0) { ItemAanalizar.Haber = ItemAanalizar.MontoTotal; } } } var AyudaParaAnalizar = lstCtasCorrientes.Select(x => new { x.Folio, x.RutPrestador, x.Documento, x.CuentaContable.CuentaContableModelID }).Distinct().ToList(); foreach (var PosibleConciliado in AyudaParaAnalizar) { List <EstCtasCtesConciliadasViewModel> PosiblesAConciliar = lstCtasCorrientes.Where(busca => busca.Folio == PosibleConciliado.Folio && busca.RutPrestador == PosibleConciliado.RutPrestador && busca.Documento == PosibleConciliado.Documento && busca.CuentaContable.CuentaContableModelID == PosibleConciliado.CuentaContableModelID).ToList(); if (PosiblesAConciliar.Count() > 1) { decimal Haber = 0; decimal Debe = 0; decimal Resultado = 0; foreach (var VerificarSiSeConcilia in PosiblesAConciliar) { if (VerificarSiSeConcilia.Debe > 0) { Debe += VerificarSiSeConcilia.MontoTotal; } if (VerificarSiSeConcilia.Haber > 0) { Haber += VerificarSiSeConcilia.MontoTotal; } } Resultado = Math.Abs(Haber) - Math.Abs(Debe); if (Resultado == 0) { foreach (var ItemConciliado in PosiblesAConciliar) { if (Filtros.TipoListaAmostrar == 2) { lstCtasCorrientes.Remove(ItemConciliado); } else if (Filtros.TipoListaAmostrar == 1) { ListaConciliada.Add(ItemConciliado); } else if (Filtros.TipoListaAmostrar == 0) { ItemConciliado.EstaConciliado = true; //Updateamos el estado de los detalles voucher en la db var CambiarAConciliado = db.DBDetalleVoucher.FirstOrDefault(x => x.DetalleVoucherModelID == ItemConciliado.DetalleVoucherID); if (CambiarAConciliado.ConciliadoCtasCtes == false) { CambiarAConciliado.ConciliadoCtasCtes = true; db.DBDetalleVoucher.AddOrUpdate(CambiarAConciliado); db.SaveChanges(); } } } } } } } return(ListaConciliada.Count() > 0 && Filtros.TipoListaAmostrar == 1 ? ListaConciliada : lstCtasCorrientes); }
public static IQueryable <EstCtasCtesConciliadasViewModel> FiltrosCtaCorriente(IQueryable <EstCtasCtesConciliadasViewModel> LstCtaCorriente, FiltrosEstadoCtasCorrientes Filtros) { if (Filtros != null) { if (Filtros.Anio > 0 && Filtros.TodosLosAnios == null) { LstCtaCorriente = LstCtaCorriente.Where(anio => anio.Fecha.Year == Filtros.Anio); } if (Filtros.TodosLosAnios == "on") { Filtros.Anio = 0; } if (Filtros.Mes > 0) { LstCtaCorriente = LstCtaCorriente.Where(mes => mes.Fecha.Month == Filtros.Mes); } if (Filtros.CuentaAuxiliar > 0) { LstCtaCorriente = LstCtaCorriente.Where(cta => cta.CuentaContable.CuentaContableModelID == Filtros.CuentaAuxiliar); } if (!string.IsNullOrWhiteSpace(Filtros.RazonSocial)) { LstCtaCorriente = LstCtaCorriente.Where(razonsocial => razonsocial.NombrePrestador.Contains(Filtros.RazonSocial)); } if (!string.IsNullOrWhiteSpace(Filtros.Rut)) { LstCtaCorriente = LstCtaCorriente.Where(rut => rut.RutPrestador.Contains(Filtros.Rut)); } if (!string.IsNullOrWhiteSpace(Filtros.FechaInicio) && !string.IsNullOrWhiteSpace(Filtros.FechaFin)) { DateTime dtFechaInicio = ParseExtensions.ToDD_MM_AAAA_Multi(Filtros.FechaInicio); DateTime dtFechaFin = ParseExtensions.ToDD_MM_AAAA_Multi(Filtros.FechaFin); LstCtaCorriente = LstCtaCorriente.Where(fecha => fecha.Fecha >= dtFechaInicio && fecha.Fecha <= dtFechaFin); } } return(LstCtaCorriente); }
public static decimal CalcularAcumuladosGenerales(List <ObjetoCtasCtesPorConciliar> ListaOrdenada, IQueryable <EstCtasCtesConciliadasViewModel> ListaCtaCteCompleta, FiltrosEstadoCtasCorrientes Filtros) { decimal TotalDebe = 0; decimal TotalHaber = 0; decimal TotalGeneralTodosLosAnios = 0; decimal TotalGeneralAnioConsultado = 0; decimal TotalAcumulado = 0; if (Filtros.TodosLosAnios == null) { var QueryASumar = ListaCtaCteCompleta.Where(x => x.Fecha.Year < Filtros.Anio).ToList(); if (QueryASumar != null) { TotalDebe = QueryASumar.Sum(y => y.DebeAnalisis); TotalHaber = QueryASumar.Sum(x => x.HaberAnalisis); } TotalGeneralTodosLosAnios = Math.Abs(TotalHaber) - Math.Abs(TotalDebe); TotalGeneralAnioConsultado = ListaOrdenada.Sum(x => x.TotalSaldo); TotalAcumulado = TotalGeneralTodosLosAnios - TotalGeneralAnioConsultado; } else if (!string.IsNullOrWhiteSpace(Filtros.FechaInicio) && !string.IsNullOrWhiteSpace(Filtros.FechaFin)) { //Query de esta busqueda DateTime dtFechaInicio = ParseExtensions.ToDD_MM_AAAA_Multi(Filtros.FechaInicio); var QueryASumar = ListaCtaCteCompleta.Where(x => x.Fecha < dtFechaInicio).ToList(); if (QueryASumar != null) { TotalDebe = QueryASumar.Sum(y => y.DebeAnalisis); TotalHaber = QueryASumar.Sum(x => x.HaberAnalisis); } } else if (Filtros.TodosLosAnios == "on") { TotalAcumulado = 0; } return(TotalAcumulado); }
public static List <ObjetoCtasCtesPorConciliar> CalcularAcumulados(List <ObjetoCtasCtesPorConciliar> ListaOrdenada, IQueryable <EstCtasCtesConciliadasViewModel> ListaCtaCteCompleta, FacturaPoliContext db, ClientesContablesModel objCliente, FiltrosEstadoCtasCorrientes Filtros) { var FiltrarConciliados = CalcularYConciliarLista(db, objCliente, ListaCtaCteCompleta, Filtros).ToList(); var ListaCompletaOrdenada = OrdenarListaCtasCtes(FiltrarConciliados).ToList(); var SaldosYRutLstTodosLosAnios = ListaCompletaOrdenada.SelectMany(x => x.Contenido).Select(y => new { Rut = y.Rut, SaldoRut = y.SaldoRut, CtaCont = y.CodInterno, Contenido = y.Contenido }).ToList(); SaldosYRutLstTodosLosAnios.RemoveAll(x => Convert.ToBoolean(x.Contenido.RemoveAll(y => y.Fecha.Year > Filtros.Anio))); //Mejorar en el futuro: hacerlo con linq foreach (var CtaContable in ListaOrdenada) { decimal TotalSaldoCtaContable = 0; foreach (var CtaCte in CtaContable.Contenido) { foreach (var ItemTodosLosAnios in SaldosYRutLstTodosLosAnios) { if (CtaCte.Rut == ItemTodosLosAnios.Rut && CtaCte.CodInterno == ItemTodosLosAnios.CtaCont) { CtaCte.SaldoAcumuladoRut = Math.Abs(CtaCte.SaldoRut) - Math.Abs(ItemTodosLosAnios.SaldoRut); TotalSaldoCtaContable += CtaCte.SaldoAcumuladoRut; } } } CtaContable.TotalSaldoAcumulado = TotalSaldoCtaContable; } return(ListaOrdenada); }
public static PaginadorModel PaginacionCtasCorrientes(IQueryable <EstadoCuentasCorrientesViewModel> LstCtaCorriente, FiltrosEstadoCtasCorrientes Filtros) { int TotalRegistros = LstCtaCorriente.ToList().Count(); if (Filtros.cantidadRegistrosPorPagina > 0) { LstCtaCorriente = LstCtaCorriente.OrderBy(cta => cta.CuentaContable.Clasificacion) .ThenBy(cta => cta.RutPrestador) .Skip((Filtros.pagina - 1) * Filtros.cantidadRegistrosPorPagina) .Take(Filtros.cantidadRegistrosPorPagina); } else if (Filtros.cantidadRegistrosPorPagina == 0) { LstCtaCorriente = LstCtaCorriente.OrderBy(cta => cta.CuentaContable.Clasificacion); } var Paginacion = new PaginadorModel(); Paginacion.LstCtasCorrientes = LstCtaCorriente.ToList(); Paginacion.PaginaActual = Filtros.pagina; Paginacion.TotalDeRegistros = TotalRegistros; Paginacion.RegistrosPorPagina = Filtros.cantidadRegistrosPorPagina; Paginacion.ValoresQueryString = new RouteValueDictionary(); if (Filtros.cantidadRegistrosPorPagina != 25) { Paginacion.ValoresQueryString["cantidadRegistrosPorPagina"] = Filtros.cantidadRegistrosPorPagina; } if (Filtros.Anio > 0) { Paginacion.ValoresQueryString["Anio"] = Filtros.Anio; } if (Filtros.Mes > 0) { Paginacion.ValoresQueryString["Mes"] = Filtros.Mes; } if (Filtros.CuentaAuxiliar > 0) { Paginacion.ValoresQueryString["CuentaAuxiliar"] = Filtros.CuentaAuxiliar; } if (!string.IsNullOrWhiteSpace(Filtros.Rut)) { Paginacion.ValoresQueryString["Rut"] = Filtros.Rut; } if (Filtros.FechaInicio != null && Filtros.FechaFin != null) { Paginacion.ValoresQueryString["FechaInicio"] = Filtros.FechaInicio; Paginacion.ValoresQueryString["FechaFin"] = Filtros.FechaFin; } if (!string.IsNullOrWhiteSpace(Filtros.RazonSocial)) { Paginacion.ValoresQueryString["RazonSocial"] = Filtros.RazonSocial; } return(Paginacion); }