protected virtual void APDiscount_Type_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e) { APDiscount discount = e.Row as APDiscount; if (discount == null) { return; } VendorDiscountSequence sequence = PXSelect < VendorDiscountSequence, Where < VendorDiscountSequence.discountID, Equal <Required <VendorDiscountSequence.discountID> > > > .SelectWindowed(this, 0, 1, discount.DiscountID); if (sequence != null) { discount.Type = (string)e.OldValue; sender.RaiseExceptionHandling <APDiscount.type>(discount, e.OldValue, new PXSetPropertyException(AR.Messages.DiscountTypeCannotChanged)); } else if ( discount.Type == DiscountType.Document && discount.ApplicableTo != DiscountTarget.Vendor) { sender.SetValueExt <APDiscount.applicableTo>(e.Row, DiscountTarget.Vendor); } }
public virtual IEnumerable items() { ItemFilter filter = Filter.Current; if (filter == null) { yield break; } bool found = false; foreach (ARUpdateDiscounts.SelectedItem item in Items.Cache.Inserted) { found = true; yield return(item); } if (found) { yield break; } List <string> added = new List <string>(); foreach (VendorDiscountSequence sequence in PXSelect < VendorDiscountSequence, Where < VendorDiscountSequence.startDate, LessEqual <Current <ItemFilter.pendingDiscountDate> >, And <VendorDiscountSequence.vendorID, Equal <Current <ItemFilter.vendorID> >, And <VendorDiscountSequence.isPromotion, Equal <False>, And <VendorDiscountSequence.isActive, Equal <True> > > > > > .Select(this)) { string key = string.Format("{0}.{1}", sequence.DiscountID, sequence.DiscountSequenceID); added.Add(key); ARUpdateDiscounts.SelectedItem item = new ARUpdateDiscounts.SelectedItem(); item.DiscountID = sequence.DiscountID; item.DiscountSequenceID = sequence.DiscountSequenceID; item.Description = sequence.Description; item.DiscountedFor = sequence.DiscountedFor; item.BreakBy = sequence.BreakBy; item.IsPromotion = sequence.IsPromotion; item.IsActive = sequence.IsActive; item.StartDate = sequence.StartDate; item.EndDate = sequence.UpdateDate; yield return(Items.Insert(item)); } foreach (DiscountDetail detail in PXSelectGroupBy <DiscountDetail, Where <DiscountDetail.startDate, LessEqual <Current <ItemFilter.pendingDiscountDate> > >, Aggregate <GroupBy <DiscountDetail.discountID, GroupBy <DiscountDetail.discountSequenceID> > > > .Select(this)) { string key = string.Format("{0}.{1}", detail.DiscountID, detail.DiscountSequenceID); if (!added.Contains(key)) { VendorDiscountSequence sequence = PXSelect < VendorDiscountSequence, Where < VendorDiscountSequence.discountID, Equal <Required <VendorDiscountSequence.discountID> >, And <VendorDiscountSequence.discountSequenceID, Equal <Required <VendorDiscountSequence.discountSequenceID> >, And <VendorDiscountSequence.isActive, Equal <True> > > > > .Select(this, detail.DiscountID, detail.DiscountSequenceID); if (sequence != null && sequence.IsPromotion == false) { ARUpdateDiscounts.SelectedItem item = new ARUpdateDiscounts.SelectedItem(); item.DiscountID = sequence.DiscountID; item.DiscountSequenceID = sequence.DiscountSequenceID; item.Description = sequence.Description; item.DiscountedFor = sequence.DiscountedFor; item.BreakBy = sequence.BreakBy; item.IsPromotion = sequence.IsPromotion; item.IsActive = sequence.IsActive; item.StartDate = sequence.StartDate; item.EndDate = sequence.UpdateDate; yield return(Items.Insert(item)); } } } Items.Cache.IsDirty = false; }