예제 #1
0
        protected virtual void CreditHoldParameters_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
        {
            CreditHoldParameters header = e.Row as CreditHoldParameters;

            if (header == null)
            {
                return;
            }

            Details.SetProcessDelegate(delegate(CustomerMaint graph, DetailsResult res)
            {
                Customer customer = graph.BAccount.Search <Customer.bAccountID>(res.CustomerId);
                if (customer != null)
                {
                    graph.BAccount.Current = customer;
                    Customer copy          = (Customer)graph.BAccount.Cache.CreateCopy(customer);
                    copy.Status            = header.Action == CreditHoldParameters.ActionApplyCreditHold
                                                ? BAccount.status.CreditHold
                                                : BAccount.status.Active;
                    graph.BAccount.Cache.Update(copy);
                    graph.Actions.PressSave();
                }
            });

            bool allowDatesFiltering = header.Action == CreditHoldParameters.ActionApplyCreditHold;

            PXUIFieldAttribute.SetEnabled <CreditHoldParameters.beginDate>(sender, header, allowDatesFiltering);
            PXUIFieldAttribute.SetEnabled <CreditHoldParameters.endDate>(sender, header, allowDatesFiltering);
        }
예제 #2
0
        protected PXResultset <Customer> GetCustomersToProcess(CreditHoldParameters header)
        {
            switch (header.Action)
            {
            case CreditHoldParameters.ActionApplyCreditHold:

                return(PXSelectJoin <Customer,
                                     InnerJoin <ARDunningLetter, On <Customer.bAccountID, Equal <ARDunningLetter.bAccountID>,
                                                                     And <ARDunningLetter.lastLevel, Equal <True>,
                                                                          And <ARDunningLetter.released, Equal <True>,
                                                                               And <ARDunningLetter.voided, NotEqual <True> > > > > >,
                                     Where <ARDunningLetter.dunningLetterDate,
                                            Between <Required <ARDunningLetter.dunningLetterDate>, Required <ARDunningLetter.dunningLetterDate> > >,
                                     OrderBy <Asc <ARDunningLetter.bAccountID> > > .Select(this, header.BeginDate, header.EndDate));

            case CreditHoldParameters.ActionReleaseCreditHold:

                PXSelectBase <Customer> select = new PXSelectJoin <Customer,
                                                                   LeftJoin <ARDunningLetter, On <Customer.bAccountID, Equal <ARDunningLetter.bAccountID>,
                                                                                                  And <ARDunningLetter.lastLevel, Equal <True>,
                                                                                                       And <ARDunningLetter.released, Equal <True>,
                                                                                                            And <ARDunningLetter.voided, NotEqual <True> > > > > > >(this);
                if (PXAccess.FeatureInstalled <FeaturesSet.parentChildAccount>())
                {
                    select.WhereAnd <Where <Customer.bAccountID, Equal <Customer.sharedCreditCustomerID> > >();
                }
                return(select.Select());

            default:
                return(new PXResultset <Customer>());
            }
        }
        /// <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 Customers with Dunning Letters</returns>
        protected virtual IEnumerable details()
        {
            CreditHoldParameters header = Filter.Current;
            List <DetailsResult> result = new List <DetailsResult>();

            if (header == null)
            {
                yield break;
            }

            foreach (PXResult <Customer, ARDunningLetter> record in GetCustomersToProcess(header))
            {
                ARDunningLetter dunningLetter = record;
                Customer        customer      = record;
                if (header.ShowAll == false && customer.Status != header.IncludedCustomerStatus)
                {
                    continue;
                }

                DetailsResult res = new DetailsResult();
                res.Copy(this, dunningLetter, customer);

                IEnumerable <Override.ExtendedCustomer> customerFamily =
                    CustomerMaint.GetChildAccountsAndSelfStripped <Override.Customer.sharedCreditCustomerID>(this, customer.BAccountID);

                int?[] customerFamilyIDs = customerFamily
                                           .Select(row => row.BusinessAccount.BAccountID)
                                           .Where(id => id != null)
                                           .ToArray();

                var balances = CustomerMaint.GetCustomerBalances(this, customerFamilyIDs);
                if (balances != null)
                {
                    res.InvBal = balances.CurrentBal ?? 0.0m;
                }
                result.Add(res);
            }

            foreach (var item in result)
            {
                Details.Cache.SetStatus(item, PXEntryStatus.Held);
                yield return(item);
            }
            Details.Cache.IsDirty = false;
        }
예제 #4
0
        protected virtual void CreditHoldParameters_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
        {
            CreditHoldParameters o = (CreditHoldParameters)e.Row;

            if (o != null)
            {
                CreditHoldParameters filter = (CreditHoldParameters)this.Filter.Cache.CreateCopy(o);
                switch (o.Action)
                {
                case 0:
                    Details.SetProcessDelegate <DLCustomerUpdate>(Proc0);
                    break;

                case 1:
                    Details.SetProcessDelegate <DLCustomerUpdate>(Proc1);
                    break;
                }
            }
        }
