示例#1
0
        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;
        }