public APDocumentsByVendor() { enq = PXGraph.CreateInstance <APDocumentEnq>(); }
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); }