예제 #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 Customers with Dunning Letters</returns>
        protected virtual IEnumerable details()
        {
            CreditHoldParameters header = Filter.Current;
            List <DetailsResult> result = new List <DetailsResult>();

            if (header == null)
            {
                yield break;
            }

            foreach (PXResult <Customer, ARDunningLetter> record in GetCustomersToProcess(header))
            {
                ARDunningLetter dunningLetter = record;
                Customer        customer      = record;
                if (header.ShowAll == false && customer.Status != header.IncludedCustomerStatus)
                {
                    continue;
                }

                DetailsResult res = new DetailsResult();
                res.Copy(this, dunningLetter, customer);

                ARBalances balances = CustomerMaint.GetCustomerBalances <Override.Customer.sharedCreditCustomerID>(this, customer.BAccountID);
                if (balances != null)
                {
                    res.InvBal = balances.CurrentBal ?? 0.0m;
                }
                result.Add(res);
            }

            foreach (var item in result)
            {
                Details.Cache.SetStatus(item, PXEntryStatus.Held);
                yield return(item);
            }
            Details.Cache.IsDirty = false;
        }
예제 #6
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 Customers with Dunning Letters</returns>
        protected virtual IEnumerable details()
        {
            CreditHoldParameters header = Filter.Current;
            List <DetailsResult> result = new List <DetailsResult>();

            if (header == null)
            {
                yield break;
            }

            bool AllShow = header.ShowAll ?? false;

            if (this.Filter.Current.Action == 0)
            {
                foreach (PXResult <Customer, ARDunningLetter> it in PXSelectJoin <Customer,
                                                                                  InnerJoin <ARDunningLetter, On <Customer.bAccountID, Equal <ARDunningLetter.bAccountID>,
                                                                                                                  And <ARDunningLetter.lastLevel, Equal <boolTrue> > > >,
                                                                                  Where <ARDunningLetter.dunningLetterDate,
                                                                                         Between <Required <ARDunningLetter.dunningLetterDate>, Required <ARDunningLetter.dunningLetterDate> > >,
                                                                                  OrderBy <Asc <ARDunningLetter.bAccountID> > >
                         .Select(this, header.BeginDate, header.EndDate))
                {
                    ARDunningLetter dl   = it;
                    Customer        cust = it;
                    if (!AllShow && cust.Status != BAccount.status.Active)
                    {
                        continue;
                    }

                    DetailsResult res = new DetailsResult();
                    res.Copy(this, dl, cust);

                    //==============================================================================
                    foreach (PXResult <ARInvoice> ix in
                             PXSelect <ARInvoice,
                                       Where <ARInvoice.customerID, Equal <Required <ARInvoice.customerID> >,
                                              And <ARInvoice.released, Equal <boolTrue>,
                                                   And <ARInvoice.openDoc, Equal <boolTrue>,
                                                        And <ARInvoice.voided, Equal <boolFalse>,
                                                             And <ARInvoice.docType, Equal <AP.APDocType.invoice>,
                                                                  And <ARInvoice.docDate, Between <Required <ARInvoice.docDate>, Required <ARInvoice.docDate> > > > > > > >
                                       > .Select(this, cust.BAccountID, header.BeginDate, header.EndDate))
                    {
                        ARInvoice inv = ix;

                        if (inv.BranchID != dl.BranchID)
                        {
                            continue;                              // alien branch
                        }
                        res.InvBal += inv.DocBal;
                    }
                    result.Add(res);
                }
            }
            else if (this.Filter.Current.Action == 1)
            {
                foreach (PXResult <Customer, ARDunningLetter> it in PXSelectJoin <Customer,
                                                                                  LeftJoin <ARDunningLetter, On <Customer.bAccountID, Equal <ARDunningLetter.bAccountID>,
                                                                                                                 And <ARDunningLetter.lastLevel, Equal <boolTrue> > > > >
                         .Select(this))
                {
                    ARDunningLetter dl   = it;
                    Customer        cust = it;
                    if (!AllShow && cust.Status != BAccount.status.CreditHold)
                    {
                        continue;
                    }

                    DetailsResult res = new DetailsResult();
                    res.Copy(this, dl, cust);

                    //==============================================================================
                    foreach (PXResult <ARInvoice> ix in
                             PXSelect <ARInvoice,
                                       Where <ARInvoice.customerID, Equal <Required <ARInvoice.customerID> >,
                                              And <ARInvoice.released, Equal <boolTrue>,
                                                   And <ARInvoice.openDoc, Equal <boolTrue>,
                                                        And <ARInvoice.voided, Equal <boolFalse>,
                                                             And <ARInvoice.docType, Equal <AP.APDocType.invoice>,
                                                                  And <ARInvoice.docDate, Less <Required <ARInvoice.docDate> > > > > > > >
                                       > .Select(this, cust.BAccountID, header.EndDate))
                    {
                        ARInvoice inv = ix;

                        //if (inv.BranchID != dl.BranchID) continue; // alien branch

                        res.InvBal += inv.DocBal;
                    }
                    result.Add(res);
                }
            }
            else
            {
                yield break;
            }
            foreach (var item in result)
            {
                Details.Cache.SetStatus(item, PXEntryStatus.Held);
                yield return(item);
            }
            Details.Cache.IsDirty = false;
        }