protected virtual IEnumerable filter()
        {
            PXCache cache = Caches[typeof(TEnqFilter)];

            if (cache != null)
            {
                DiscrepancyEnqFilter filter = cache.Current as DiscrepancyEnqFilter;
                if (filter != null)
                {
                    filter.TotalGLAmount    = 0m;
                    filter.TotalXXAmount    = 0m;
                    filter.TotalDiscrepancy = 0m;

                    foreach (TEnqResult res in Rows.Select())
                    {
                        filter.TotalGLAmount    += (res.GLTurnover ?? 0m);
                        filter.TotalXXAmount    += (res.XXTurnover ?? 0m);
                        filter.TotalDiscrepancy += (res.Discrepancy ?? 0m);
                    }
                }
            }

            yield return(cache.Current);

            cache.IsDirty = false;
        }
        protected virtual void PeriodToFieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
        {
            DiscrepancyEnqFilter row = (DiscrepancyEnqFilter)e.Row;

            if (string.CompareOrdinal(row.PeriodFrom, row.PeriodTo) > 0)
            {
                cache.SetValue <DiscrepancyEnqFilter.periodFrom>(e.Row, row.PeriodTo);
            }
        }
        public virtual IEnumerable NextPeriod(PXAdapter adapter)
        {
            DiscrepancyEnqFilter filter = Filter.Current as DiscrepancyEnqFilter;

            filter.UseMasterCalendar = filter.OrganizationID == null && filter.BranchID == null;
            int?calendarOrganizationID = FinPeriodRepository.GetCalendarOrganizationID(filter.OrganizationID, filter.BranchID, filter.UseMasterCalendar);

            FinPeriod nextPeriodFrom = FinPeriodRepository.FindNextPeriod(calendarOrganizationID, filter.PeriodFrom, looped: true);

            filter.PeriodFrom = nextPeriodFrom != null ? nextPeriodFrom.FinPeriodID : null;

            FinPeriod nextPeriodTo = FinPeriodRepository.FindNextPeriod(calendarOrganizationID, filter.PeriodTo, looped: true);

            filter.PeriodTo      = nextPeriodTo != null ? nextPeriodTo.FinPeriodID : null;
            filter.FilterDetails = null;
            return(adapter.Get());
        }
        protected IEnumerable rows()
        {
            PXCache cache = Caches[typeof(TEnqFilter)];
            DiscrepancyEnqFilter header = cache.Current as DiscrepancyEnqFilter;

            if (header.FilterDetails != null)
            {
                PXFieldState state = Filter.Cache.GetStateExt <DiscrepancyEnqFilter.filterDetails>(header) as PXFieldState;
                if (state?.Value is IEnumerable value)
                {
                    return(value);
                }
            }
            List <TEnqResult> result = SelectDetails();

            Filter.Cache.SetValueExt <DiscrepancyEnqFilter.filterDetails>(header, result);
            return(result);
        }
        protected virtual void FilterRowUpdated(PXCache cache, PXRowUpdatedEventArgs e)
        {
            DiscrepancyEnqFilter row = (DiscrepancyEnqFilter)e.Row;

            row.FilterDetails = null;
        }