protected virtual void INItemClassSubItemSegment_RowPersisting(PXCache sender, PXRowPersistingEventArgs e) { if (e.Operation == PXDBOperation.Insert || e.Operation == PXDBOperation.Update) { INItemClassSubItemSegment seg = (INItemClassSubItemSegment)e.Row; if (seg.IsActive == false && string.IsNullOrEmpty(seg.DefaultValue)) { if (sender.RaiseExceptionHandling <INItemClassSubItemSegment.defaultValue>(e.Row, null, new PXSetPropertyException(ErrorMessages.FieldIsEmpty, typeof(INItemClassSubItemSegment.defaultValue).Name))) { throw new PXRowPersistingException(typeof(INItemClassSubItemSegment.defaultValue).Name, null, ErrorMessages.FieldIsEmpty, typeof(INItemClassSubItemSegment.defaultValue).Name); } } SegmentValue val = (SegmentValue)PXSelect <SegmentValue, Where <SegmentValue.dimensionID, Equal <SubItemAttribute.dimensionName>, And <SegmentValue.segmentID, Equal <Required <SegmentValue.segmentID> >, And <SegmentValue.isConsolidatedValue, Equal <boolTrue> > > > > .Select(this, seg.SegmentID); if (val == null) { val = (SegmentValue)PXSelect <SegmentValue, Where <SegmentValue.dimensionID, Equal <SubItemAttribute.dimensionName>, And <SegmentValue.segmentID, Equal <Required <SegmentValue.segmentID> >, And <SegmentValue.value, Equal <Required <SegmentValue.value> > > > > > .Select(this, seg.SegmentID, seg.DefaultValue); if (val != null) { val.IsConsolidatedValue = true; segmentvalue.Cache.SetStatus(val, PXEntryStatus.Updated); segmentvalue.Cache.IsDirty = true; } } } }
public virtual IEnumerable Segments() { foreach (INItemClassSubItemSegment seg in segments.Cache.Updated) { yield return(seg); } if (itemclass.Current == null || string.IsNullOrEmpty(itemclass.Current.ItemClassID)) { yield break; } foreach (PXResult <Segment, SegmentValue, INItemClassSubItemSegment> res in PXSelectJoin <Segment, LeftJoin <SegmentValue, On <SegmentValue.dimensionID, Equal <Segment.dimensionID>, And <SegmentValue.segmentID, Equal <Segment.segmentID>, And <SegmentValue.isConsolidatedValue, Equal <boolTrue> > > >, LeftJoin <INItemClassSubItemSegment, On <INItemClassSubItemSegment.itemClassID, Equal <Current <INItemClass.itemClassID> >, And <INItemClassSubItemSegment.segmentID, Equal <Segment.segmentID> > > > >, Where <Segment.dimensionID, Equal <SubItemAttribute.dimensionName> > > .Select(this)) { INItemClassSubItemSegment seg = (INItemClassSubItemSegment)res; if (seg.SegmentID == null) { seg.SegmentID = ((Segment)res).SegmentID; seg.ItemClassID = itemclass.Current.ItemClassID; seg.IsActive = true; } seg.DefaultValue = ((SegmentValue)res).Value; PXUIFieldAttribute.SetEnabled <INItemClassSubItemSegment.defaultValue>(segments.Cache, seg, string.IsNullOrEmpty(seg.DefaultValue)); INItemClassSubItemSegment cached; if ((cached = (INItemClassSubItemSegment)segments.Cache.Locate(seg)) == null || segments.Cache.GetStatus(cached) == PXEntryStatus.Notchanged) { yield return(seg); } } segments.Cache.IsDirty = false; }