Exemplo n.º 1
0
        public static DateTime GetPrevisionPago(EFormaPago forma_pago, DateTime fecha_base, long dias_credito, long dia_extracto)
        {
            switch (forma_pago)
            {
            case EFormaPago.Contado:
                return(fecha_base);

            case EFormaPago.XDiasFechaFactura:
                return(fecha_base.AddDays(dias_credito));

            case EFormaPago.XDiasMes:
            {
                DateTime f;
                f = fecha_base.AddMonths(1);
                f = new DateTime(f.Year, f.Month, 1);
                return(f.AddDays(dias_credito - 1));
            }

            case EFormaPago.MesVencido:
            {
                DateTime f;
                f = fecha_base.AddMonths(1);
                f = new DateTime(f.Year, f.Month, (dias_credito != 0) ? (int)dias_credito : 1);

                if (fecha_base.Day <= dia_extracto)
                {
                    return(f);
                }
                else
                {
                    return(f.AddMonths(1));
                }
            }

            case EFormaPago.Trimestral:
            {
                DateTime f = fecha_base;

                switch ((int)(fecha_base.Month % 3))
                {
                case 1: f = fecha_base.AddMonths(3); break;

                case 2: f = fecha_base.AddMonths(2); break;

                case 0: f = fecha_base.AddMonths(1); break;
                }

                try
                {
                    return(DateAndTime.Parse(Convert.ToInt32(dias_credito), f.Month, f.Year));
                }
                catch { return(f); }
            }
            }

            return(fecha_base);
        }