Esempio n. 1
0
        private static void CreateNewForm(DateTime referenceDate, Form currentForm, int productionUnitId, Func <int, int, int, DateTime, int> createFormMethod, Func <int, int, DateTime, bool> checkFormMethod)
        {
            GregorianCalendar calendar = new GregorianCalendar();
            int    formID          = currentForm.FormID;
            string periodicityCode = currentForm.Periodicity.Code;

            // Check Form by FormDate=currentDate
            //bool formExists = Cx???Form.CheckFormsByFormDate(formID, productionUnitId, referenceDate);
            bool formExists = checkFormMethod(formID, productionUnitId, referenceDate);

            // If not exists create one
            if (!formExists)
            {
                int periodNumber = GetPeriodNumber(periodicityCode, referenceDate);
                int fid          = createFormMethod(formID, productionUnitId, periodNumber, referenceDate);
                Goodies.SendEmail(Properties.Settings.Default.NotificationMessage, productionUnitId, currentForm.FormType.FunctionalAreaID, currentForm.Description, periodNumber, currentForm.Periodicity.Code, referenceDate);
            }

            if (periodicityCode == "D")
            {
                referenceDate = referenceDate.AddDays(1);
            }
            if (periodicityCode == "W")
            {
                //int weekOfYear = calendar.GetWeekOfYear(referenceDate, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
                referenceDate = referenceDate.AddDays(7);
            }
            if (periodicityCode == "M")
            {
                referenceDate = referenceDate.AddMonths(1);
            }
            if (periodicityCode == "Q")
            {
                referenceDate = referenceDate.AddMonths(3);
            }
            if (periodicityCode == "S")
            {
                referenceDate = referenceDate.AddMonths(6);
            }
            if (periodicityCode == "Y")
            {
                referenceDate = referenceDate.AddYears(1);
            }

            if (referenceDate.CompareTo(DateTime.Today) >= 0)
            {
                return;
            }

            //recursively run this method
            CreateNewForm(referenceDate, currentForm, productionUnitId, createFormMethod, checkFormMethod);
        }
Esempio n. 2
0
        private static void ProcessLateFinancialForm(Form currentForm)
        {
            int? alarmRangeUser      = 0;
            int? alarmRangeManager   = 0;
            int? alarmRangeExecutive = 0;
            bool userAlert           = false;
            bool managerAlert        = false;
            bool executiveAlert      = false;

            IQueryable <FinancialForm> forms = CxFinancialForm.GetFormsNotApproved(currentForm.FormID);
            var result = forms.ToList();

            // for each form not apporved (formState!=4)
            foreach (FinancialForm f1 in result)
            {
                alarmRangeUser      = f1.Form.AlarmRangeUser;
                alarmRangeManager   = f1.Form.AlarmRangeManager;
                alarmRangeExecutive = f1.Form.AlarmRangeExecutive;
                int lateDays = GetFormLateDays(f1.FormDate, f1.Form.Periodicity.Code);

                if (lateDays >= alarmRangeUser && f1.UserAlertDate == null)
                {
                    Goodies.SendEmail(Properties.Settings.Default.LateNotificationMessage, f1.ProductionUnitID, f1.Form.FormType.FunctionalAreaID, f1.Form.Description, f1.PeriodNumber, f1.Form.Periodicity.Code, f1.FormDate);
                    userAlert = true;
                }
                if (lateDays >= alarmRangeManager && f1.ManagerAlertDate == null)
                {
                    Goodies.SendManagerEmail(Properties.Settings.Default.LateNotificationMessage, f1.ProductionUnitID, f1.Form.FormType.FunctionalAreaID, f1.Form.Description, f1.PeriodNumber, f1.Form.Periodicity.Code, f1.FormDate);
                    managerAlert = true;
                }
                if (lateDays >= alarmRangeExecutive && f1.ExecutiveAlertDate == null)
                {
                    Goodies.SendExecutiveEmail(Properties.Settings.Default.LateNotificationMessage, f1.ProductionUnitID, f1.Form.FormType.FunctionalAreaID, f1.Form.Description, f1.PeriodNumber, f1.Form.Periodicity.Code, f1.FormDate);
                    executiveAlert = true;
                }
                CxFinancialForm.UpdateAlertDate(f1.FinancialFormID, userAlert, managerAlert, executiveAlert);
            }
        }