Esempio n. 1
0
        private PeriodInfo GetUntMinFromDB(KlonsADataSet.PERSONSRow drpr, DateTime dt1, DateTime dt2)
        {
            var um0 = new UntMinData();

            um0.Dt1 = dt1;
            um0.Dt2 = dt2;
            var ret = new PeriodInfo();

            ret.DateFirst = dt1;
            ret.DateLast  = dt2;
            var ret2 = new PeriodInfo();

            ret2.DateFirst = dt1;
            ret2.DateLast  = dt2;
            ret2.Item1     = um0;
            ret.LinkedPeriods.Add(ret2);

            var pi = new PeriodInfo();

            pi.DateFirst = dt1;
            pi.DateLast  = dt2;
            var drs = drpr.GetUNTAXED_MINRows()
                      .OrderBy(d => d.ONDATE)
                      .ToArray();

            if (drs.Length == 0)
            {
                return(ret);
            }
            var rt = pi.ReadDateListFilter(drs, d => d.ONDATE);

            if (rt != PeriodInfo.ERetReadStartEndList.OK ||
                pi.LinkedPeriods.Count == 0)
            {
                return(ret);
            }

            ret.LinkedPeriods.Clear();
            foreach (var pi2 in pi.LinkedPeriods)
            {
                var dr_untmin = (pi2.Item1 as KlonsADataSet.UNTAXED_MINRow);
                var um1       = new UntMinData();
                um1.Dt1         = pi2.DateFirst;
                um1.Dt2         = pi2.DateLast;
                um1.UntMin      = dr_untmin.UNTAXED_MIN;
                um1.IINRateType = dr_untmin.IIN_RATE_TYPE;
                var pi_out = new PeriodInfo();
                pi_out.DateFirst = um1.Dt1;
                pi_out.DateLast  = um1.Dt2;
                pi_out.Item1     = um1;
                ret.LinkedPeriods.Add(pi_out);
            }
            return(ret);
        }
Esempio n. 2
0
        // returns -1 if no data; 0 - reduced rate; 1 - full rate
        public static int GetIINRateType(KlonsADataSet.PERSONSRow drpr, DateTime dt)
        {
            var dr_um = drpr.GetUNTAXED_MINRows()
                        .WhereX(d => d.ONDATE <= dt)
                        .OrderBy(d => d.ONDATE)
                        .LastOrDefault();

            if (dr_um == null)
            {
                return(-1);
            }
            return(dr_um.IIN_RATE_TYPE);
        }
Esempio n. 3
0
        public static decimal GetIINUntaxedMinimum(KlonsADataSet.PERSONSRow drpr, DateTime dt)
        {
            var dr_um = drpr.GetUNTAXED_MINRows()
                        .WhereX(d => d.ONDATE <= dt)
                        .OrderBy(d => d.ONDATE)
                        .LastOrDefault();

            if (dr_um == null)
            {
                return(0.0M);
            }
            return(dr_um.UNTAXED_MIN);
        }
Esempio n. 4
0
        public static decimal GetIINUntaxedMinimum2(KlonsADataSet.PERSONSRow drpr,
                                                    DateTime dt1, DateTime dt2)
        {
            var pi = new PeriodInfo();

            pi.DateFirst = dt1;
            pi.DateLast  = dt2;
            var drs = drpr.GetUNTAXED_MINRows()
                      .OrderBy(d => d.ONDATE)
                      .ToArray();

            if (drs.Length == 0)
            {
                return(0.0M);
            }
            var rt = pi.ReadDateListFilter(drs, d => d.ONDATE);

            if (rt != PeriodInfo.ERetReadStartEndList.OK ||
                pi.LinkedPeriods.Count == 0)
            {
                return(0.0M);
            }

            decimal daysinmonth = dt1.DaysInMonth();

            decimal sum    = 0.0M;
            decimal daysct = 0.0M;

            foreach (var pi2 in pi.LinkedPeriods)
            {
                daysct = (decimal)((pi2.DateLast - pi2.DateFirst).TotalDays + 1);
                decimal rate = (pi2.Item1 as KlonsADataSet.UNTAXED_MINRow).UNTAXED_MIN;
                sum += rate * daysct / daysinmonth;
            }
            daysct = (decimal)((dt2 - dt1).TotalDays + 1);
            sum    = sum / daysct * daysinmonth;
            return(sum);
        }