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));
        }
예제 #2
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);
    }
예제 #3
0
    public static PaginadorModel RescatarLibroCentralizacion(ClientesContablesModel objCliente, TipoCentralizacion tipoLibroCentralizacion, FacturaPoliContext db, string FechaInicio = "", string FechaFin = "", int Anio = 0, int Mes = 0, int pagina = 0, int cantidadRegistrosPorPagina = 0, string Rut = "", string RazonSocial = "", int Folio = 0)
    {
        bool     ConversionFechaInicioExitosa = false;
        DateTime dtFechaInicio             = new DateTime();
        bool     ConversionFechaFinExitosa = false;
        DateTime dtFechaFin = new DateTime();

        List <LibrosContablesModel> lstlibroData = new List <LibrosContablesModel>();

        if (string.IsNullOrWhiteSpace(FechaInicio) == false && string.IsNullOrWhiteSpace(FechaFin) == false)
        {
            ConversionFechaInicioExitosa = DateTime.TryParseExact(FechaInicio, "dd-MM-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dtFechaInicio);
            ConversionFechaFinExitosa    = DateTime.TryParseExact(FechaFin, "dd-MM-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dtFechaFin);
        }

        // Solo si es convertido a voucher se listará en el libro de compras.

        IQueryable <LibrosContablesModel> lstlibro = (from LibrosContables in db.DBLibrosContables
                                                      join Vouchers in db.DBVoucher on LibrosContables.VoucherModelID equals Vouchers.VoucherModelID
                                                      where Vouchers.DadoDeBaja == false && LibrosContables.HaSidoConvertidoAVoucher == true &&
                                                      Vouchers.ClientesContablesModelID == objCliente.ClientesContablesModelID && Vouchers.Tipo == TipoVoucher.Traspaso &&
                                                      LibrosContables.TipoLibro == tipoLibroCentralizacion

                                                      select LibrosContables);


        //IQueryable<LibrosContablesModel> lstlibro = db.DBLibrosContables.Where(r => r.ClientesContablesModelID == objCliente.ClientesContablesModelID && r.TipoLibro == tipoLibroCentralizacion &&  r.HaSidoConvertidoAVoucher == true);

        //(r => r.Fecha >= dtFechaInicio && r.Fecha <= dtFechaFin);

        if (Anio != 0 && Anio > 0)
        {
            lstlibro = lstlibro.Where(r => r.FechaContabilizacion.Year == Anio);
        }
        if (Mes != 0 && Mes > 0)
        {
            lstlibro = lstlibro.Where(r => r.FechaContabilizacion.Month == Mes);
        }
        if (ConversionFechaInicioExitosa && ConversionFechaInicioExitosa)
        {
            lstlibro = lstlibro.Where(r => r.FechaContabilizacion >= dtFechaInicio && r.FechaContabilizacion <= dtFechaFin);
        }
        if (!string.IsNullOrWhiteSpace(Rut))
        {
            lstlibro = lstlibro.Where(r => r.individuo.RUT.Contains(Rut));
        }
        if (!string.IsNullOrWhiteSpace(RazonSocial))
        {
            lstlibro = lstlibro.Where(r => r.individuo.RazonSocial.Contains(RazonSocial));
        }
        if (Folio != 0 && Folio > 0)
        {
            lstlibro = lstlibro.Where(r => r.Folio == Folio);
        }


        int totalDeRegistros = lstlibro.Count();

        if (cantidadRegistrosPorPagina != 0)
        {
            lstlibroData = lstlibro.OrderBy(r => r.FechaContabilizacion)
                           .Skip((pagina - 1) * cantidadRegistrosPorPagina)
                           .Take(cantidadRegistrosPorPagina).ToList();
        }
        else if (cantidadRegistrosPorPagina == 0)
        {
            lstlibroData = lstlibro.OrderBy(r => r.FechaContabilizacion).ToList();
        }

        List <string[]> ReturnValues = new List <string[]>();

        decimal TotalExento           = 0;
        decimal TotalNeto             = 0;
        decimal TotalIva              = 0;
        decimal TotalIvaNoRecuperable = 0;
        decimal TotalIvaUsocomun      = 0;
        decimal TotalMontoTotal       = 0;

        var TotalesNotasDeCredito = (from lstLibro in lstlibroData.Where(x => x.TipoDocumento.EsUnaNotaCredito())
                                     group lstLibro by 1 into g
                                     select new
        {
            TotalMontoExento = g.Sum(x => x.MontoExento),
            TotalMontoIva = g.Sum(x => x.MontoIva),
            TotalMontoNeto = g.Sum(x => x.MontoNeto),
            TotalMontoIvaNoRecuperable = g.Sum(x => x.MontoIvaNoRecuperable),
            TotalMontoIvaUsocomun = g.Sum(x => x.MontoIvaUsocomun),
            TotalMontoTotal = g.Sum(x => x.MontoTotal)
        }).FirstOrDefault();


        int NumeroRow = 1;

        foreach (LibrosContablesModel Item in lstlibroData)
        {
            string[] BalanceRow = new string[] { "-", "-", "-", "-", "-", "-", "-", "0", "0", "0", "0", "0", "0", "False" };
            BalanceRow[0] = NumeroRow.ToString();
            BalanceRow[1] = ParseExtensions.ToDD_MM_AAAA(Item.FechaDoc);
            BalanceRow[2] = ParseExtensions.ToDD_MM_AAAA(Item.FechaContabilizacion);
            BalanceRow[3] = ParseExtensions.EnumGetDisplayAttrib(Item.TipoDocumento);
            if (Item.FolioHasta > 0 && Item.Folio > 0)
            {
                BalanceRow[4] = Item.Folio.ToString() + " - " + Item.FolioHasta.ToString();
            }
            else
            {
                BalanceRow[4] = Item.Folio.ToString();
            }
            if (Item.individuo != null)
            {
                //Nombre prestador
                BalanceRow[5] = Item.individuo.RazonSocial;
                //Rut prestador
                BalanceRow[6] = Item.individuo.RUT;
            }
            else
            {
                //Nombre prestador
                BalanceRow[5] = "";
                //Rut prestador
                BalanceRow[6] = "";
            }


            BalanceRow[7]  = ParseExtensions.NumeroConPuntosDeMiles(Item.MontoExento);
            BalanceRow[8]  = ParseExtensions.NumeroConPuntosDeMiles(Item.MontoNeto);
            BalanceRow[9]  = ParseExtensions.NumeroConPuntosDeMiles(Item.MontoIva);
            BalanceRow[10] = ParseExtensions.NumeroConPuntosDeMiles(Item.MontoIvaNoRecuperable);
            BalanceRow[11] = ParseExtensions.NumeroConPuntosDeMiles(Item.MontoIvaUsocomun);
            BalanceRow[12] = ParseExtensions.NumeroConPuntosDeMiles(Item.MontoTotal);


            if (!Item.TipoDocumento.EsUnaNotaCredito())
            {
                TotalExento           += Item.MontoExento;
                TotalNeto             += Item.MontoNeto;
                TotalIva              += Item.MontoIva;
                TotalIvaNoRecuperable += Item.MontoIvaNoRecuperable;
                TotalIvaUsocomun      += Item.MontoIvaUsocomun;
                TotalMontoTotal       += Item.MontoTotal;
            }

            BalanceRow[13] = "True";

            if (Item.TipoDocumento.EsUnaNotaCredito() == false)
            {
                BalanceRow[13] = "False";
            }

            ReturnValues.Add(BalanceRow);

            NumeroRow++;
        }

        if (TotalesNotasDeCredito != null)
        {
            string[] Totales = new string[] { "-", "-", "-", "-", "-", "-", "-", "0", "0", "0", "0", "0", "0", "False" };
            Totales[6]  = "TOTAL: ";
            Totales[7]  = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalExento) - Math.Abs(TotalesNotasDeCredito.TotalMontoExento));
            Totales[8]  = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalNeto) - Math.Abs(TotalesNotasDeCredito.TotalMontoNeto));
            Totales[9]  = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalIva) - Math.Abs(TotalesNotasDeCredito.TotalMontoIva));
            Totales[10] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalIvaNoRecuperable) - Math.Abs(TotalesNotasDeCredito.TotalMontoIvaNoRecuperable));
            Totales[11] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalIvaUsocomun) - Math.Abs(TotalesNotasDeCredito.TotalMontoIvaUsocomun));
            Totales[12] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalMontoTotal) - Math.Abs(TotalesNotasDeCredito.TotalMontoTotal));

            ReturnValues.Add(Totales);
        }
        else
        {
            string[] Totales = new string[] { "-", "-", "-", "-", "-", "-", "-", "0", "0", "0", "0", "0", "0", "False" };
            Totales[6]  = "TOTAL: ";
            Totales[7]  = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalExento));
            Totales[8]  = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalNeto));
            Totales[9]  = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalIva));
            Totales[10] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalIvaNoRecuperable));
            Totales[11] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalIvaUsocomun));
            Totales[12] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalMontoTotal));

            ReturnValues.Add(Totales);
        }

        var Paginador = new PaginadorModel();

        Paginador.ResultStringArray  = ReturnValues;
        Paginador.PaginaActual       = pagina;
        Paginador.TotalDeRegistros   = totalDeRegistros;
        Paginador.RegistrosPorPagina = cantidadRegistrosPorPagina;
        Paginador.ValoresQueryString = new RouteValueDictionary();

        if (cantidadRegistrosPorPagina != 25)
        {
            Paginador.ValoresQueryString["cantidadRegistrosPorPagina"] = cantidadRegistrosPorPagina;
        }
        if (Anio != 0)
        {
            Paginador.ValoresQueryString["Anio"] = Anio;
        }
        if (Mes != 0)
        {
            Paginador.ValoresQueryString["Mes"] = Mes;
        }
        if (!string.IsNullOrWhiteSpace(Rut))
        {
            Paginador.ValoresQueryString["Rut"] = Rut;
        }
        if (!string.IsNullOrWhiteSpace(RazonSocial))
        {
            Paginador.ValoresQueryString["RazonSocial"] = RazonSocial;
        }
        if (ConversionFechaInicioExitosa && ConversionFechaInicioExitosa)
        {
            Paginador.ValoresQueryString["FechaInicio"] = FechaInicio;
            Paginador.ValoresQueryString["FechaFin"]    = FechaFin;
        }

        return(Paginador);
    }
    public static PaginadorModel GetCatorceTer(FacturaPoliContext db, ClientesContablesModel ObjCliente, string FechaInicio = "", string FechaFin = "", int Anio = 0, int Mes = 0, int pagina = 0, int cantidadRegistrosPorPagina = 0, string Rut = "", string RazonSocial = "", int Folio = 0)
    {
        bool     ConversionFechaInicioExitosa = false;
        DateTime dtFechaInicio             = new DateTime();
        bool     ConversionFechaFinExitosa = false;
        DateTime dtFechaFin = new DateTime();

        if (string.IsNullOrWhiteSpace(FechaInicio) == false && string.IsNullOrWhiteSpace(FechaFin) == false)
        {
            ConversionFechaInicioExitosa = DateTime.TryParseExact(FechaInicio, "dd-MM-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dtFechaInicio);
            ConversionFechaFinExitosa    = DateTime.TryParseExact(FechaFin, "dd-MM-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dtFechaFin);
        }

        List <CatorceTerViewModel> lstCatorceTer = new List <CatorceTerViewModel>();

        string TipoReceptorCompra    = "PR";
        string TipoReceptorVenta     = "CL";
        string TipoReceptorHonorario = "H";
        string TipoReceptorRemu      = "P";

        //Aquí se consultarán los tipos de voucher y se irán según la logica contable entregada
        //No se discrimina por tipo de voucher aquí están, tanto, ingresos, egresos, traspasos

        var TablaPrestador = (from Voucher in db.DBVoucher
                              join DetalleVoucher in db.DBDetalleVoucher on Voucher.VoucherModelID equals DetalleVoucher.VoucherModelID
                              join Auxiliares in db.DBAuxiliares on DetalleVoucher.DetalleVoucherModelID equals Auxiliares.DetalleVoucherModelID
                              join AuxiliaresDetalle in db.DBAuxiliaresDetalle on Auxiliares.AuxiliaresModelID equals AuxiliaresDetalle.AuxiliaresModelID

                              where
                              Voucher.DadoDeBaja == false && //Ingreso
                              Voucher.ClientesContablesModelID == ObjCliente.ClientesContablesModelID &&
                              AuxiliaresDetalle.Individuo2.tipoReceptor == TipoReceptorVenta ||

                              Voucher.DadoDeBaja == false && //Egreso
                              Voucher.ClientesContablesModelID == ObjCliente.ClientesContablesModelID &&
                              AuxiliaresDetalle.Individuo2.tipoReceptor == TipoReceptorCompra ||

                              Voucher.DadoDeBaja == false && //Egreso
                              Voucher.ClientesContablesModelID == ObjCliente.ClientesContablesModelID &&
                              AuxiliaresDetalle.Individuo2.tipoReceptor == TipoReceptorHonorario ||

                              Voucher.DadoDeBaja == false && //Egreso
                              Voucher.ClientesContablesModelID == ObjCliente.ClientesContablesModelID &&
                              AuxiliaresDetalle.Individuo2.tipoReceptor == TipoReceptorRemu


                              select new
        {
            Haber = DetalleVoucher.MontoHaber,
            Debe = DetalleVoucher.MontoDebe,
            FechaContabilizacion = DetalleVoucher.FechaDoc,
            PrestadorNombre = AuxiliaresDetalle.Individuo2.RazonSocial,
            PrestadorRut = AuxiliaresDetalle.Individuo2.RUT,
            TipoPrestador = AuxiliaresDetalle.Individuo2.tipoReceptor,
            TipoDoc = AuxiliaresDetalle.TipoDocumento,
            Folio = AuxiliaresDetalle.Folio,
            CuentaCont = DetalleVoucher.ObjCuentaContable.CodInterno + "  " + DetalleVoucher.ObjCuentaContable.nombre
        });

        if (Anio != 0 && Anio > 0)
        {
            TablaPrestador = TablaPrestador.Where(r => r.FechaContabilizacion.Year == Anio);
        }
        if (Mes != 0 && Mes > 0)
        {
            TablaPrestador = TablaPrestador.Where(r => r.FechaContabilizacion.Month == Mes);
        }
        if (ConversionFechaInicioExitosa && ConversionFechaInicioExitosa)
        {
            TablaPrestador = TablaPrestador.Where(r => r.FechaContabilizacion >= dtFechaInicio && r.FechaContabilizacion <= dtFechaFin);
        }
        if (!string.IsNullOrWhiteSpace(Rut))
        {
            TablaPrestador = TablaPrestador.Where(r => r.PrestadorRut.Contains(Rut));
        }
        if (!string.IsNullOrWhiteSpace(RazonSocial))
        {
            TablaPrestador = TablaPrestador.Where(r => r.PrestadorNombre.Contains(RazonSocial));
        }
        if (Folio != 0 && Folio > 0)
        {
            TablaPrestador = TablaPrestador.Where(r => r.Folio == Folio);
        }


        int totalDeRegistros = TablaPrestador.Count();

        if (cantidadRegistrosPorPagina != 0)
        {
            TablaPrestador = TablaPrestador.OrderBy(r => r.FechaContabilizacion)
                             .Skip((pagina - 1) * cantidadRegistrosPorPagina)
                             .Take(cantidadRegistrosPorPagina);
        }
        else if (cantidadRegistrosPorPagina == 0)
        {
            TablaPrestador = TablaPrestador.OrderBy(r => r.FechaContabilizacion);
        }

        decimal TotalIngreso = 0;
        decimal TotalEgreso  = 0;

        foreach (var itemCatorceTer in TablaPrestador)
        {
            decimal Haber = itemCatorceTer.Haber;
            decimal Debe  = itemCatorceTer.Debe;

            decimal TotalDebeHaber = Math.Abs(Haber) - Math.Abs(Debe);

            CatorceTerViewModel objTer = new CatorceTerViewModel();
            objTer.Fecha          = itemCatorceTer.FechaContabilizacion;
            objTer.NombreReceptor = itemCatorceTer.PrestadorNombre;
            objTer.RutReceptor    = itemCatorceTer.PrestadorRut;
            objTer.Folio          = itemCatorceTer.Folio;
            objTer.TipoDocumento  = itemCatorceTer.TipoDoc;

            if (itemCatorceTer.TipoPrestador == TipoReceptorCompra)
            {
                objTer.Egreso    = Math.Abs(TotalDebeHaber);
                objTer.TipoLibro = "Compra";
                TotalEgreso     += Math.Abs(TotalDebeHaber);
            }
            else if (itemCatorceTer.TipoPrestador == TipoReceptorVenta)
            {
                objTer.Ingreso   = Math.Abs(TotalDebeHaber);
                objTer.TipoLibro = "Venta";
                TotalIngreso    += Math.Abs(TotalDebeHaber);
            }
            else if (itemCatorceTer.TipoPrestador == TipoReceptorHonorario)
            {
                objTer.Egreso    = Math.Abs(TotalDebeHaber);
                objTer.TipoLibro = "Honorario";
                TotalEgreso     += Math.Abs(TotalDebeHaber);
            }
            else if (itemCatorceTer.TipoPrestador == TipoReceptorRemu)
            {
                objTer.Egreso    = Math.Abs(TotalDebeHaber);
                objTer.TipoLibro = "Remuneracion";
                TotalEgreso     += Math.Abs(TotalDebeHaber);
            }

            objTer.CuentaContable = itemCatorceTer.CuentaCont;

            lstCatorceTer.Add(objTer);
        }

        CatorceTerViewModel Totales = new CatorceTerViewModel();

        Totales.TotalIngreso = Math.Abs(TotalIngreso);
        Totales.TotalEgreso  = Math.Abs(TotalEgreso);
        lstCatorceTer.Add(Totales);

        var Paginador = new PaginadorModel();

        Paginador.LstCatorceTer      = lstCatorceTer;
        Paginador.PaginaActual       = pagina;
        Paginador.TotalDeRegistros   = totalDeRegistros;
        Paginador.RegistrosPorPagina = cantidadRegistrosPorPagina;
        Paginador.ValoresQueryString = new RouteValueDictionary();

        if (cantidadRegistrosPorPagina != 25)
        {
            Paginador.ValoresQueryString["cantidadRegistrosPorPagina"] = cantidadRegistrosPorPagina;
        }
        if (Anio != 0)
        {
            Paginador.ValoresQueryString["Anio"] = Anio;
        }
        if (Mes != 0)
        {
            Paginador.ValoresQueryString["Mes"] = Mes;
        }
        if (!string.IsNullOrWhiteSpace(Rut))
        {
            Paginador.ValoresQueryString["Rut"] = Rut;
        }
        if (!string.IsNullOrWhiteSpace(RazonSocial))
        {
            Paginador.ValoresQueryString["RazonSocial"] = RazonSocial;
        }
        if (ConversionFechaInicioExitosa && ConversionFechaInicioExitosa)
        {
            Paginador.ValoresQueryString["FechaInicio"] = FechaInicio;
            Paginador.ValoresQueryString["FechaFin"]    = FechaFin;
        }

        return(Paginador);
    }