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); }
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); } }