public override void update() { #region NodeTypes CswNbtMetaDataObjectClass RequestOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.RequestClass ); string RequestNodeTypeName = "Request"; CswNbtMetaDataNodeType RequestNt = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( RequestNodeTypeName ); if( null != RequestNt && RequestNt.ObjectClassId != RequestOc.ObjectClassId ) { RequestNodeTypeName = "CISPro Request"; RequestNt = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( RequestNodeTypeName ); } if( null != RequestNt && RequestNt.ObjectClassId != RequestOc.ObjectClassId ) { throw new CswDniException( ErrorType.Error, "Could not create a unique Request NodeType", "Request nodetypes named 'Request' and 'CISPro Request' already exist." ); } if( null == RequestNt ) { RequestNt = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( new CswNbtWcfMetaDataModel.NodeType( RequestOc ) { Category = "Requests", NodeTypeName = RequestNodeTypeName } ); } CswNbtMetaDataNodeTypeProp NameNtp = RequestNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequest.PropertyName.Name.ToString() ); CswNbtMetaDataNodeTypeProp UserNtp = RequestNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequest.PropertyName.Requestor.ToString() ); CswNbtMetaDataNodeTypeProp DateNtp = RequestNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequest.PropertyName.SubmittedDate.ToString() ); RequestNt.NameTemplateValue = ""; RequestNt.addNameTemplateText( NameNtp.PropName ); RequestNt.addNameTemplateText( UserNtp.PropName ); RequestNt.addNameTemplateText( DateNtp.PropName ); CswNbtMetaDataObjectClass RequestItemOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.RequestItemClass ); string RequestItemNodeTypeName = "Request Item"; CswNbtMetaDataNodeType RequestItemNt = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( RequestItemNodeTypeName ); if( null != RequestItemNt && RequestItemNt.ObjectClassId != RequestItemOc.ObjectClassId ) { RequestItemNodeTypeName = "CISPro Request Item"; RequestNt = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( RequestItemNodeTypeName ); } if( null != RequestItemNt && RequestItemNt.ObjectClassId != RequestItemOc.ObjectClassId ) { throw new CswDniException( ErrorType.Error, "Could not create a unique Request Item NodeType", "Request nodetypes named 'Request Item' and 'CISPro Request Item' already exist." ); } if( null == RequestItemNt ) { RequestItemNt = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType(new CswNbtWcfMetaDataModel.NodeType(RequestItemOc) { Category = "Requests", NodeTypeName = RequestItemNodeTypeName }); } CswNbtMetaDataNodeTypeProp RequestItemRequestNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Request ); RequestItemRequestNtp.SetFK( NbtViewRelatedIdType.NodeTypeId.ToString(), RequestNt.NodeTypeId ); CswNbtMetaDataNodeTypeProp TypeNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Type ); CswNbtMetaDataNodeTypeProp StatusNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Status ); CswNbtMetaDataNodeTypeProp ExternalOrderNoNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.ExternalOrderNumber ); CswNbtMetaDataNodeTypeProp QuantityNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Quantity ); CswNbtMetaDataNodeTypeProp CountNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Count ); CswNbtMetaDataNodeTypeProp SizeNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Size ); CswNbtMetaDataNodeTypeProp MaterialNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Material ); CswNbtMetaDataNodeTypeProp ContainerNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Container ); CswNbtMetaDataNodeTypeProp LocationNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Location ); CswNbtMetaDataNodeTypeProp NumberNtp = RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Number ); Int32 SequenceId = _CswNbtSchemaModTrnsctn.makeSequence( new CswSequenceName( "Request Items" ), "R", "", 6, 1 ); NumberNtp.setSequence( SequenceId ); RequestItemNt.addNameTemplateText( RequestItemRequestNtp.PropName ); RequestItemNt.addNameTemplateText( NumberNtp.PropName ); RequestItemNt.addNameTemplateText( TypeNtp.PropName ); #endregion NodeTypes #region Tabs CswNbtMetaDataNodeTypeTab RequestItemsNtt = RequestNt.getNodeTypeTab( "Request Items" ); if( null == RequestItemsNtt ) { RequestItemsNtt = _CswNbtSchemaModTrnsctn.MetaData.makeNewTab( RequestNt, "Request Items", RequestNt.getNodeTypeTabIds().Count ); } CswNbtMetaDataFieldType GridFt = _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.Grid ); CswNbtMetaDataNodeTypeProp RequestItemsGridNtp = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( RequestNt, GridFt, "Request Items" ) { TabId = RequestItemsNtt.TabId } ); CswNbtView GridView = _CswNbtSchemaModTrnsctn.ViewSelect.restoreView( RequestItemsGridNtp.ViewId ); GridView.ViewName = "Requested Items"; GridView.Visibility = NbtViewVisibility.Property; GridView.ViewMode = NbtViewRenderingMode.Grid; GridView.Category = "Requests"; GridView.Root.ChildRelationships.Clear(); CswNbtViewRelationship RequestRel = GridView.AddViewRelationship( RequestNt, false ); CswNbtViewRelationship RequestItemRel = GridView.AddViewRelationship( RequestRel, NbtViewPropOwnerType.Second, RequestItemRequestNtp, false ); GridView.AddViewProperty( RequestItemRel, NumberNtp ); GridView.AddViewProperty( RequestItemRel, TypeNtp ); GridView.AddViewProperty( RequestItemRel, ExternalOrderNoNtp ); GridView.AddViewProperty( RequestItemRel, StatusNtp ); GridView.AddViewProperty( RequestItemRel, QuantityNtp ); GridView.AddViewProperty( RequestItemRel, CountNtp ); GridView.AddViewProperty( RequestItemRel, SizeNtp ); GridView.AddViewProperty( RequestItemRel, MaterialNtp ); GridView.AddViewProperty( RequestItemRel, ContainerNtp ); GridView.AddViewProperty( RequestItemRel, LocationNtp ); GridView.save(); #endregion Tabs #region Views string MyRequestViewName = "My Request History"; bool UniqueView = _CswNbtSchemaModTrnsctn.restoreViews( MyRequestViewName ).Count == 0; if( false == UniqueView ) { MyRequestViewName = "My CISPro Request History"; UniqueView = _CswNbtSchemaModTrnsctn.restoreViews( MyRequestViewName ).Count == 0; } if( UniqueView ) { CswNbtView MyRequestsView = _CswNbtSchemaModTrnsctn.makeView(); MyRequestsView.makeNew( MyRequestViewName, NbtViewVisibility.Global ); MyRequestsView.Category = "Requests"; MyRequestsView.ViewMode = NbtViewRenderingMode.Tree; CswNbtViewRelationship RequestVr = MyRequestsView.AddViewRelationship( RequestNt, true ); MyRequestsView.AddViewPropertyAndFilter( RequestVr, RequestNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequest.PropertyName.SubmittedDate.ToString() ), FilterMode: CswNbtPropFilterSql.PropertyFilterMode.NotNull ); MyRequestsView.save(); } #endregion Views }//Update()
public override void update() { CswNbtMetaDataObjectClass feedbackOC = _CswNbtSchemaModTrnsctn.createObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.FeedbackClass, "docs.gif", false, false ); CswNbtMetaDataObjectClassProp caseNumberOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp() { PropName = CswNbtObjClassFeedback.CaseNumberPropertyName, FieldType = CswNbtMetaDataFieldType.NbtFieldType.Sequence } ); Int32 userOCID = _CswNbtSchemaModTrnsctn.MetaData.getObjectClassId( CswNbtMetaDataObjectClass.NbtObjectClass.UserClass ); CswNbtMetaDataObjectClassProp authorOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp() { PropName = CswNbtObjClassFeedback.AuthorPropertyName, FieldType = CswNbtMetaDataFieldType.NbtFieldType.Relationship, IsFk = true, FkType = NbtViewRelatedIdType.ObjectClassId.ToString(), FkValue = userOCID, ServerManaged = true, SetValOnAdd = true } ); CswNbtMetaDataObjectClassProp dateSubmittedOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp() { PropName = CswNbtObjClassFeedback.DateSubmittedPropertyName, FieldType = CswNbtMetaDataFieldType.NbtFieldType.DateTime, Extended = CswNbtNodePropDateTime.DateDisplayMode.DateTime.ToString(), ServerManaged = true, SetValOnAdd = true } ); CswNbtMetaDataObjectClassProp categoryOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp() { PropName = CswNbtObjClassFeedback.CategoryPropertyName, FieldType = CswNbtMetaDataFieldType.NbtFieldType.List, ListOptions = "Bug Report,Feature Request,Question,Praise", SetValOnAdd = true } ); CswNbtMetaDataObjectClassProp subjectOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp() { PropName = CswNbtObjClassFeedback.SubjectPropertyName, FieldType = CswNbtMetaDataFieldType.NbtFieldType.Text, SetValOnAdd = true } ); _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp() { PropName = CswNbtObjClassFeedback.SummaryPropertyName, FieldType = CswNbtMetaDataFieldType.NbtFieldType.Memo, SetValOnAdd = true } ); CswNbtMetaDataObjectClassProp statusOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp() { PropName = CswNbtObjClassFeedback.StatusPropertyName, FieldType = CswNbtMetaDataFieldType.NbtFieldType.List, ListOptions = "Pending review,Resolved,Awaiting author response" } ); statusOCP.DefaultValue.Field1 = "Pending review"; //indicates the ball is in supports/admins court statusOCP.DefaultValue.Gestalt = "Pending review"; _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp() { PropName = CswNbtObjClassFeedback.LoadUserContextPropertyName, FieldType = CswNbtMetaDataFieldType.NbtFieldType.Button } ); CswNbtMetaDataObjectClassProp commentsOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp() { PropName = CswNbtObjClassFeedback.DiscussionPropertyName, FieldType = CswNbtMetaDataFieldType.NbtFieldType.Comments } ); _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp() { PropName = CswNbtObjClassFeedback.SelectedNodeIDPropertyName, FieldType = CswNbtMetaDataFieldType.NbtFieldType.Text, ServerManaged = true } ); _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp() { PropName = CswNbtObjClassFeedback.ViewPropertyName, //FieldType = CswNbtMetaDataFieldType.NbtFieldType.ViewPickList, FieldType = CswNbtMetaDataFieldType.NbtFieldType.ViewReference, ServerManaged = true } ); _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp() { PropName = CswNbtObjClassFeedback.ActionPropertyName, FieldType = CswNbtMetaDataFieldType.NbtFieldType.Text, ServerManaged = true } ); _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp() { PropName = CswNbtObjClassFeedback.CurrentViewModePropertyName, FieldType = CswNbtMetaDataFieldType.NbtFieldType.Text, ServerManaged = true } ); //create a default node-type of feedbackobj called feedback CswNbtMetaDataNodeType feedbackNT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( feedbackOC.ObjectClassId, "Feedback", "System" ); feedbackNT.setNameTemplateText( CswNbtMetaData.MakeTemplateEntry( CswNbtObjClassFeedback.CaseNumberPropertyName ) ); CswNbtMetaDataObjectClass roleObj = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.RoleClass ); //set default permissions Collection<CswNbtNode> roles = roleObj.getNodes( false, true ); foreach( CswNbtObjClassRole role in roles ) { _CswNbtSchemaModTrnsctn.Permit.set( Security.CswNbtPermit.NodeTypePermission.Create, feedbackNT, role, true ); _CswNbtSchemaModTrnsctn.Permit.set( Security.CswNbtPermit.NodeTypePermission.View, feedbackNT, role, true ); _CswNbtSchemaModTrnsctn.Permit.set( Security.CswNbtPermit.NodeTypePermission.Edit, feedbackNT, role, true ); } Int32 sequenceId = _CswNbtSchemaModTrnsctn.makeSequence( new CswSequenceName( "Feedback CaseNo" ), "F", "", 6, 1 ); CswNbtMetaDataNodeTypeProp caseNumberNTP = feedbackNT.getNodeTypePropByObjectClassProp( CswNbtObjClassFeedback.CaseNumberPropertyName ); caseNumberNTP.setSequence( sequenceId ); caseNumberNTP.ReadOnly = true; //default to read-only, but allow it to be changed CswNbtMetaDataNodeTypeProp authorNTP = feedbackNT.getNodeTypePropByObjectClassProp( CswNbtObjClassFeedback.AuthorPropertyName ); authorNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add ); CswNbtMetaDataNodeTypeProp dateNTP = feedbackNT.getNodeTypePropByObjectClassProp( CswNbtObjClassFeedback.DateSubmittedPropertyName ); dateNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add ); CswNbtMetaDataNodeTypeProp viewNTP = feedbackNT.getNodeTypePropByObjectClassProp( CswNbtObjClassFeedback.ViewPropertyName ); viewNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit ); CswNbtMetaDataNodeTypeProp actionNTP = feedbackNT.getNodeTypePropByObjectClassProp( CswNbtObjClassFeedback.ActionPropertyName ); actionNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit ); CswNbtMetaDataNodeTypeProp selectedNodeIdNTP = feedbackNT.getNodeTypePropByObjectClassProp( CswNbtObjClassFeedback.SelectedNodeIDPropertyName ); selectedNodeIdNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit ); CswNbtMetaDataNodeTypeProp currentViewModeNTP = feedbackNT.getNodeTypePropByObjectClassProp( CswNbtObjClassFeedback.CurrentViewModePropertyName ); currentViewModeNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit ); currentViewModeNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add ); //create the role view for admins CswNbtNode adminRoleNode = _CswNbtSchemaModTrnsctn.Nodes.makeRoleNodeFromRoleName( "Administrator" ); if( null != adminRoleNode ) { CswNbtView feedbackView = _CswNbtSchemaModTrnsctn.makeView(); feedbackView.makeNew( "Feedback", NbtViewVisibility.Role, adminRoleNode.NodeId ); feedbackView.Category = "System"; //add root CswNbtViewRelationship ParentRelationship = feedbackView.AddViewRelationship( feedbackOC, true ); //add properties CswNbtViewProperty caseNumberVP = feedbackView.AddViewProperty( ParentRelationship, caseNumberOCP ); CswNbtViewProperty dateSubmittedVp = feedbackView.AddViewProperty( ParentRelationship, dateSubmittedOCP ); CswNbtViewProperty categoryVP = feedbackView.AddViewProperty( ParentRelationship, categoryOCP ); CswNbtViewProperty authorVP = feedbackView.AddViewProperty( ParentRelationship, authorOCP ); CswNbtViewProperty subjectVP = feedbackView.AddViewProperty( ParentRelationship, subjectOCP ); CswNbtViewProperty statusVP = feedbackView.AddViewProperty( ParentRelationship, statusOCP ); CswNbtViewProperty commentsVP = feedbackView.AddViewProperty( ParentRelationship, commentsOCP ); caseNumberVP.Order = 1; dateSubmittedVp.Order = 2; categoryVP.Order = 3; authorVP.Order = 4; subjectVP.Order = 5; statusVP.Order = 6; commentsVP.Order = 7; caseNumberVP.Width = 15; dateSubmittedVp.Width = 20; categoryVP.Width = 20; authorVP.Width = 20; subjectVP.Width = 25; statusVP.Width = 20; commentsVP.Width = 100; feedbackView.SetViewMode( NbtViewRenderingMode.Grid ); CswNbtViewPropertyFilter feedbackViewFilter = feedbackView.AddViewPropertyFilter( statusVP, FilterMode: CswNbtPropFilterSql.PropertyFilterMode.Equals, Value: "Pending review", ShowAtRuntime: true ); feedbackView.save(); } // create the global view for all users to view their own feedback CswNbtView myFeedbackView = _CswNbtSchemaModTrnsctn.makeView(); myFeedbackView.makeNew( "My Feedback", NbtViewVisibility.Global ); myFeedbackView.Category = "System"; //add root CswNbtViewRelationship myParentRelationship = myFeedbackView.AddViewRelationship( feedbackOC, true ); //add properties CswNbtViewProperty myCaseNumberVP = myFeedbackView.AddViewProperty( myParentRelationship, caseNumberOCP ); CswNbtViewProperty myDateSubmittedVp = myFeedbackView.AddViewProperty( myParentRelationship, dateSubmittedOCP ); CswNbtViewProperty myCategoryVP = myFeedbackView.AddViewProperty( myParentRelationship, categoryOCP ); CswNbtViewProperty myAuthorVP = myFeedbackView.AddViewProperty( myParentRelationship, authorOCP ); CswNbtViewProperty mySubjectVP = myFeedbackView.AddViewProperty( myParentRelationship, subjectOCP ); CswNbtViewProperty myStatusVP = myFeedbackView.AddViewProperty( myParentRelationship, statusOCP ); CswNbtViewProperty myCommentsVP = myFeedbackView.AddViewProperty( myParentRelationship, commentsOCP ); myCaseNumberVP.Order = 1; myDateSubmittedVp.Order = 2; myCategoryVP.Order = 3; myAuthorVP.Order = 4; mySubjectVP.Order = 5; myStatusVP.Order = 6; myCommentsVP.Order = 7; myCaseNumberVP.Width = 15; myDateSubmittedVp.Width = 20; myCategoryVP.Width = 20; myAuthorVP.Width = 20; mySubjectVP.Width = 25; myStatusVP.Width = 20; myCommentsVP.Width = 100; myFeedbackView.SetViewMode( NbtViewRenderingMode.Grid ); //observe "me", this is voodoo (or magic...w/e) and sets it to the current user (from steve) CswNbtViewPropertyFilter myFeedbackViewFilter = myFeedbackView.AddViewPropertyFilter( myAuthorVP, FilterMode: CswNbtPropFilterSql.PropertyFilterMode.Equals, Value: "me", ShowAtRuntime: false ); myFeedbackView.save(); }//Update()
public override void update() { #region Update UnitOfMeasure ObjClassProps - delete UnitType, add BaseUnit and Fractional CswNbtMetaDataObjectClass UnitOfMeasureOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.UnitOfMeasureClass ); CswNbtMetaDataObjectClassProp UnitTypeOCP = UnitOfMeasureOC.getObjectClassProp( "Unit Type" ); _CswNbtSchemaModTrnsctn.MetaData.DeleteObjectClassProp( UnitTypeOCP, true ); _CswNbtSchemaModTrnsctn.createObjectClassProp( CswNbtMetaDataObjectClass.NbtObjectClass.UnitOfMeasureClass, CswNbtObjClassUnitOfMeasure.BaseUnitPropertyName, CswNbtMetaDataFieldType.NbtFieldType.Text, ServerManaged: true ); _CswNbtSchemaModTrnsctn.createObjectClassProp( CswNbtMetaDataObjectClass.NbtObjectClass.UnitOfMeasureClass, CswNbtObjClassUnitOfMeasure.FractionalPropertyName, CswNbtMetaDataFieldType.NbtFieldType.Logical ); _CswNbtSchemaModTrnsctn.createObjectClassProp( CswNbtMetaDataObjectClass.NbtObjectClass.UnitOfMeasureClass, CswNbtObjClassUnitOfMeasure.UnitTypePropertyName, CswNbtMetaDataFieldType.NbtFieldType.List, ServerManaged: true, ListOptions: String.Join( ",", CswNbtObjClassUnitOfMeasure.UnitTypes._All ) ); #endregion #region Delete Unit Of Measure ViewSelect View _CswNbtSchemaModTrnsctn.deleteView( "Units of Measure (IMCS)", true ); #endregion #region Delete UnitOfMeasure NodeType (and Nodes) CswNbtMetaDataNodeType UnitOfMeasureNodeType = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Unit of Measure" ); if( null != UnitOfMeasureNodeType ) { _CswNbtSchemaModTrnsctn.MetaData.DeleteNodeType( UnitOfMeasureNodeType ); } #endregion #region Delete UnitType ObjectClass, NodeTypes and Nodes CswNbtMetaDataObjectClass UnitTypeOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( "UnitTypeClass" ); if( null != UnitTypeOC ) { _CswNbtSchemaModTrnsctn.MetaData.DeleteObjectClass( UnitTypeOC ); } #endregion #region Add the new NodeTypes and Nodes CswNbtMetaDataNodeType WeightUnitNodeType = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( "UnitOfMeasureClass", "Weight Unit", "Units" ); WeightUnitNodeType.setNameTemplateText( CswNbtMetaData.MakeTemplateEntry( CswNbtObjClassUnitOfMeasure.NamePropertyName ) ); CswNbtMetaDataNodeTypeProp WeightBaseUnitProp = WeightUnitNodeType.getNodeTypeProp( CswNbtObjClassUnitOfMeasure.BaseUnitPropertyName ); WeightBaseUnitProp.DefaultValue.AsText.Text = "kg"; CswNbtMetaDataNodeTypeProp WeightUnitTypeProp = WeightUnitNodeType.getNodeTypeProp( CswNbtObjClassUnitOfMeasure.UnitTypePropertyName ); WeightUnitTypeProp.DefaultValue.AsList.Value = CswNbtObjClassUnitOfMeasure.UnitTypes.Weight.ToString(); createUnitOfMeasureNode( WeightUnitNodeType.NodeTypeId, "kg", 1.0, 0, Tristate.True ); createUnitOfMeasureNode( WeightUnitNodeType.NodeTypeId, "g", 1.0, 3, Tristate.True ); createUnitOfMeasureNode( WeightUnitNodeType.NodeTypeId, "mg", 1.0, 6, Tristate.True ); createUnitOfMeasureNode( WeightUnitNodeType.NodeTypeId, "lb", 2.20462262, 0, Tristate.True ); createUnitOfMeasureNode( WeightUnitNodeType.NodeTypeId, "ounces", 3.52739619, 1, Tristate.True ); CswNbtMetaDataNodeType VolumeUnitNodeType = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( "UnitOfMeasureClass", "Volume Unit", "Units" ); VolumeUnitNodeType.setNameTemplateText( CswNbtMetaData.MakeTemplateEntry( CswNbtObjClassUnitOfMeasure.NamePropertyName ) ); CswNbtMetaDataNodeTypeProp VolumeBaseUnitProp = VolumeUnitNodeType.getNodeTypeProp( CswNbtObjClassUnitOfMeasure.BaseUnitPropertyName ); VolumeBaseUnitProp.DefaultValue.AsText.Text = "Liters"; CswNbtMetaDataNodeTypeProp VolumeUnitTypeProp = VolumeUnitNodeType.getNodeTypeProp( CswNbtObjClassUnitOfMeasure.UnitTypePropertyName ); VolumeUnitTypeProp.DefaultValue.AsList.Value = CswNbtObjClassUnitOfMeasure.UnitTypes.Volume.ToString(); createUnitOfMeasureNode( VolumeUnitNodeType.NodeTypeId, "Liters", 1.0, 0, Tristate.True ); createUnitOfMeasureNode( VolumeUnitNodeType.NodeTypeId, "mL", 1.0, 3, Tristate.True ); createUnitOfMeasureNode( VolumeUnitNodeType.NodeTypeId, "µL", 1.0, 6, Tristate.True ); createUnitOfMeasureNode( VolumeUnitNodeType.NodeTypeId, "gal", 2.64172052, -1, Tristate.True ); createUnitOfMeasureNode( VolumeUnitNodeType.NodeTypeId, "fluid ounces", 3.38140227, 1, Tristate.True ); CswNbtMetaDataNodeType EachUnitNodeType = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( "UnitOfMeasureClass", "Each Unit", "Units" ); EachUnitNodeType.setNameTemplateText( CswNbtMetaData.MakeTemplateEntry( CswNbtObjClassUnitOfMeasure.NamePropertyName ) ); CswNbtMetaDataNodeTypeProp EachBaseUnitProp = EachUnitNodeType.getNodeTypeProp( CswNbtObjClassUnitOfMeasure.BaseUnitPropertyName ); EachBaseUnitProp.DefaultValue.AsText.Text = "Each"; CswNbtMetaDataNodeTypeProp EachUnitTypeProp = EachUnitNodeType.getNodeTypeProp( CswNbtObjClassUnitOfMeasure.UnitTypePropertyName ); EachUnitTypeProp.DefaultValue.AsList.Value = CswNbtObjClassUnitOfMeasure.UnitTypes.Each.ToString(); createUnitOfMeasureNode( EachUnitNodeType.NodeTypeId, "Each", 1.0, 0, Tristate.False ); createUnitOfMeasureNode( EachUnitNodeType.NodeTypeId, "Boxes", Int32.MinValue, Int32.MinValue, Tristate.False ); createUnitOfMeasureNode( EachUnitNodeType.NodeTypeId, "Cases", Int32.MinValue, Int32.MinValue, Tristate.False ); createUnitOfMeasureNode( EachUnitNodeType.NodeTypeId, "Cylinders", Int32.MinValue, Int32.MinValue, Tristate.False ); CswNbtMetaDataNodeType TimeUnitNodeType = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( "UnitOfMeasureClass", "Time Unit", "Units" ); TimeUnitNodeType.setNameTemplateText( CswNbtMetaData.MakeTemplateEntry( CswNbtObjClassUnitOfMeasure.NamePropertyName ) ); CswNbtMetaDataNodeTypeProp TimeBaseUnitProp = TimeUnitNodeType.getNodeTypeProp( CswNbtObjClassUnitOfMeasure.BaseUnitPropertyName ); TimeBaseUnitProp.DefaultValue.AsText.Text = "Days"; CswNbtMetaDataNodeTypeProp TimeUnitTypeProp = TimeUnitNodeType.getNodeTypeProp( CswNbtObjClassUnitOfMeasure.UnitTypePropertyName ); TimeUnitTypeProp.DefaultValue.AsList.Value = CswNbtObjClassUnitOfMeasure.UnitTypes.Time.ToString(); createUnitOfMeasureNode( TimeUnitNodeType.NodeTypeId, "Days", 1.0, 0, Tristate.True ); createUnitOfMeasureNode( TimeUnitNodeType.NodeTypeId, "Weeks", 1.42857143, -1, Tristate.True ); createUnitOfMeasureNode( TimeUnitNodeType.NodeTypeId, "Years", 2.73790926, -3, Tristate.True ); createUnitOfMeasureNode( TimeUnitNodeType.NodeTypeId, "Hours", 2.4, 1, Tristate.True ); createUnitOfMeasureNode( TimeUnitNodeType.NodeTypeId, "Minutes", 1.44, 3, Tristate.True ); createUnitOfMeasureNode( TimeUnitNodeType.NodeTypeId, "Seconds", 8.64, 4, Tristate.True ); #endregion #region Create new UnitOfMeasure ViewSelect View CswNbtView UnitsView = _CswNbtSchemaModTrnsctn.makeView(); UnitsView.makeNew( "Units of Measurement", NbtViewVisibility.Global ); UnitsView.Category = "System"; UnitsView.ViewMode = NbtViewRenderingMode.Tree; CswNbtViewRelationship UnitRelationship = UnitsView.AddViewRelationship( UnitOfMeasureOC, true ); UnitsView.save(); #endregion }//Update()
public override void update() { // Make the Batch Operation Object Class and default NodeType CswNbtMetaDataObjectClass BatchOpOC = _CswNbtSchemaModTrnsctn.createObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.BatchOpClass, "clock.gif", false, false ); CswNbtMetaDataObjectClass UserOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.UserClass ); CswCommaDelimitedString StatusOptions = new CswCommaDelimitedString() { NbtBatchOpStatus.Pending.ToString(), NbtBatchOpStatus.Processing.ToString(), NbtBatchOpStatus.Completed.ToString(), NbtBatchOpStatus.Error.ToString() }; CswNbtMetaDataObjectClassProp BatchDataOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( CswNbtMetaDataObjectClass.NbtObjectClass.BatchOpClass, CswNbtObjClassBatchOp.BatchDataPropertyName, CswNbtMetaDataFieldType.NbtFieldType.Memo, ServerManaged: true ); CswNbtMetaDataObjectClassProp EndDateOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( CswNbtMetaDataObjectClass.NbtObjectClass.BatchOpClass, CswNbtObjClassBatchOp.EndDatePropertyName, CswNbtMetaDataFieldType.NbtFieldType.DateTime, ServerManaged: true ); CswNbtMetaDataObjectClassProp LogOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( CswNbtMetaDataObjectClass.NbtObjectClass.BatchOpClass, CswNbtObjClassBatchOp.LogPropertyName, CswNbtMetaDataFieldType.NbtFieldType.Comments, ServerManaged: true ); CswNbtMetaDataObjectClassProp OpNameOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( CswNbtMetaDataObjectClass.NbtObjectClass.BatchOpClass, CswNbtObjClassBatchOp.OpNamePropertyName, CswNbtMetaDataFieldType.NbtFieldType.List, ServerManaged: true ); CswNbtMetaDataObjectClassProp PercentDoneOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( CswNbtMetaDataObjectClass.NbtObjectClass.BatchOpClass, CswNbtObjClassBatchOp.PercentDonePropertyName, CswNbtMetaDataFieldType.NbtFieldType.Number, ServerManaged: true ); CswNbtMetaDataObjectClassProp PriorityOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( CswNbtMetaDataObjectClass.NbtObjectClass.BatchOpClass, CswNbtObjClassBatchOp.PriorityPropertyName, CswNbtMetaDataFieldType.NbtFieldType.Number ); CswNbtMetaDataObjectClassProp CreatedDateOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( CswNbtMetaDataObjectClass.NbtObjectClass.BatchOpClass, CswNbtObjClassBatchOp.CreatedDatePropertyName, CswNbtMetaDataFieldType.NbtFieldType.DateTime, ServerManaged: true ); CswNbtMetaDataObjectClassProp StartDateOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( CswNbtMetaDataObjectClass.NbtObjectClass.BatchOpClass, CswNbtObjClassBatchOp.StartDatePropertyName, CswNbtMetaDataFieldType.NbtFieldType.DateTime, ServerManaged: true ); CswNbtMetaDataObjectClassProp StatusOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( CswNbtMetaDataObjectClass.NbtObjectClass.BatchOpClass, CswNbtObjClassBatchOp.StatusPropertyName, CswNbtMetaDataFieldType.NbtFieldType.List, ServerManaged: true, ListOptions: StatusOptions.ToString() ); CswNbtMetaDataObjectClassProp UserOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( CswNbtMetaDataObjectClass.NbtObjectClass.BatchOpClass, CswNbtObjClassBatchOp.UserPropertyName, CswNbtMetaDataFieldType.NbtFieldType.Relationship, IsFk: true, FkType: NbtViewRelatedIdType.ObjectClassId.ToString(), FkValue: UserOC.ObjectClassId ); PriorityOCP.DefaultValue.Field1_Numeric = 0; PriorityOCP.DefaultValue.Gestalt = "0"; PercentDoneOCP.DefaultValue.Field1_Numeric = 0; PercentDoneOCP.DefaultValue.Gestalt = "0"; _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( CreatedDateOCP, CswNbtMetaDataObjectClassProp.ObjectClassPropAttributes.extended, CswNbtNodePropDateTime.DateDisplayMode.DateTime.ToString() ); _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( StartDateOCP, CswNbtMetaDataObjectClassProp.ObjectClassPropAttributes.extended, CswNbtNodePropDateTime.DateDisplayMode.DateTime.ToString() ); _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( EndDateOCP, CswNbtMetaDataObjectClassProp.ObjectClassPropAttributes.extended, CswNbtNodePropDateTime.DateDisplayMode.DateTime.ToString() ); CswNbtMetaDataNodeType BatchOpNT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( BatchOpOC.ObjectClassId, "Batch Operation", "System" ); BatchOpNT.setNameTemplateText( CswNbtMetaData.MakeTemplateEntry( OpNameOCP.PropName ) + " " + CswNbtMetaData.MakeTemplateEntry( CreatedDateOCP.PropName ) ); CswNbtMetaDataNodeTypeTab BatchOpTab = BatchOpNT.getFirstNodeTypeTab(); CswNbtMetaDataNodeTypeProp OpNameNTP = BatchOpNT.getNodeTypePropByObjectClassProp( CswNbtObjClassBatchOp.OpNamePropertyName ); CswNbtMetaDataNodeTypeProp UserNTP = BatchOpNT.getNodeTypePropByObjectClassProp( CswNbtObjClassBatchOp.UserPropertyName ); CswNbtMetaDataNodeTypeProp PercentDoneNTP = BatchOpNT.getNodeTypePropByObjectClassProp( CswNbtObjClassBatchOp.PercentDonePropertyName ); CswNbtMetaDataNodeTypeProp PriorityNTP = BatchOpNT.getNodeTypePropByObjectClassProp( CswNbtObjClassBatchOp.PriorityPropertyName ); CswNbtMetaDataNodeTypeProp StatusNTP = BatchOpNT.getNodeTypePropByObjectClassProp( CswNbtObjClassBatchOp.StatusPropertyName ); CswNbtMetaDataNodeTypeProp CreatedDateNTP = BatchOpNT.getNodeTypePropByObjectClassProp( CswNbtObjClassBatchOp.CreatedDatePropertyName ); CswNbtMetaDataNodeTypeProp StartDateNTP = BatchOpNT.getNodeTypePropByObjectClassProp( CswNbtObjClassBatchOp.StartDatePropertyName ); CswNbtMetaDataNodeTypeProp EndDateNTP = BatchOpNT.getNodeTypePropByObjectClassProp( CswNbtObjClassBatchOp.EndDatePropertyName ); CswNbtMetaDataNodeTypeProp BatchDataNTP = BatchOpNT.getNodeTypePropByObjectClassProp( CswNbtObjClassBatchOp.BatchDataPropertyName ); CswNbtMetaDataNodeTypeProp LogNTP = BatchOpNT.getNodeTypePropByObjectClassProp( CswNbtObjClassBatchOp.LogPropertyName ); // Set tab layout OpNameNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, BatchOpTab.TabId, 1, 1 ); UserNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, BatchOpTab.TabId, 2, 1 ); PriorityNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, BatchOpTab.TabId, 3, 1 ); PercentDoneNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, BatchOpTab.TabId, 4, 1 ); StatusNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, BatchOpTab.TabId, 5, 1 ); CreatedDateNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, BatchOpTab.TabId, 6, 1 ); StartDateNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, BatchOpTab.TabId, 7, 1 ); EndDateNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, BatchOpTab.TabId, 8, 1 ); BatchDataNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, BatchOpTab.TabId, 9, 1 ); LogNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, BatchOpTab.TabId, 10, 1 ); _CswNbtSchemaModTrnsctn.MetaData.refreshAll(); // Batch Operations (all) view for chemsw_admin_role CswNbtNode ChemSwAdminRole = _CswNbtSchemaModTrnsctn.Nodes.makeRoleNodeFromRoleName( CswNbtObjClassRole.ChemSWAdminRoleName ); CswNbtView BatchOpView = _CswNbtSchemaModTrnsctn.makeView(); BatchOpView.makeNew( "Batch Operations (all)", NbtViewVisibility.Role, ChemSwAdminRole.NodeId ); BatchOpView.Category = "System"; BatchOpView.SetViewMode( NbtViewRenderingMode.Grid ); CswNbtViewRelationship BatchOpViewRel = BatchOpView.AddViewRelationship( BatchOpOC, true ); BatchOpView.AddViewProperty( BatchOpViewRel, OpNameOCP ); BatchOpView.AddViewProperty( BatchOpViewRel, UserOCP ); CswNbtViewProperty BatchStatusViewProp = BatchOpView.AddViewProperty( BatchOpViewRel, StatusOCP ); CswNbtViewProperty BatchPriorityViewProp = BatchOpView.AddViewProperty( BatchOpViewRel, PriorityOCP ); BatchOpView.AddViewPropertyFilter( BatchStatusViewProp, Value: NbtBatchOpStatus.Completed.ToString(), FilterMode: CswNbtPropFilterSql.PropertyFilterMode.NotEquals, ShowAtRuntime: true ); BatchOpView.setSortProperty( BatchPriorityViewProp, NbtViewPropertySortMethod.Descending ); BatchOpView.save(); // Batch Operations (all) view for Administrator CswNbtNode AdminRole = _CswNbtSchemaModTrnsctn.Nodes.makeRoleNodeFromRoleName( "Administrator" ); if( AdminRole != null ) { CswNbtView BatchOpView2 = _CswNbtSchemaModTrnsctn.makeView(); BatchOpView2.makeNew( "Batch Operations (all)", NbtViewVisibility.Role, AdminRole.NodeId, null, BatchOpView ); BatchOpView2.save(); } // My Batch Operations view for everyone else CswNbtView BatchOpView3 = _CswNbtSchemaModTrnsctn.makeView(); BatchOpView3.makeNew( "My Batch Operations", NbtViewVisibility.Global ); BatchOpView3.Category = "System"; BatchOpView3.SetViewMode( NbtViewRenderingMode.Tree ); CswNbtViewRelationship BatchOpViewRel3 = BatchOpView3.AddViewRelationship( BatchOpOC, true ); BatchOpView3.AddViewPropertyAndFilter( BatchOpViewRel3, StatusOCP, Value: NbtBatchOpStatus.Completed.ToString(), FilterMode: CswNbtPropFilterSql.PropertyFilterMode.NotEquals, ShowAtRuntime: true ); BatchOpView3.AddViewPropertyAndFilter( BatchOpViewRel3, UserOCP, Value: "me", FilterMode: CswNbtPropFilterSql.PropertyFilterMode.Equals ); BatchOpView3.save(); // Batch operation scheduled rule _CswNbtSchemaModTrnsctn.createScheduledRule( Sched.NbtScheduleRuleNames.BatchOp, MtSched.Core.Recurrence.NSeconds, 5 ); // Batch threshold config var _CswNbtSchemaModTrnsctn.createConfigurationVariable( "batchthreshold", "If an operation affects this number of nodes, run as a batch operation instead", "10", false ); // case 26446 - All users should have View permissions to batch ops CswNbtMetaDataObjectClass RoleOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.RoleClass ); foreach( CswNbtObjClassRole RoleNode in RoleOC.getNodes( false, false ) ) { _CswNbtSchemaModTrnsctn.Permit.set( Security.CswNbtPermit.NodeTypePermission.View, BatchOpNT, RoleNode, true ); } }//Update()
public override void update() { CswNbtMetaDataObjectClass InventoryLevelOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.InventoryLevelClass ); CswNbtMetaDataObjectClass LocationOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.LocationClass ); CswNbtMetaDataObjectClassProp IlMaterialOcp = InventoryLevelOc.getObjectClassProp( CswNbtObjClassInventoryLevel.PropertyName.Material ); CswNbtMetaDataObjectClassProp IlLocationOcp = InventoryLevelOc.getObjectClassProp( CswNbtObjClassInventoryLevel.PropertyName.Location ); CswNbtMetaDataObjectClassProp IlTypeOcp = InventoryLevelOc.getObjectClassProp( CswNbtObjClassInventoryLevel.PropertyName.Type ); CswNbtMetaDataObjectClassProp IlLevelOcp = InventoryLevelOc.getObjectClassProp( CswNbtObjClassInventoryLevel.PropertyName.Level ); CswNbtMetaDataObjectClassProp IlStatusOcp = InventoryLevelOc.getObjectClassProp( CswNbtObjClassInventoryLevel.PropertyName.Status ); CswNbtMetaDataObjectClassProp IlCurrentQuantityOcp = InventoryLevelOc.getObjectClassProp( CswNbtObjClassInventoryLevel.PropertyName.CurrentQuantity ); foreach( CswNbtMetaDataNodeType LocationNt in LocationOc.getLatestVersionNodeTypes() ) { CswNbtMetaDataNodeTypeTab LevelTab = LocationNt.getNodeTypeTab( "Inventory Levels" ); if( null == LevelTab ) { LevelTab = _CswNbtSchemaModTrnsctn.MetaData.makeNewTab( LocationNt, "Inventory Levels", LocationNt.getNodeTypeTabIds().Count ); } CswNbtMetaDataNodeTypeProp LevelsNtp = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( LocationNt, _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.Grid ), "Inventory Levels" ) { TabId = LevelTab.TabId } ); CswNbtView LevelsView = _CswNbtSchemaModTrnsctn.restoreView( LevelsNtp.ViewId ); if( null == LevelsView ) { LevelsView = _CswNbtSchemaModTrnsctn.makeView(); LevelsNtp.ViewId = LevelsView.ViewId; } LevelsView.Root.ChildRelationships.Clear(); LevelsView.ViewMode = NbtViewRenderingMode.Grid; LevelsView.Visibility = NbtViewVisibility.Property; CswNbtViewRelationship RootRel = LevelsView.AddViewRelationship( LocationNt, true ); CswNbtViewRelationship LevelRel = LevelsView.AddViewRelationship( RootRel, NbtViewPropOwnerType.Second, IlLocationOcp, true ); LevelsView.AddViewProperty( LevelRel, IlMaterialOcp ); LevelsView.AddViewProperty( LevelRel, IlTypeOcp ); LevelsView.AddViewProperty( LevelRel, IlLevelOcp ); LevelsView.AddViewProperty( LevelRel, IlStatusOcp ); LevelsView.AddViewProperty( LevelRel, IlCurrentQuantityOcp ); LevelsView.save(); } CswNbtView AboveMinimumInventoryView = _CswNbtSchemaModTrnsctn.makeView(); AboveMinimumInventoryView.makeNew( "Above Maximum Inventory", NbtViewVisibility.Global ); AboveMinimumInventoryView.ViewMode = NbtViewRenderingMode.Grid; AboveMinimumInventoryView.Category = "Materials"; CswNbtViewRelationship AmivRel = AboveMinimumInventoryView.AddViewRelationship( InventoryLevelOc, true ); AboveMinimumInventoryView.AddViewProperty( AmivRel, IlMaterialOcp ); AboveMinimumInventoryView.AddViewProperty( AmivRel, IlLocationOcp ); AboveMinimumInventoryView.AddViewPropertyAndFilter( AmivRel, IlTypeOcp, CswNbtObjClassInventoryLevel.Types.Maximum ); AboveMinimumInventoryView.AddViewProperty( AmivRel, IlLevelOcp ); AboveMinimumInventoryView.AddViewPropertyAndFilter( AmivRel, IlStatusOcp, CswNbtObjClassInventoryLevel.Statuses.Above ); AboveMinimumInventoryView.AddViewProperty( AmivRel, IlCurrentQuantityOcp ); AboveMinimumInventoryView.save(); CswNbtView BelowMinimumInventoryView = _CswNbtSchemaModTrnsctn.makeView(); BelowMinimumInventoryView.makeNew( "Below Minimum Inventory", NbtViewVisibility.Global ); BelowMinimumInventoryView.ViewMode = NbtViewRenderingMode.Grid; BelowMinimumInventoryView.Category = "Materials"; CswNbtViewRelationship BmivRel = BelowMinimumInventoryView.AddViewRelationship( InventoryLevelOc, true ); BelowMinimumInventoryView.AddViewProperty( BmivRel, IlMaterialOcp ); BelowMinimumInventoryView.AddViewProperty( BmivRel, IlLocationOcp ); BelowMinimumInventoryView.AddViewPropertyAndFilter( BmivRel, IlTypeOcp, CswNbtObjClassInventoryLevel.Types.Minimum ); BelowMinimumInventoryView.AddViewProperty( BmivRel, IlLevelOcp ); BelowMinimumInventoryView.AddViewPropertyAndFilter( BmivRel, IlStatusOcp, CswNbtObjClassInventoryLevel.Statuses.Below ); BelowMinimumInventoryView.AddViewProperty( BmivRel, IlCurrentQuantityOcp ); BelowMinimumInventoryView.save(); }//Update()
public override void update() { // cispro grid views: category=Containers , scope=global // name=Expiring Containers (expiration<=today+30) mode=grid, struct=container>size>material CswNbtMetaDataObjectClass contOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.ContainerClass ); CswNbtMetaDataObjectClassProp contSizeProp = contOC.getObjectClassProp( CswNbtObjClassContainer.SizePropertyName ); CswNbtMetaDataObjectClassProp contBarcodeProp = contOC.getObjectClassProp( CswNbtObjClassContainer.BarcodePropertyName ); CswNbtMetaDataObjectClassProp contQuantityProp = contOC.getObjectClassProp( CswNbtObjClassContainer.QuantityPropertyName ); CswNbtMetaDataObjectClassProp contLocationProp = contOC.getObjectClassProp( CswNbtObjClassContainer.LocationPropertyName ); CswNbtMetaDataObjectClassProp contExpiresProp = contOC.getObjectClassProp( CswNbtObjClassContainer.ExpirationDatePropertyName ); CswNbtMetaDataObjectClassProp contMissingProp = contOC.getObjectClassProp( CswNbtObjClassContainer.MissingPropertyName ); CswNbtMetaDataObjectClass sizeOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.SizeClass ); CswNbtMetaDataObjectClassProp sizeMatProp = sizeOC.getObjectClassProp( CswNbtObjClassSize.MaterialPropertyName ); CswNbtMetaDataObjectClass matOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.MaterialClass ); CswNbtMetaDataObjectClassProp matTradenameProp = matOC.getObjectClassProp( CswNbtObjClassMaterial.TradenamePropertyName ); CswNbtMetaDataObjectClassProp matSupplierProp = matOC.getObjectClassProp( CswNbtObjClassMaterial.SupplierPropertyName ); CswNbtMetaDataObjectClassProp matPartNumberProp = matOC.getObjectClassProp( CswNbtObjClassMaterial.PartNumberPropertyName ); CswNbtView expView = _CswNbtSchemaModTrnsctn.makeView(); expView.makeNew( "Expiring Containers", NbtViewVisibility.Global ); expView.ViewMode = NbtViewRenderingMode.Grid; CswNbtViewRelationship contRelationship = expView.AddViewRelationship( contOC, true ); //add size CswNbtViewRelationship sizeRelationship = expView.AddViewRelationship( contRelationship, NbtViewPropOwnerType.First, contSizeProp, true ); //add material CswNbtViewRelationship matRelationship = expView.AddViewRelationship( sizeRelationship, NbtViewPropOwnerType.First, sizeMatProp, true ); //add props CswNbtViewProperty bcViewProp = expView.AddViewProperty( contRelationship, contBarcodeProp ); bcViewProp.Order = 1; CswNbtViewProperty expViewProp = expView.AddViewProperty( contRelationship, contExpiresProp ); expViewProp.Order = 2; CswNbtViewProperty tnameViewProp = expView.AddViewProperty( matRelationship, matTradenameProp ); tnameViewProp.Order = 3; CswNbtViewProperty suppViewProp = expView.AddViewProperty( matRelationship, matSupplierProp ); suppViewProp.Order = 4; CswNbtViewProperty partViewProp = expView.AddViewProperty( matRelationship, matPartNumberProp ); partViewProp.Order = 5; CswNbtViewProperty qtyViewProp = expView.AddViewProperty( contRelationship, contQuantityProp ); qtyViewProp.Order = 6; CswNbtViewProperty locViewProp = expView.AddViewProperty( contRelationship, contLocationProp ); locViewProp.Order = 7; expView.save(); // Missing Containers (missing==true) CswNbtView missingView = _CswNbtSchemaModTrnsctn.makeView(); missingView.makeNew( "Missing Containers", NbtViewVisibility.Global, null, null, expView ); missingView.save(); //add filters expView.AddViewPropertyFilter( expViewProp, CswNbtSubField.SubFieldName.Value, CswNbtPropFilterSql.PropertyFilterMode.LessThanOrEquals, "today+30", false ); expView.save(); CswNbtViewProperty missingViewProp = expView.AddViewProperty( contRelationship, contMissingProp ); missingViewProp.Order = 8; missingViewProp.ShowInGrid = false; missingView.AddViewPropertyFilter( missingViewProp, CswNbtSubField.SubFieldName.Value, CswNbtPropFilterSql.PropertyFilterMode.Equals, true.ToString(), false ); missingView.save(); }//Update()