public virtual IEnumerable generateYears(PXAdapter adapter) { IFinPeriodRepository finPeriodRepository = Base.GetService <IFinPeriodRepository>(); IFinPeriodUtils finPeriodUtils = Base.GetService <IFinPeriodUtils>(); PrimaryFinYear primaryYear = (PrimaryFinYear)Base.Caches <PrimaryFinYear>().Current; if (primaryYear == null) { throw new PXException(Messages.NeedToCreateFirstCalendarYear); } int?firstExistingYear = int.TryParse(finPeriodRepository.FindFirstYear(primaryYear.OrganizationID ?? 0, clearQueryCache: true)?.Year, out int parsedFirstExistingYear) ? parsedFirstExistingYear : (int?)null; int?lastExistingYear = int.TryParse(finPeriodRepository.FindLastYear(primaryYear.OrganizationID ?? 0, clearQueryCache: true)?.Year, out int parsedLastExistingYear) ? parsedLastExistingYear : (int?)null; bool generateCalendar = true; if (!Base.IsContractBasedAPI) { generateCalendar = GenerateParams.AskExtFullyValid((graph, viewName) => { FinPeriodGenerateParameters parameters = GenerateParams.Current; parameters.OrganizationID = primaryYear.OrganizationID; parameters.FromYear = parameters.ToYear = lastExistingYear == null ? primaryYear.Year : (lastExistingYear + 1).ToString(); parameters.FirstFinYear = firstExistingYear?.ToString(); parameters.LastFinYear = lastExistingYear?.ToString(); }, DialogAnswerType.Positive); } if (generateCalendar) { int fromYear = int.Parse(GenerateParams.Current.FromYear); int toYear = int.Parse(GenerateParams.Current.ToYear); IFinPeriodMaintenanceGraph processingGraph = Base.Clone(); PXLongOperation.StartOperation( Base, delegate() { finPeriodUtils.CheckParametersOfCalendarGeneration(primaryYear.OrganizationID, fromYear, toYear); processingGraph.GenerateCalendar(primaryYear.OrganizationID, fromYear, toYear); }); if (Base.IsContractBasedAPI) { PXLongOperation.WaitCompletion(Base.UID); } } return(adapter.Get()); }
public (int firstYear, int lastYear) GetFirstLastYearForGeneration(int?organizationID, int fromYear, int toYear, bool clearQueryCache = false) { IFinPeriodRepository finPeriodRepository = Graph.GetService <IFinPeriodRepository>(); int?firstExistingYear = int.TryParse(finPeriodRepository.FindFirstYear(organizationID ?? 0, clearQueryCache)?.Year, out int parsedFirstExistingYear) ? parsedFirstExistingYear : (int?)null; int?lastExistingYear = int.TryParse(finPeriodRepository.FindLastYear(organizationID ?? 0, clearQueryCache)?.Year, out int parsedLastExistingYear) ? parsedLastExistingYear : (int?)null; int lastYear = lastExistingYear ?? fromYear - 1; int firstYear = firstExistingYear ?? fromYear - 1; return(firstYear, lastYear); }