Beispiel #1
0
        public static Schedule mapMonthlyFrequency(FSServiceContract fsServiceContractRow, DateTime?lastGeneratedElementDate, int frequency, Period period = null)
        {
            Period schedulingRange = period ?? new Period((DateTime)fsServiceContractRow.StartDate, fsServiceContractRow.EndDate);

            var monthlyScheduleSpecificDay = new MonthlyScheduleSpecificDay
            {
                Name = TX.FrecuencySchedule.MONTHSPECIFICDATE,
                LastGeneratedTimeSlotDate = lastGeneratedElementDate,
                SubScheduleID             = 1,
                TimeOfDayBegin            = new TimeSpan(5, 0, 0), //TODO SD-5493
                TimeOfDayEnd    = new TimeSpan(11, 0, 0),
                Frequency       = frequency,
                SchedulingRange = schedulingRange
            };

            monthlyScheduleSpecificDay.DayOfMonth = fsServiceContractRow.StartDate.Value.Day;

            return(monthlyScheduleSpecificDay);
        }
Beispiel #2
0
        /// <summary>
        /// This function maps a FSSchedule Monthly frequency to a MonthlyScheduleSpecificDay or MonthlyScheduleWeekDay in the Scheduler module depending of the
        /// <c>fsScheduleRow.MonthlyDaySel</c>. The [SubScheduleID] correspond to which of the four types of Monthly is specified in the [fsScheduleRow].
        /// </summary>
        public static Schedule mapMonthlyFrequency(PXCache cache, FSSchedule fsScheduleRow, int subScheduleID, DateTime?toDate, string recordType, string monthlyRecurrenceType, Period period = null)
        {
            bool applySeasonInSchedule = recordType != ID.RecordType_ServiceContract.EMPLOYEE_SCHEDULE_CONTRACT ? SharedFunctions.GetEnableSeasonSetting(cache.Graph, fsScheduleRow) : false;

            Period schedulingRange = period ?? new Period((DateTime)fsScheduleRow.StartDate, fsScheduleRow.EndDate);

            if (monthlyRecurrenceType == ID.ScheduleMonthlySelection.DAILY)
            {
                var monthlyScheduleSpecificDay = new MonthlyScheduleSpecificDay
                {
                    Name       = TX.FrecuencySchedule.MONTHSPECIFICDATE,
                    EntityID   = fsScheduleRow.EntityID,
                    EntityType = fsScheduleRow.EntityType,
                    LastGeneratedTimeSlotDate = fsScheduleRow.LastGeneratedElementDate,
                    ScheduleID      = (int)fsScheduleRow.ScheduleID,
                    SubScheduleID   = subScheduleID,
                    TimeOfDayBegin  = new TimeSpan(5, 0, 0), //TODO SD-5493
                    TimeOfDayEnd    = new TimeSpan(11, 0, 0),
                    Frequency       = (int)fsScheduleRow.MonthlyFrequency,
                    SchedulingRange = schedulingRange,
                    Descr           = fsScheduleRow.ContractDescr,
                    ApplySeason     = applySeasonInSchedule,
                    SeasonOnJan     = fsScheduleRow.SeasonOnJan,
                    SeasonOnFeb     = fsScheduleRow.SeasonOnFeb,
                    SeasonOnMar     = fsScheduleRow.SeasonOnMar,
                    SeasonOnApr     = fsScheduleRow.SeasonOnApr,
                    SeasonOnMay     = fsScheduleRow.SeasonOnMay,
                    SeasonOnJun     = fsScheduleRow.SeasonOnJun,
                    SeasonOnJul     = fsScheduleRow.SeasonOnJul,
                    SeasonOnAug     = fsScheduleRow.SeasonOnAug,
                    SeasonOnSep     = fsScheduleRow.SeasonOnSep,
                    SeasonOnOct     = fsScheduleRow.SeasonOnOct,
                    SeasonOnNov     = fsScheduleRow.SeasonOnNov,
                    SeasonOnDec     = fsScheduleRow.SeasonOnDec
                };
                switch (subScheduleID)
                {
                case SubScheduleType.FIRST:
                    monthlyScheduleSpecificDay.DayOfMonth = (int)fsScheduleRow.MonthlyOnDay1;
                    break;

                case SubScheduleType.SECOND:
                    monthlyScheduleSpecificDay.DayOfMonth = (int)fsScheduleRow.MonthlyOnDay2;
                    break;

                case SubScheduleType.THIRD:
                    monthlyScheduleSpecificDay.DayOfMonth = (int)fsScheduleRow.MonthlyOnDay3;
                    break;

                case SubScheduleType.FOURTH:
                    monthlyScheduleSpecificDay.DayOfMonth = (int)fsScheduleRow.MonthlyOnDay4;
                    break;
                }

                return(monthlyScheduleSpecificDay);
            }
            else
            {
                var monthlyScheduleWeekDay = new MonthlyScheduleWeekDay
                {
                    Name       = TX.FrecuencySchedule.MONTHWEEKDAY,
                    EntityID   = fsScheduleRow.EntityID,
                    EntityType = fsScheduleRow.EntityType,
                    LastGeneratedTimeSlotDate = fsScheduleRow.LastGeneratedElementDate,
                    ScheduleID      = (int)fsScheduleRow.ScheduleID,
                    SubScheduleID   = subScheduleID,
                    TimeOfDayBegin  = new TimeSpan(5, 0, 0), //TODO SD-5493
                    TimeOfDayEnd    = new TimeSpan(11, 0, 0),
                    Frequency       = (int)fsScheduleRow.MonthlyFrequency,
                    SchedulingRange = schedulingRange,
                    Descr           = fsScheduleRow.ContractDescr,
                    ApplySeason     = applySeasonInSchedule,
                    SeasonOnJan     = fsScheduleRow.SeasonOnJan,
                    SeasonOnFeb     = fsScheduleRow.SeasonOnFeb,
                    SeasonOnMar     = fsScheduleRow.SeasonOnMar,
                    SeasonOnApr     = fsScheduleRow.SeasonOnApr,
                    SeasonOnMay     = fsScheduleRow.SeasonOnMay,
                    SeasonOnJun     = fsScheduleRow.SeasonOnJun,
                    SeasonOnJul     = fsScheduleRow.SeasonOnJul,
                    SeasonOnAug     = fsScheduleRow.SeasonOnAug,
                    SeasonOnSep     = fsScheduleRow.SeasonOnSep,
                    SeasonOnOct     = fsScheduleRow.SeasonOnOct,
                    SeasonOnNov     = fsScheduleRow.SeasonOnNov,
                    SeasonOnDec     = fsScheduleRow.SeasonOnDec
                };
                switch (subScheduleID)
                {
                case SubScheduleType.FIRST:
                    monthlyScheduleWeekDay.MonthlyOnWeek      = (short)fsScheduleRow.MonthlyOnWeek1;
                    monthlyScheduleWeekDay.MonthlyOnDayOfWeek = SharedFunctions.getDayOfWeekByID((int)fsScheduleRow.MonthlyOnDayOfWeek1);
                    break;

                case SubScheduleType.SECOND:
                    monthlyScheduleWeekDay.MonthlyOnWeek      = (short)fsScheduleRow.MonthlyOnWeek2;
                    monthlyScheduleWeekDay.MonthlyOnDayOfWeek = SharedFunctions.getDayOfWeekByID((int)fsScheduleRow.MonthlyOnDayOfWeek2);
                    break;

                case SubScheduleType.THIRD:
                    monthlyScheduleWeekDay.MonthlyOnWeek      = (short)fsScheduleRow.MonthlyOnWeek3;
                    monthlyScheduleWeekDay.MonthlyOnDayOfWeek = SharedFunctions.getDayOfWeekByID((int)fsScheduleRow.MonthlyOnDayOfWeek3);
                    break;

                case SubScheduleType.FOURTH:
                    monthlyScheduleWeekDay.MonthlyOnWeek      = (short)fsScheduleRow.MonthlyOnWeek4;
                    monthlyScheduleWeekDay.MonthlyOnDayOfWeek = SharedFunctions.getDayOfWeekByID((int)fsScheduleRow.MonthlyOnDayOfWeek4);
                    break;
                }

                return(monthlyScheduleWeekDay);
            }
        }