Beispiel #1
0
        /// <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();
        }
Beispiel #2
0
            /// <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;
                }
            }
Beispiel #3
0
            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;
                }
            }
Beispiel #5
0
        /// <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;
        }