private void FieldSelectingOwnerOrWorkgroup <TField>(Events.FieldSelecting <TField> e) where TField : class, IBqlField { if (e.Row == null) { return; } bool isEnabled = true; PXView view = null; foreach (PXSelectorAttribute attribute in e.Cache.GetAttributesOfType <PXSelectorAttribute>(e.Row, typeof(FClassID).Name)) { view = new PXView(Base, true, attribute.PrimarySelect); } if (view == null) { return; } string classID = e.Cache.GetValue <FClassID>(e.Row) as string; CRBaseClass cls = view.SelectSingle(classID) as CRBaseClass; if (cls == null) { return; } isEnabled = cls.DefaultOwner != CRDefaultOwnerAttribute.AssignmentMap || Object.Equals(e.Cache.GetValue <FClassID>(e.Row), e.Cache.GetValueOriginal <FClassID>(e.Row)); e.ReturnState = PXFieldState.CreateInstance(e.ReturnState, null, null, null, null, null, null, null, null, null, null, null, PXErrorLevel.Undefined, isEnabled, null, null, PXUIVisibility.Undefined, null, null, null); }
protected virtual void _(Events.FieldDefaulting <FOwnerID> e) { if (e.Row == null) { return; } PXView view = null; foreach (PXSelectorAttribute attribute in e.Cache.GetAttributesOfType <PXSelectorAttribute>(e.Row, typeof(FClassID).Name)) { view = new PXView(Base, true, attribute.PrimarySelect); } if (view == null) { return; } string classID = e.Cache.GetValue <FClassID>(e.Row) as string; CRBaseClass cls = view.SelectSingle(classID) as CRBaseClass; if (cls == null) { return; } switch (cls.DefaultOwner) { case CRDefaultOwnerAttribute.Creator: // if user is not employee it will just clear the field e.NewValue = SelectFrom <Users> .InnerJoin <Contact> .On <Contact.userID.IsEqual <Users.pKID> > .InnerJoin <BAccountR> .On <BAccountR.defContactID.IsEqual <Contact.contactID> .And <BAccountR.parentBAccountID.IsEqual <Contact.bAccountID> > > .Where < Users.pKID.IsEqual <AccessInfo.userID.FromCurrent> > .View.ReadOnly .Select(Base) .FirstOrDefault() ?.GetItem <Users>() ?.PKID; break; default: e.NewValue = null; break; } }
protected virtual void _(Events.RowPersisting <TMaster> e) { if (e.Row == null || Object.Equals(e.Cache.GetValue <FClassID>(e.Row), e.Cache.GetValueOriginal <FClassID>(e.Row))) { return; } PXView view = null; foreach (PXSelectorAttribute attribute in e.Cache.GetAttributesOfType <PXSelectorAttribute>(e.Row, typeof(FClassID).Name)) { view = new PXView(Base, true, attribute.PrimarySelect); } if (view == null) { return; } string classID = e.Cache.GetValue <FClassID>(e.Row) as string; CRBaseClass cls = view.SelectSingle(classID) as CRBaseClass; if (cls == null) { return; } switch (cls.DefaultOwner) { case CRDefaultOwnerAttribute.AssignmentMap: var processor = PXGraph.CreateInstance <EPAssignmentProcessor <TMaster> >(); var copy = e.Cache.CreateCopy(e.Row) as TMaster; processor.Assign(copy, cls.DefaultAssignmentMapID); e.Cache.SetValueExt <FOwnerID>(e.Row, copy.OwnerID); e.Cache.SetValueExt <FWorkgroupID>(e.Row, copy.WorkgroupID); break; } }