示例#1
0
        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;
            }
        }
示例#2
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);
        }