// 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));
        }
Ejemplo n.º 4
0
    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);
    }
Ejemplo n.º 5
0
    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);
    }
Ejemplo n.º 6
0
    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);
    }
Ejemplo n.º 7
0
    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);
    }
Ejemplo n.º 8
0
    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);
    }