/// <summary> /// Process selected rows /// </summary> /// <param name="aDoc">Row of selection</param> public virtual void DunningLetterProc(PX.Objects.AR.ARDunningLetterProcess.ARDunningLetterList aDoc) { this.Clear(); ARDunningLetter doc = new ARDunningLetter(); doc.BAccountID = aDoc.BAccountID; doc.BranchID = aDoc.BranchID; doc.DunningLetterDate = aDoc.DocDate; doc.Deadline = aDoc.DocDate.Value.AddDays(aDoc.DueDays.Value); doc.DunningLetterLevel = aDoc.DunningLetterLevel; doc.Consolidated = Cons; doc.Printed = false; doc.Emailed = false; doc.DontPrint = false; doc.DontEmail = false; doc.LastLevel = aDoc.DunningLetterLevel >= D_MaxLevel; doc = docs.Insert(doc); int?R_ID = doc.DunningLetterID; foreach (PXResult <ARInvoice> ii in PXSelect <ARInvoice, Where <ARInvoice.customerID, Equal <Required <ARInvoice.customerID> >, And <ARInvoice.branchID, Equal <Required <ARInvoice.branchID> >, And <ARInvoice.released, Equal <boolTrue>, And <ARInvoice.openDoc, Equal <boolTrue>, And <ARInvoice.voided, Equal <boolFalse>, And <Where <ARInvoice.docType, Equal <ARDocType.invoice>, Or <ARInvoice.docType, Equal <ARDocType.finCharge>, And <ARInvoice.docDate, Less <Required <ARInvoice.docDate> > > > > > > > > > > > .Select(this, aDoc.BAccountID, aDoc.BranchID, aDoc.DocDate)) { ARInvoice dl = ii; ARDunningLetterDetail docDet = new ARDunningLetterDetail(); docDet.DunningLetterID = R_ID; docDet.CuryOrigDocAmt = dl.CuryOrigDocAmt; docDet.CuryDocBal = dl.CuryDocBal; docDet.CuryID = dl.CuryID; docDet.OrigDocAmt = dl.OrigDocAmt; docDet.DocBal = dl.DocBal; docDet.DueDate = dl.DueDate; docDet.DocType = dl.DocType; docDet.RefNbr = dl.RefNbr; docDet.DocDate = dl.DocDate; docDet.Overdue = dl.DueDate < aDoc.DocDate; docDet = docsDet.Insert(docDet); } this.Actions.PressSave(); }
/// <summary> /// Copy field values from selection and aggregate details /// </summary> /// <param name="G">Graph</param> /// <param name="aSrc">Selected DunningLetter</param> /// <param name="cust">Selected Customer</param> public virtual void Copy(PXGraph G, ARDunningLetter aSrc, Customer cust) { this.CustomerId = cust.BAccountID; this.DunningLetterID = aSrc.DunningLetterID; this.DunningLetterDate = aSrc.DunningLetterDate; this.DocBal = 0; this.InvBal = 0; this.Status = cust.Status; foreach (PXResult <ARDunningLetterDetail> it in PXSelect <ARDunningLetterDetail, Where <ARDunningLetterDetail.dunningLetterID, Equal <Required <ARDunningLetterDetail.dunningLetterID> > > > .Select(G, aSrc.DunningLetterID)) { ARDunningLetterDetail d = it; this.DocBal += d.DocBal; } }
public virtual void Copy(PXGraph graph, ARDunningLetter source, Customer customer) { BranchID = source.BranchID; CustomerId = source.BAccountID; DunningLetterID = source.DunningLetterID; DunningLetterDate = source.DunningLetterDate; DunningLetterLevel = source.DunningLetterLevel; LastLevel = source.LastLevel; DontEmail = source.DontEmail; DontPrint = source.DontPrint; Emailed = source.Emailed; Printed = source.Printed; DocBal = 0; foreach (PXResult <ARDunningLetterDetail> it in PXSelect <ARDunningLetterDetail, Where <ARDunningLetterDetail.dunningLetterID, Equal <Required <ARDunningLetterDetail.dunningLetterID> > > > .Select(graph, source.DunningLetterID)) { ARDunningLetterDetail detail = it; DocBal += detail.OverdueBal; } }
/// <summary> /// Copy field values from selection and aggregate details /// </summary> /// <param name="G">Graph</param> /// <param name="aSrc">Selected DunningLetter</param> /// <param name="cust">Selected Customer</param> public virtual void Copy(PXGraph G, ARDunningLetter aSrc, Customer cust) { this.BranchID = aSrc.BranchID; this.CustomerId = aSrc.BAccountID; this.DunningLetterID = aSrc.DunningLetterID; this.DunningLetterDate = aSrc.DunningLetterDate; this.DunningLetterLevel = aSrc.DunningLetterLevel; this.LastLevel = aSrc.LastLevel; this.DontEmail = aSrc.DontEmail; this.DontPrint = aSrc.DontPrint; this.Emailed = aSrc.Emailed; this.Printed = aSrc.Printed; this.DocBal = 0; foreach (PXResult <ARDunningLetterDetail> it in PXSelect <ARDunningLetterDetail, Where <ARDunningLetterDetail.dunningLetterID, Equal <Required <ARDunningLetterDetail.dunningLetterID> > > > .Select(G, aSrc.DunningLetterID)) { ARDunningLetterDetail d = it; this.DocBal += d.OverdueBal; } }
/// <summary> /// Generates a list of documents that meet the filter criteria. /// This list is used for display in the processing screen /// </summary> /// <returns>List of Dunning Letters</returns> protected virtual IEnumerable details() { Details.Cache.Clear(); PrintParameters header = Filter.Current; if (header == null) { yield break; } List <DetailsResult> results = new List <DetailsResult>(); PXSelectBase <ARDunningLetter> cmd = new PXSelectJoinGroupBy <ARDunningLetter, InnerJoin <ARDunningLetterDetail, On <ARDunningLetterDetail.dunningLetterID, Equal <ARDunningLetter.dunningLetterID> > >, Where <ARDunningLetter.dunningLetterDate, Between <Required <ARDunningLetter.dunningLetterDate>, Required <ARDunningLetter.dunningLetterDate> >, And <ARDunningLetter.consolidated, Equal <Required <ARDunningLetter.consolidated> > > >, Aggregate <GroupBy <ARDunningLetter.dunningLetterID, Sum <ARDunningLetterDetail.overdueBal> > >, OrderBy <Asc <ARDunningLetter.bAccountID> > >(this); if (Filter.Current.Action == ActionTypes.Release) { cmd.WhereAnd <Where <ARDunningLetter.released, Equal <False>, And <ARDunningLetter.voided, Equal <False> > > >(); } else { cmd.WhereAnd <Where <ARDunningLetter.released, Equal <True>, And <ARDunningLetter.voided, Equal <False> > > >(); } foreach (PXResult <ARDunningLetter, ARDunningLetterDetail> res in cmd.Select(header.BeginDate, header.EndDate, this.Consolidated)) { ARDunningLetter dunningLetter = res; ARDunningLetterDetail detailSum = res; if (Filter.Current.Action == ActionTypes.Print && header.ShowAll == false && (dunningLetter.DontPrint == true || dunningLetter.Printed == true)) { continue; } if (Filter.Current.Action == ActionTypes.Email && header.ShowAll == false && (dunningLetter.DontEmail == true || dunningLetter.Emailed == true)) { continue; } if (Filter.Current.Action == ActionTypes.MarkDontEmail && header.ShowAll == false && (dunningLetter.DontEmail == true || dunningLetter.Emailed == true)) { continue; } DetailsResult row = new DetailsResult(); row.BranchID = dunningLetter.BranchID; row.CustomerId = dunningLetter.BAccountID; row.DunningLetterID = dunningLetter.DunningLetterID; row.DunningLetterDate = dunningLetter.DunningLetterDate; row.DunningLetterLevel = dunningLetter.DunningLetterLevel; row.LastLevel = dunningLetter.LastLevel; row.DontEmail = dunningLetter.DontEmail; row.DontPrint = dunningLetter.DontPrint; row.Emailed = dunningLetter.Emailed; row.Printed = dunningLetter.Printed; row.DocBal = detailSum.OverdueBal; results.Add(row); } foreach (DetailsResult item in results) { Details.Cache.SetStatus(item, PXEntryStatus.Held); yield return(item); } Details.Cache.IsDirty = false; }