protected virtual IEnumerable GetRecords() { PXCache cache = _Graph.Caches[_CacheType]; object extCurrentRow = PXView.Currents.FirstOrDefault(c => _CacheType.IsAssignableFrom(c.GetType())); int?calendarOrganizationID = TakeBranchForSelectorFromQueryParams || TakeOrganizationForSelectorFromQueryParams ? SourceOrganizationIDProvider.GetCalendarOrganizationID(PXView.Parameters, TakeBranchForSelectorFromQueryParams, TakeOrganizationForSelectorFromQueryParams) : SourceOrganizationIDProvider.GetCalendarOrganizationID(cache.Graph, cache, extCurrentRow); calendarOrganizationID = calendarOrganizationID ?? FinPeriod.organizationID.MasterValue; int startRow = PXView.StartRow; int totalRows = 0; List <object> parameters = new List <object>(); BqlCommand cmd = GetCommand(cache, extCurrentRow, parameters, calendarOrganizationID); PXView view = new PXView(_Graph, PXView.View?.IsReadOnly ?? true, cmd); try { IEnumerable <object> data = view.Select(PXView.Currents, parameters.ToArray(), PXView.Searches, PXView.SortColumns, PXView.Descendings, PXView.Filters, ref startRow, PXView.MaximumRows, ref totalRows); var r = data.Select(record => BuildFinPeriod(calendarOrganizationID, record)).ToArray(); return(r); } finally { PXView.StartRow = 0; } }
protected virtual BqlCommand GetCommand(PXCache cache, object extRow, List <object> parameters, int?calendarOrganizationID) { BqlCommand cmd = BqlCommand.CreateInstance(OrigSearchType); if (calendarOrganizationID == FinPeriod.organizationID.MasterValue && MasterPeriodBasedOnOrganizationPeriods) { cmd = BqlCommand.AppendJoin <LeftJoin <MasterFinPeriod, On <FinPeriod.masterFinPeriodID, Equal <MasterFinPeriod.finPeriodID> > > >(cmd) .AggregateNew <Aggregate <GroupBy <FinPeriod.masterFinPeriodID, GroupBy <MasterFinPeriod.startDate, GroupBy <MasterFinPeriod.endDate, GroupBy <MasterFinPeriod.noteID> > > > > >(); int?[] basisOrganizationIDs = SourceOrganizationIDProvider.GetBasisOrganizationIDsValues(cache.Graph, cache, extRow).OrganizationIDs.ToArray(); if (basisOrganizationIDs.Any()) { cmd = cmd.WhereAnd <Where <FinPeriod.organizationID, In <Required <FinPeriod.organizationID> > > >(); parameters.Add(basisOrganizationIDs); } else { cmd = cmd.WhereAnd <Where <FinPeriod.organizationID, NotEqual <Required <FinPeriod.organizationID> > > >(); parameters.Add(calendarOrganizationID); } } else { cmd = cmd.WhereAnd <Where <FinPeriod.organizationID, Equal <Required <FinPeriod.organizationID> > > >(); parameters.Add(calendarOrganizationID); } return(cmd); }