private bool RunAgingEnterprise(DateTime dateCalc) { DateTime dateLastAging = PrefC.GetDate(PrefName.DateLastAging); if (dateLastAging.Date == dateCalc.Date) { if (MessageBox.Show(this, Lan.g(this, "Aging has already been calculated for") + " " + dateCalc.ToShortDateString() + " " + Lan.g(this, "and does not normally need to run more than once per day.\r\n\r\nRun anyway?"), "", MessageBoxButtons.YesNo) != DialogResult.Yes) { return(false); } } //Refresh prefs because AgingBeginDateTime is very time sensitive Prefs.RefreshCache(); DateTime dateTAgingBeganPref = PrefC.GetDateT(PrefName.AgingBeginDateTime); if (dateTAgingBeganPref > DateTime.MinValue) { MessageBox.Show(this, Lan.g(this, "You cannot run aging until it has finished the current calculations which began on") + " " + dateTAgingBeganPref.ToString() + ".\r\n" + Lans.g(this, "If you believe the current aging process has finished, a user with SecurityAdmin permission " + "can manually clear the date and time by going to Setup | Miscellaneous and pressing the 'Clear' button.")); return(false); } SecurityLogs.MakeLogEntry(Permissions.AgingRan, 0, "Aging Ran - Aging Form"); Prefs.UpdateString(PrefName.AgingBeginDateTime, POut.DateT(MiscData.GetNowDateTime(), false)); //get lock on pref to block others Signalods.SetInvalid(InvalidType.Prefs); //signal a cache refresh so other computers will have the updated pref as quickly as possible Cursor = Cursors.WaitCursor; bool result = true; ODProgress.ShowAction( () => { Ledgers.ComputeAging(0, dateCalc); Prefs.UpdateString(PrefName.DateLastAging, POut.Date(dateCalc, false)); }, startingMessage: Lan.g(this, "Calculating enterprise aging for all patients as of") + " " + dateCalc.ToShortDateString() + "...", actionException: ex => { Ledgers.AgingExceptionHandler(ex, this); result = false; } ); Cursor = Cursors.Default; Prefs.UpdateString(PrefName.AgingBeginDateTime, ""); //clear lock on pref whether aging was successful or not Signalods.SetInvalid(InvalidType.Prefs); return(result); }
private void butOK_Click(object sender, System.EventArgs e) { if (textDateCalc.errorProvider1.GetError(textDateCalc) != "") { MsgBox.Show(this, "Please fix data entry errors first."); return; } DateTime dateCalc = PIn.Date(textDateCalc.Text); if (PrefC.GetBool(PrefName.AgingIsEnterprise)) { //if this is true, dateCalc has to be DateTime.Today and aging calculated daily not monthly. if (!RunAgingEnterprise(dateCalc)) { //Errors displayed from RunAgingEnterprise return; } } else { SecurityLogs.MakeLogEntry(Permissions.AgingRan, 0, "Aging Ran - Aging Form"); Cursor = Cursors.WaitCursor; bool result = true; ODProgress.ShowAction(() => Ledgers.ComputeAging(0, dateCalc), startingMessage: Lan.g(this, "Calculating aging for all patients as of") + " " + dateCalc.ToShortDateString() + "...", actionException: ex => { Ledgers.AgingExceptionHandler(ex, this); result = false; } ); Cursor = Cursors.Default; if (!result) { DialogResult = DialogResult.Cancel; return; } if (Prefs.UpdateString(PrefName.DateLastAging, POut.Date(dateCalc, false))) { DataValid.SetInvalid(InvalidType.Prefs); } } MsgBox.Show(this, "Aging Complete"); DialogResult = DialogResult.OK; }