/// <summary> /// Get MCalendar from Cache /// </summary> /// <param name="ctx">context</param> /// <param name="C_Calendar_ID">id</param> /// <returns>MCalendar</returns> public static MCalendar Get(Ctx ctx, int C_Calendar_ID) { int key = C_Calendar_ID; MCalendar retValue = (MCalendar)cache[key]; if (retValue != null) { return(retValue); } retValue = new MCalendar(ctx, C_Calendar_ID, null); if (retValue.Get_ID() != 0) { cache.Add(key, retValue); } return(retValue); }
/// <summary> /// Is standard Period Open for specified orgs for the client. For best /// performance, ensure that the list of orgs does not contain duplicates. /// </summary> /// <param name="ctx"></param> /// <param name="AD_Client_ID"></param> /// <param name="orgs"></param> /// <param name="DateAcct">accounting date</param> /// <param name="DocBaseType">document base type</param> /// <returns>error message or null</returns> /// <date>07-March-2011</date> /// <writer>raghu</writer> public static String IsOpen(Ctx ctx, int AD_Client_ID, List <int> orgs, DateTime?DateAcct, String DocBaseType) { if (DateAcct == null) { return("@NotFound@ @DateAcct@"); } if (DocBaseType == null) { return("@NotFound@ @DocBaseType@"); } MAcctSchema as1 = MClient.Get(ctx, AD_Client_ID).GetAcctSchema(); if (as1 == null) { return("@NotFound@ @C_AcctSchema_ID@ for AD_Client_ID=" + AD_Client_ID); } if (as1.IsAutoPeriodControl()) { if (as1.IsAutoPeriodControlOpen(DateAcct)) { return(null); } else { return("@PeriodClosed@ - @AutoPeriodControl@"); } } // Get all Calendars in line with Organizations MClientInfo clientInfo = MClientInfo.Get(ctx, AD_Client_ID, null); List <int> orgCalendars = new List <int>(); List <int> calendars = new List <int>(); foreach (int org in orgs) { MOrgInfo orgInfo = MOrgInfo.Get(ctx, org, null); int C_Calendar_ID = orgInfo.GetC_Calendar_ID(); if (C_Calendar_ID == 0) { C_Calendar_ID = clientInfo.GetC_Calendar_ID(); } orgCalendars.Add(C_Calendar_ID); if (!calendars.Contains(C_Calendar_ID)) { calendars.Add(C_Calendar_ID); } } // Should not happen if (calendars.Count == 0) { return("@NotFound@ @C_Calendar_ID@"); } // For all Calendars get Periods for (int i = 0; i < calendars.Count; i++) { int C_Calendar_ID = calendars[i]; MPeriod period = MPeriod.GetOfCalendar(ctx, C_Calendar_ID, DateAcct); // First Org for Calendar int AD_Org_ID = 0; for (int j = 0; j < orgCalendars.Count; j++) { if (orgCalendars[j] == C_Calendar_ID) { AD_Org_ID = orgs[j]; break; } } if (period == null) { MCalendar cal = MCalendar.Get(ctx, C_Calendar_ID); String date = DisplayType.GetDateFormat(DisplayType.Date).Format(DateAcct); if (cal != null) { return("@NotFound@ @C_Period_ID@: " + date + " - " + MOrg.Get(ctx, AD_Org_ID).GetName() + " -> " + cal.GetName()); } else { return("@NotFound@ @C_Period_ID@: " + date + " - " + MOrg.Get(ctx, AD_Org_ID).GetName() + " -> C_Calendar_ID=" + C_Calendar_ID); } } String error = period.IsOpen(DocBaseType, DateAcct); if (error != null) { return(error + " - " + MOrg.Get(ctx, AD_Org_ID).GetName() + " -> " + MCalendar.Get(ctx, C_Calendar_ID).GetName()); } } return(null); // open }