Esempio n. 1
0
        protected virtual IEnumerable AccountDetails(PXAdapter adapter)
        {
            if (EnqResult.Current != null)
            {
                if (EnqResult.Current.AccountID == glsetup.Current.YtdNetIncAccountID)
                {
                    throw new PXException(Messages.DetailsReportIsNotAllowedForYTDNetIncome);
                }
                AccountByPeriodEnq    graph  = CreateInstance <AccountByPeriodEnq>();
                AccountByPeriodFilter filter = PXCache <AccountByPeriodFilter> .CreateCopy(graph.Filter.Current);

                filter.OrganizationID = Filter.Current.OrganizationID;
                filter.BranchID       = Filter.Current.BranchID;
                filter.LedgerID       = Filter.Current.LedgerID;
                filter.AccountID      = Filter.Current.AccountID;
                filter.SubID          = EnqResult.Current.SubCD;
                filter.StartPeriodID  = Filter.Current.FinPeriodID;
                filter.EndPeriodID    = filter.StartPeriodID;
                filter.ShowCuryDetail = Filter.Current.ShowCuryDetail;
                graph.Filter.Update(filter);
                graph.Filter.Select();                 // to calculate totals
                throw new PXRedirectRequiredException(graph, "Account Details");
            }
            return(adapter.Get());
        }
 public static void Copy(AccountByPeriodFilter filter, GLHistoryEnqFilter histFilter)
 {
     filter.BranchID       = histFilter.BranchID;
     filter.FinPeriodID    = histFilter.FinPeriodID;
     filter.LedgerID       = histFilter.LedgerID;
     filter.AccountID      = histFilter.AccountID;
     filter.SubID          = histFilter.SubCD;
     filter.StartPeriodID  = histFilter.BegFinPeriod;
     filter.ShowCuryDetail = histFilter.ShowCuryDetail;
 }
Esempio n. 3
0
 public static void Copy(AccountByPeriodFilter filter, GLHistoryEnqFilter histFilter)
 {
     filter.OrganizationID    = histFilter.OrganizationID;
     filter.BranchID          = histFilter.BranchID;
     filter.StartPeriodID     = histFilter.FinPeriodID;
     filter.EndPeriodID       = histFilter.FinPeriodID;
     filter.LedgerID          = histFilter.LedgerID;
     filter.AccountID         = histFilter.AccountID;
     filter.SubID             = histFilter.SubCD;
     filter.StartPeriodID     = histFilter.BegFinPeriod;
     filter.ShowCuryDetail    = histFilter.ShowCuryDetail;
     filter.UseMasterCalendar = histFilter.UseMasterCalendar;
 }
        public virtual IEnumerable ViewDetails(PXAdapter adapter)
        {
            if (this.EnqResult.Current != null && this.Filter.Current != null)
            {
                GLHistoryEnquiryResult res           = this.EnqResult.Current;
                GLHistoryEnqFilter     currentFilter = this.Filter.Current;

                AccountByPeriodEnq    graph  = PXGraph.CreateInstance <AccountByPeriodEnq>();
                AccountByPeriodFilter filter = graph.Filter.Current;
                Copy(filter, currentFilter);

                filter.AccountID = res.AccountID;
                graph.Filter.Update(filter);
                filter = graph.Filter.Select();
                throw new PXRedirectRequiredException(graph, "Account Details");
            }
            return(Filter.Select());
        }
        protected virtual IEnumerable AccountDetails(PXAdapter adapter)
        {
            if (this.EnqResult.Current != null)
            {
                if (this.EnqResult.Current.AccountID == this.glsetup.Current.YtdNetIncAccountID)
                {
                    throw new PXException(Messages.DetailsReportIsNotAllowedForYTDNetIncome);
                }
                AccountByPeriodEnq    graph  = PXGraph.CreateInstance <AccountByPeriodEnq>();
                AccountByPeriodFilter filter = PXCache <AccountByPeriodFilter> .CreateCopy(graph.Filter.Current);

                filter.AccountID      = this.Filter.Current.AccountID;
                filter.LedgerID       = this.Filter.Current.LedgerID;
                filter.BranchID       = this.Filter.Current.BranchID;
                filter.SubID          = this.Filter.Current.SubCD;
                filter.StartPeriodID  = this.EnqResult.Current.LastActivityPeriod;
                filter.EndPeriodID    = filter.StartPeriodID;
                filter.ShowCuryDetail = this.Filter.Current.ShowCuryDetail;
                graph.Filter.Update(filter);
                throw new PXRedirectRequiredException(graph, "Account Details");
            }
            return(adapter.Get());
        }
