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); }
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; }
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; } } }
/// <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; }
/// <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; }