Пример #1
0
        public List<detalles_pagoDto> GetDeudaEstudianteValorL(bDeudaEstudianteFecha reg)
        {
            mCausacion.Causar(reg.id_estudiante);
            using (ctx = new ieEntities())
            {
                int ValorLiquidado = 0;
                int i = 0;
                DateTime FechaActual = reg.fecha;
                List<detalles_pagoDto> lDeuda = new List<detalles_pagoDto>();
                int VigPerAct = int.Parse(FechaActual.Year.ToString() + FechaActual.Month.ToString().PadLeft(2, '0'));
                List<carterap> lCartera = new List<carterap>();
                if(reg.id_grupo == null) lCartera = ctx.carterap.Where(t => t.id_estudiante == reg.id_estudiante && (t.estado == "PR" || t.estado == "CA") && t.pagado < t.valor).OrderBy(t => t.vigencia).ThenBy(t => t.periodo).ThenBy(t => t.grupos_pagos.prioridad).ThenBy(t => t.id_concepto).ToList();
                else lCartera = ctx.carterap.Where(t => t.id_estudiante == reg.id_estudiante && t.id_grupo == reg.id_grupo && (t.estado == "PR" || t.estado == "CA") && t.pagado < t.valor).OrderBy(t => t.vigencia).ThenBy(t => t.periodo).ThenBy(t => t.grupos_pagos.prioridad).ThenBy(t => t.id_concepto).ToList();
                //List<carterap> lCartera = ctx.carterap.Where(t => t.id_estudiante == reg.id_estudiante && (t.estado == "CA" || t.estado == "PR") && t.pagado < t.valor).OrderBy(t => t.vigencia).ThenBy(t => t.periodo).ThenBy(t => t.grupos_pagos.prioridad).ThenBy(t => t.id_concepto).ToList();
                bool ban = false;
                while ((i <= lCartera.Count() - 1) && (ValorLiquidado < reg.ValorPagar) && (!ban))
                {
                    if (((lCartera[i].id_grupo == lCartera[0].id_grupo) && (ban == false)) || reg.id_grupo == null)
                    {
                        detalles_pagoDto pagoCapital = new detalles_pagoDto();
                        detalles_pagoDto pagoIntereses = new detalles_pagoDto();

                        int ValorPeriodo = (int)(lCartera[i].valor - lCartera[i].pagado);
                        int ValorIntereses = 0;

                        int vigenciaCartera = lCartera[i].vigencia;
                        int periodoCartera = lCartera[i].periodo;
                        int id_concepto = lCartera[i].id_concepto;

                        config_grupos_pagos config = ctx.config_grupos_pagos.Where(t => t.id_concepto == id_concepto && t.vigencia == vigenciaCartera).FirstOrDefault();
                        if ((config != null) && (config.intereses == "SI"))
                        {
                            periodos periodo = ctx.periodos.Where(t => t.periodo == periodoCartera && t.vigencia == vigenciaCartera).FirstOrDefault();
                            DateTime FechaVencimientoPeriodo = new DateTime((int)periodo.vigencia, (int)periodo.periodo, (int)periodo.vence_dia);
                            DateTime FechaUltimoCalculoIntereses = lCartera[i].fechas_calculo_intereses.Where(t => t.estado == "PA").OrderByDescending(t => t.fecha).FirstOrDefault().fecha;
                            mIntereses oTI = new mIntereses();
                            DiasInteresesDto DiasTipo = oTI.GetNumeroDiasPagoIntereses(ValorPeriodo, reg.ValorPagar - ValorLiquidado, lCartera[i].vigencia);
                            if (FechaActual > FechaVencimientoPeriodo)
                            {
                                ValorIntereses = oTI.GetValorIntereses(FechaUltimoCalculoIntereses, FechaActual, ValorPeriodo, lCartera[i].vigencia, lCartera[i].periodo, lCartera[i].id);
                            }

                            if ((ValorIntereses + ValorPeriodo) <= (reg.ValorPagar - ValorLiquidado))
                            {
                                pagoCapital.id_cartera = lCartera[i].id;
                                pagoCapital.id_concepto = lCartera[i].id_concepto;
                                pagoCapital.valor = (int)(ValorPeriodo);
                                pagoCapital.nombre_concepto = lCartera[i].conceptos.nombre;
                                pagoCapital.periodo = lCartera[i].periodo;
                                pagoCapital.vigencia = lCartera[i].vigencia;
                                pagoCapital.id_grupo = lCartera[i].id_grupo;
                                pagoCapital.tipo = "CA";
                                lDeuda.Add(pagoCapital);
                                ValorLiquidado += (int)pagoCapital.valor;

                                if (ValorIntereses > 0)
                                {
                                    pagoIntereses.id_concepto = 6;

                                    pagoIntereses.valor = ValorIntereses;

                                    if (DiasTipo.TiposIntereses == "S") pagoIntereses.nombre_concepto = "Intereses: " + lCartera[i].conceptos.nombre + ", desde " + FechaUltimoCalculoIntereses.ToShortDateString() + " hasta " + FechaUltimoCalculoIntereses.AddDays(DiasTipo.NumeroDias).ToShortDateString();
                                    else pagoIntereses.nombre_concepto = "Intereses: " + lCartera[i].conceptos.nombre;

                                    pagoIntereses.id_cartera = lCartera[i].id;
                                    pagoIntereses.fecha_calculo_intereses = FechaActual;
                                    pagoIntereses.periodo = pagoCapital.periodo;
                                    pagoIntereses.vigencia = pagoCapital.vigencia;
                                    pagoIntereses.fecha_calculo_intereses = FechaActual.AddDays(1);
                                    pagoIntereses.id_grupo = lCartera[i].id_grupo;
                                    pagoIntereses.tipo = "IN";
                                    lDeuda.Add(pagoIntereses);
                                    ValorLiquidado += (int)pagoIntereses.valor;
                                }
                            }
                            else
                            {
                                if (ValorIntereses == (reg.ValorPagar - ValorLiquidado))
                                {
                                    pagoIntereses.id_concepto = 6;
                                    pagoIntereses.valor = ValorIntereses;

                                    if (DiasTipo.TiposIntereses == "S") pagoIntereses.nombre_concepto = "Intereses: " + lCartera[i].conceptos.nombre + ", desde " + FechaUltimoCalculoIntereses.ToShortDateString() + " hasta " + FechaUltimoCalculoIntereses.AddDays(DiasTipo.NumeroDias).ToShortDateString();
                                    else pagoIntereses.nombre_concepto = "Intereses: " + lCartera[i].conceptos.nombre;

                                    pagoIntereses.id_cartera = lCartera[i].id;
                                    pagoIntereses.fecha_calculo_intereses = FechaActual;
                                    pagoIntereses.periodo = lCartera[i].periodo;
                                    pagoIntereses.vigencia = lCartera[i].vigencia;
                                    pagoIntereses.fecha_calculo_intereses = FechaActual.AddDays(1);
                                    pagoIntereses.id_grupo = lCartera[i].id_grupo;
                                    pagoIntereses.tipo = "IN";
                                    lDeuda.Add(pagoIntereses);
                                    ValorLiquidado += (int)pagoIntereses.valor;
                                }
                                else
                                {
                                    if (ValorIntereses < (reg.ValorPagar - ValorLiquidado))
                                    {
                                        pagoCapital.id_cartera = lCartera[i].id;
                                        pagoCapital.id_concepto = lCartera[i].id_concepto;
                                        pagoCapital.valor = (int)((reg.ValorPagar - ValorLiquidado) - ValorIntereses);
                                        pagoCapital.nombre_concepto = lCartera[i].conceptos.nombre;
                                        pagoCapital.periodo = lCartera[i].periodo;
                                        pagoCapital.vigencia = lCartera[i].vigencia;
                                        pagoCapital.id_grupo = lCartera[i].id_grupo;
                                        pagoCapital.tipo = "CA";
                                        lDeuda.Add(pagoCapital);
                                        ValorLiquidado += (int)pagoCapital.valor;

                                        if (ValorIntereses > 0)
                                        {
                                            pagoIntereses.id_concepto = 6;
                                            pagoIntereses.valor = ValorIntereses;

                                            if (DiasTipo.TiposIntereses == "S") pagoIntereses.nombre_concepto = "Intereses: " + lCartera[i].conceptos.nombre + ", desde " + FechaUltimoCalculoIntereses.ToShortDateString() + " hasta " + FechaUltimoCalculoIntereses.AddDays(DiasTipo.NumeroDias).ToShortDateString();
                                            else pagoIntereses.nombre_concepto = "Intereses: " + lCartera[i].conceptos.nombre;

                                            pagoIntereses.id_cartera = lCartera[i].id;
                                            pagoIntereses.fecha_calculo_intereses = FechaActual;
                                            pagoIntereses.periodo = lCartera[i].periodo;
                                            pagoIntereses.vigencia = lCartera[i].vigencia;
                                            pagoIntereses.fecha_calculo_intereses = FechaActual.AddDays(1);
                                            pagoIntereses.id_grupo = lCartera[i].id_grupo;
                                            pagoIntereses.tipo = "IN";
                                            lDeuda.Add(pagoIntereses);
                                            ValorLiquidado += (int)pagoIntereses.valor;
                                        }
                                    }
                                    else
                                    {
                                        pagoIntereses.id_concepto = 6;
                                        pagoIntereses.valor = reg.ValorPagar - ValorLiquidado;

                                        if (DiasTipo.TiposIntereses == "S") pagoIntereses.nombre_concepto = "Intereses: " + lCartera[i].conceptos.nombre + ", desde " + FechaUltimoCalculoIntereses.ToShortDateString() + " hasta " + FechaUltimoCalculoIntereses.AddDays(DiasTipo.NumeroDias).ToShortDateString();
                                        else pagoIntereses.nombre_concepto = "Intereses: " + lCartera[i].conceptos.nombre;

                                        pagoIntereses.id_cartera = lCartera[i].id;
                                        pagoIntereses.fecha_calculo_intereses = FechaUltimoCalculoIntereses.AddDays(DiasTipo.NumeroDias);
                                        pagoIntereses.periodo = lCartera[i].periodo;
                                        pagoIntereses.vigencia = lCartera[i].vigencia;
                                        pagoIntereses.fecha_calculo_intereses = FechaActual.AddDays(DiasTipo.NumeroDias + 1);
                                        pagoIntereses.id_grupo = lCartera[i].id_grupo;
                                        pagoIntereses.tipo = "IN";
                                        lDeuda.Add(pagoIntereses);
                                        ValorLiquidado += (int)pagoIntereses.valor;
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (ValorPeriodo <= (reg.ValorPagar - ValorLiquidado))
                            {
                                pagoCapital.id_cartera = lCartera[i].id;
                                pagoCapital.id_concepto = lCartera[i].id_concepto;
                                pagoCapital.valor = (int)(ValorPeriodo);
                                pagoCapital.nombre_concepto = lCartera[i].conceptos.nombre;
                                pagoCapital.periodo = lCartera[i].periodo;
                                pagoCapital.vigencia = lCartera[i].vigencia;
                                pagoCapital.id_grupo = lCartera[i].id_grupo;
                                pagoCapital.tipo = "CA";
                                lDeuda.Add(pagoCapital);
                                ValorLiquidado += (int)pagoCapital.valor;
                            }
                            else
                            {
                                pagoCapital.id_cartera = lCartera[i].id;
                                pagoCapital.id_concepto = lCartera[i].id_concepto;
                                pagoCapital.valor = (int)(reg.ValorPagar - ValorLiquidado);
                                pagoCapital.nombre_concepto = lCartera[i].conceptos.nombre;
                                pagoCapital.periodo = lCartera[i].periodo;
                                pagoCapital.vigencia = lCartera[i].vigencia;
                                pagoCapital.id_grupo = lCartera[i].id_grupo;
                                pagoCapital.tipo = "CA";
                                lDeuda.Add(pagoCapital);
                                ValorLiquidado += (int)pagoCapital.valor;
                            }
                        }
                        i++;
                    }
                    else
                    {
                        ban = true;
                    }
                }
                return lDeuda;
            }
        }
Пример #2
0
        // los dos siguientes metodos son los de liquidar de manera provisional
        public List<detalles_pagoDto> GetDeudaEstudianteL(bDeudaEstudianteFecha reg)
        {
            mCausacion.Causar(reg.id_estudiante);
            using (ctx = new ieEntities())
            {
                DateTime FechaActual = reg.fecha;
                List<detalles_pagoDto> lDeuda = new List<detalles_pagoDto>();
                int VigPerAct = int.Parse(FechaActual.Year.ToString() + FechaActual.Month.ToString().PadLeft(2, '0'));
                List<carterap> lCartera = new List<carterap>();
                if (reg.id_grupo == null) lCartera = ctx.carterap.Where(t => t.id_estudiante == reg.id_estudiante && (t.estado == "PR" || t.estado == "CA") && (t.vigencia * 100 + t.periodo) <= VigPerAct && t.pagado < t.valor).OrderBy(t => t.vigencia).ThenBy(t => t.periodo).ThenBy(t => t.grupos_pagos.prioridad).ThenBy(t => t.id_concepto).ToList();
                else lCartera = ctx.carterap.Where(t => t.id_estudiante == reg.id_estudiante && t.id_grupo == reg.id_grupo && (t.estado == "PR" || t.estado == "CA") && (t.vigencia * 100 + t.periodo) <= VigPerAct && t.pagado < t.valor).OrderBy(t => t.vigencia).ThenBy(t => t.periodo).ThenBy(t => t.grupos_pagos.prioridad).ThenBy(t => t.id_concepto).ToList();

                bool ban = false;
                foreach (carterap item in lCartera)
                {
                    if (((item.id_grupo == lCartera[0].id_grupo) && (ban == false)) || reg.id_grupo == null)
                    {
                        detalles_pagoDto pagoCapital = new detalles_pagoDto();
                        detalles_pagoDto pagoIntereses = new detalles_pagoDto();

                        pagoCapital.id_concepto = item.id_concepto;
                        pagoCapital.valor = (int)(item.valor - item.pagado);
                        pagoCapital.nombre_concepto = item.conceptos.nombre;
                        pagoCapital.periodo = item.periodo;
                        pagoCapital.id_cartera = item.id;
                        pagoCapital.vigencia = item.vigencia;
                        pagoCapital.id_grupo = item.id_grupo;
                        pagoCapital.tipo = "CA";
                        lDeuda.Add(pagoCapital);

                        config_grupos_pagos config = ctx.config_grupos_pagos.Where(t => t.id_concepto == item.id_concepto && t.vigencia == item.vigencia).FirstOrDefault();
                        if ((config != null) && (config.intereses == "SI"))
                        {
                            periodos periodo = ctx.periodos.Where(t => t.periodo == item.periodo && t.vigencia == item.vigencia).FirstOrDefault();
                            DateTime FechaVencimientoPeriodo = new DateTime((int)periodo.vigencia, (int)periodo.periodo, (int)periodo.vence_dia);
                            if (FechaActual > FechaVencimientoPeriodo)
                            {
                                mIntereses oTI = new mIntereses();
                                DiasInteresesDto DiasTipo = oTI.GetNumeroDiasPagoIntereses(0, 0, pagoCapital.vigencia);
                                DateTime FechaUltimoCalculoIntereses = item.fechas_calculo_intereses.Where(t => t.estado == "PA").OrderByDescending(t => t.fecha).FirstOrDefault().fecha;
                                int ValorIntereses = oTI.GetValorIntereses(FechaUltimoCalculoIntereses, FechaActual, pagoCapital.valor, pagoCapital.vigencia, pagoCapital.periodo, pagoCapital.id_cartera);
                                if (ValorIntereses > 0)
                                {
                                    pagoIntereses.id_cartera = item.id;
                                    pagoIntereses.fecha_calculo_intereses = FechaActual;
                                    pagoIntereses.id_concepto = 6;
                                    pagoIntereses.valor = ValorIntereses;
                                    if (DiasTipo.TiposIntereses == "S") pagoIntereses.nombre_concepto = "Intereses: " + pagoCapital.nombre_concepto + ", desde " + FechaUltimoCalculoIntereses.ToShortDateString() + " hasta " + FechaActual.ToShortDateString();
                                    else pagoIntereses.nombre_concepto = "Intereses: " + pagoCapital.nombre_concepto;
                                    pagoIntereses.periodo = pagoCapital.periodo;
                                    pagoIntereses.vigencia = pagoCapital.vigencia;
                                    pagoIntereses.id_grupo = item.id_grupo;
                                    pagoIntereses.tipo = "IN";
                                    lDeuda.Add(pagoIntereses);
                                }
                            }
                        }
                    }
                    else
                    {
                        ban = true;
                    }
                }
                return lDeuda;
            }
        }
Пример #3
0
 private int CalcularValorInteresesCartera(DateTime FechaCausacion, carterap cartera, int ValorIntereses)
 {
     config_grupos_pagos config = db.config_grupos_pagos.Where(t => t.id_concepto == cartera.id_concepto && t.vigencia == cartera.vigencia).FirstOrDefault();
     if ((config != null) && (config.intereses == "SI"))
     {
         periodos periodo = db.periodos.Where(t => t.periodo == cartera.periodo && t.vigencia == cartera.vigencia).FirstOrDefault();
         DateTime FechaVencimientoPeriodo = new DateTime((int)periodo.vigencia, (int)periodo.periodo, (int)periodo.vence_dia);
         if (FechaCausacion > FechaVencimientoPeriodo)
         {
             mIntereses oTI = new mIntereses();
             DiasInteresesDto DiasTipo = oTI.GetNumeroDiasPagoIntereses(0, 0, cartera.vigencia);
             DateTime FechaUltimoCalculoIntereses = cartera.fechas_calculo_intereses.Where(t => t.estado == "PA").OrderByDescending(t => t.fecha).FirstOrDefault().fecha;
             ValorIntereses = oTI.GetValorIntereses(FechaUltimoCalculoIntereses, FechaCausacion, cartera.valor, cartera.vigencia, cartera.periodo, cartera.id);
         }
     }
     return ValorIntereses;
 }