Esempio n. 6
0
        protected override List <APGLDiscrepancyByVendorEnqResult> SelectDetails()
        {
            var list = new List <APGLDiscrepancyByVendorEnqResult>();
            APGLDiscrepancyByVendorEnqFilter header = Filter.Current;

            if (header == null ||
                header.BranchID == null ||
                header.PeriodFrom == null ||
                header.AccountID == null ||
                header.SubCD == null)
            {
                return(list);
            }

            #region AP balances

            APVendorBalanceEnq graphAP = PXGraph.CreateInstance <APVendorBalanceEnq>();
            APVendorBalanceEnq.APHistoryFilter filterAP = PXCache <APVendorBalanceEnq.APHistoryFilter> .CreateCopy(graphAP.Filter.Current);

            filterAP.BranchID            = header.BranchID;
            filterAP.VendorID            = header.VendorID;
            filterAP.FinPeriodID         = header.PeriodFrom;
            filterAP.AccountID           = header.AccountID;
            filterAP.SubID               = header.SubCD;
            filterAP.ByFinancialPeriod   = true;
            filterAP.ShowWithBalanceOnly = false;
            filterAP.SplitByCurrency     = false;
            filterAP = graphAP.Filter.Update(filterAP);

            Dictionary <int, APGLDiscrepancyByVendorEnqResult> dict = new Dictionary <int, APGLDiscrepancyByVendorEnqResult>();

            foreach (APVendorBalanceEnq.APHistoryResult res in graphAP.History.Select())
            {
                APGLDiscrepancyByVendorEnqResult result;
                int     key        = (int)res.VendorID;
                decimal apTurnover = (res.Balance ?? 0m) - (res.Deposits ?? 0m);

                if (dict.TryGetValue(key, out result))
                {
                    result.XXTurnover += apTurnover;
                }
                else
                {
                    result            = new APGLDiscrepancyByVendorEnqResult();
                    result.GLTurnover = 0m;
                    result.XXTurnover = apTurnover;
                    PXCache <APVendorBalanceEnq.APHistoryResult> .RestoreCopy(result, res);

                    dict.Add(key, result);
                }
            }

            #endregion

            #region GL balances

            AccountByPeriodEnq    graphGL  = PXGraph.CreateInstance <AccountByPeriodEnq>();
            AccountByPeriodFilter filterGL = PXCache <AccountByPeriodFilter> .CreateCopy(graphGL.Filter.Current);

            graphGL.Filter.Cache.SetDefaultExt <AccountByPeriodFilter.ledgerID>(filterGL);
            filterGL.BranchID      = header.BranchID;
            filterGL.StartPeriodID = header.PeriodFrom;
            filterGL.EndPeriodID   = header.PeriodFrom;
            filterGL.AccountID     = header.AccountID;
            filterGL.SubID         = header.SubCD;
            filterGL = graphGL.Filter.Update(filterGL);

            foreach (GLTranR gltran in graphGL.GLTranEnq.Select()
                     .RowCast <GLTranR>()
                     .Where(row =>
                            row.Module == BatchModule.AP &&
                            row.ReferenceID != null &&
                            (header.VendorID == null || row.ReferenceID == header.VendorID)))
            {
                APGLDiscrepancyByVendorEnqResult result;
                int     key        = (int)gltran.ReferenceID;
                decimal glTurnover = CalcGLTurnover(gltran);

                if (dict.TryGetValue(key, out result))
                {
                    result.GLTurnover += glTurnover;
                }
                else
                {
                    Vendor vendor = PXSelect <Vendor,
                                              Where <Vendor.bAccountID, Equal <Required <Vendor.bAccountID> > > > .SelectSingleBound(this, null, key);

                    if (vendor != null)
                    {
                        result            = new APGLDiscrepancyByVendorEnqResult();
                        result.VendorID   = vendor.BAccountID;
                        result.AcctCD     = vendor.AcctCD;
                        result.AcctName   = vendor.AcctName;
                        result.GLTurnover = glTurnover;
                        result.XXTurnover = 0m;
                        dict.Add(key, result);
                    }
                }
            }

            #endregion

            list.AddRange(dict.Values.Where(result =>
                                            header.ShowOnlyWithDiscrepancy != true ||
                                            result.Discrepancy != 0m));
            return(list);
        }
        protected override List <DiscrepancyByAccountEnqResult> SelectDetails()
        {
            var list = new List <DiscrepancyByAccountEnqResult>();
            APGLDiscrepancyEnqFilter header = Filter.Current;

            if (header == null ||
                header.BranchID == null ||
                header.PeriodFrom == null ||
                header.PeriodTo == null ||
                header.AccountID == null)
            {
                return(list);
            }

            #region GL balances

            AccountByPeriodEnq    graphGL  = PXGraph.CreateInstance <AccountByPeriodEnq>();
            AccountByPeriodFilter filterGL = PXCache <AccountByPeriodFilter> .CreateCopy(graphGL.Filter.Current);

            graphGL.Filter.Cache.SetDefaultExt <AccountByPeriodFilter.ledgerID>(filterGL);
            filterGL.BranchID      = header.BranchID;
            filterGL.SubID         = header.SubCD;
            filterGL.StartPeriodID = header.PeriodFrom;
            filterGL.EndPeriodID   = header.PeriodTo;
            filterGL.AccountID     = header.AccountID;
            filterGL = graphGL.Filter.Update(filterGL);

            Dictionary <DiscrepancyByAccountEnqResultKey, DiscrepancyByAccountEnqResult> dict =
                new Dictionary <DiscrepancyByAccountEnqResultKey, DiscrepancyByAccountEnqResult>();

            foreach (GLTranR gltran in graphGL.GLTranEnq.Select())
            {
                DiscrepancyByAccountEnqResult    result;
                DiscrepancyByAccountEnqResultKey key = new DiscrepancyByAccountEnqResultKey(gltran);

                bool isAPTran = gltran.Module == BatchModule.AP &&
                                !string.IsNullOrEmpty(gltran.TranType) &&
                                !string.IsNullOrEmpty(gltran.RefNbr) &&
                                gltran.ReferenceID != null;

                decimal glTurnover = CalcGLTurnover(gltran);
                decimal nonAPTrans = isAPTran ? 0m : glTurnover;

                if (dict.TryGetValue(key, out result))
                {
                    result.GLTurnover += glTurnover;
                    result.NonXXTrans += nonAPTrans;
                }
                else
                {
                    result            = new DiscrepancyByAccountEnqResult();
                    result.GLTurnover = glTurnover;
                    result.XXTurnover = 0m;
                    result.NonXXTrans = nonAPTrans;
                    graphGL.GLTranEnq.Cache.RestoreCopy(result, gltran);
                    dict.Add(key, result);
                }
            }

            #endregion

            #region AP balances

            APVendorBalanceEnq graphAP = PXGraph.CreateInstance <APVendorBalanceEnq>();
            APVendorBalanceEnq.APHistoryFilter filterAP = PXCache <APVendorBalanceEnq.APHistoryFilter> .CreateCopy(graphAP.Filter.Current);

            filterAP.BranchID            = header.BranchID;
            filterAP.ByFinancialPeriod   = true;
            filterAP.ShowWithBalanceOnly = false;
            filterAP.SplitByCurrency     = false;

            foreach (KeyValuePair <DiscrepancyByAccountEnqResultKey, DiscrepancyByAccountEnqResult> pair in dict)
            {
                DiscrepancyByAccountEnqResultKey key    = pair.Key;
                DiscrepancyByAccountEnqResult    result = pair.Value;

                filterAP.FinPeriodID = pair.Key.FinPeriodID;
                filterAP.AccountID   = pair.Key.AccountID;
                filterAP.SubID       = GetSubCD(pair.Key.SubID);
                filterAP             = graphAP.Filter.Update(filterAP);

                foreach (APVendorBalanceEnq.APHistoryResult res in graphAP.History.Select())
                {
                    result.XXTurnover += (res.Balance ?? 0m) - (res.Deposits ?? 0m);
                }
            }

            #endregion

            list.AddRange(
                dict.Values.Where(result =>
                                  header.ShowOnlyWithDiscrepancy != true ||
                                  result.Discrepancy != 0m));
            return(list);
        }
        protected override List <APGLDiscrepancyByDocumentEnqResult> SelectDetails()
        {
            var list = new List <APGLDiscrepancyByDocumentEnqResult>();
            APGLDiscrepancyByVendorEnqFilter header = Filter.Current;

            if (header == null ||
                header.BranchID == null ||
                header.PeriodFrom == null ||
                header.VendorID == null)
            {
                return(list);
            }

            #region AP balances

            APDocumentEnq graphAP = PXGraph.CreateInstance <APDocumentEnq>();
            APDocumentEnq.APDocumentFilter filterAP = PXCache <APDocumentEnq.APDocumentFilter> .CreateCopy(graphAP.Filter.Current);

            filterAP.BranchID    = header.BranchID;
            filterAP.VendorID    = header.VendorID;
            filterAP.FinPeriodID = header.PeriodFrom;
            filterAP.AccountID   = header.AccountID;
            filterAP.SubCD       = header.SubCD;
            filterAP             = graphAP.Filter.Update(filterAP);

            Dictionary <ARDocKey, APGLDiscrepancyByDocumentEnqResult> dict = new Dictionary <ARDocKey, APGLDiscrepancyByDocumentEnqResult>();
            HashSet <int?> accountIDs    = new HashSet <int?>();
            HashSet <int?> subAccountIDs = new HashSet <int?>();
            graphAP.Documents.Select();

            foreach (KeyValuePair <ARDocKey, APDocumentResult> pair in graphAP.HandledDocuments)
            {
                ARDocKey         key             = pair.Key;
                APDocumentResult handledDocument = pair.Value;
                APGLDiscrepancyByDocumentEnqResult result;

                if (dict.TryGetValue(key, out result))
                {
                    result.XXTurnover += (handledDocument.APTurnover ?? 0m);
                }
                else
                {
                    result            = new APGLDiscrepancyByDocumentEnqResult();
                    result.GLTurnover = 0m;
                    result.XXTurnover = (handledDocument.APTurnover ?? 0m);
                    PXCache <APDocumentResult> .RestoreCopy(result, handledDocument);

                    dict.Add(key, result);
                }

                accountIDs.Add(result.APAccountID);
            }

            #endregion

            #region GL balances

            AccountByPeriodEnq    graphGL  = PXGraph.CreateInstance <AccountByPeriodEnq>();
            AccountByPeriodFilter filterGL = PXCache <AccountByPeriodFilter> .CreateCopy(graphGL.Filter.Current);

            graphGL.Filter.Cache.SetDefaultExt <AccountByPeriodFilter.ledgerID>(filterGL);
            filterGL.BranchID      = header.BranchID;
            filterGL.StartPeriodID = header.PeriodFrom;
            filterGL.EndPeriodID   = header.PeriodFrom;
            filterGL.SubID         = header.SubCD;
            filterGL = graphGL.Filter.Update(filterGL);

            foreach (int?accountID in accountIDs)
            {
                filterGL.AccountID = accountID;
                filterGL           = graphGL.Filter.Update(filterGL);

                foreach (GLTranR gltran in graphGL.GLTranEnq.Select()
                         .RowCast <GLTranR>()
                         .Where(row =>
                                row.Module == BatchModule.AP &&
                                row.ReferenceID == header.VendorID))
                {
                    ARDocKey key = new ARDocKey(gltran.TranType, gltran.RefNbr);
                    APGLDiscrepancyByDocumentEnqResult result;

                    if (dict.TryGetValue(key, out result))
                    {
                        decimal glTurnover = CalcGLTurnover(gltran);
                        result.GLTurnover += glTurnover;
                    }
                }
            }

            #endregion

            list.AddRange(dict.Values.Where(result =>
                                            header.ShowOnlyWithDiscrepancy != true ||
                                            result.Discrepancy != 0m));
            return(list);
        }