Пример #1
0
        private void _updateTableLayout()
        {
            CswNbtSchemaUpdateLayoutMgr TableLayoutMgr = new CswNbtSchemaUpdateLayoutMgr( _CswNbtSchemaModTrnsctn, CswEnumNbtObjectClass.RequestItemClass, LayoutType: CswEnumNbtLayoutType.Table );

            TableLayoutMgr.First.moveProp( Row: 1, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.ItemNumber );
            TableLayoutMgr.First.moveProp( Row: 2, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.ExternalOrderNumber );
            TableLayoutMgr.First.moveProp( Row: 3, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.InventoryGroup );
            TableLayoutMgr.First.moveProp( Row: 4, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Fulfill );
        }
Пример #2
0
        public override void update()
        {
            try
            {
                CswNbtSchemaUpdateLayoutMgr LayoutMgr = new CswNbtSchemaUpdateLayoutMgr( _CswNbtSchemaModTrnsctn, CswEnumNbtObjectClass.UserClass, LayoutType: CswEnumNbtLayoutType.Edit );

                LayoutMgr.First.removeProp( PropName: CswNbtObjClassUser.PropertyName.CostCode );

                //User Tab
                LayoutMgr.First.moveProp( Row: 1, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Username );
                LayoutMgr.First.moveProp( Row: 2, Column: 1, PropName: CswNbtObjClassUser.PropertyName.FirstName );
                LayoutMgr.First.moveProp( Row: 3, Column: 1, PropName: CswNbtObjClassUser.PropertyName.LastName );
                LayoutMgr.First.moveProp( Row: 4, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Phone );
                LayoutMgr.First.moveProp( Row: 5, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Email );
                LayoutMgr.First.moveProp( Row: 6, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Password );
                LayoutMgr.First.moveProp( Row: 7, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Role );
                LayoutMgr.First.moveProp( Row: 8, Column: 1, PropName: CswNbtObjClassUser.PropertyName.CurrentWorkUnit );

                LayoutMgr.First.moveProp( Row: 1, Column: 2, PropName: CswNbtObjClassUser.PropertyName.Barcode );
                LayoutMgr.First.moveProp( Row: 2, Column: 2, PropName: CswNbtObjClassUser.PropertyName.EmployeeId );
                LayoutMgr.First.moveProp( Row: 3, Column: 2, PropName: CswNbtObjClassUser.PropertyName.LastLogin );
                LayoutMgr.First.moveProp( Row: 4, Column: 2, PropName: CswNbtObjClassUser.PropertyName.AccountLocked );
                LayoutMgr.First.moveProp( Row: 5, Column: 2, PropName: CswNbtObjClassUser.PropertyName.FailedLoginCount );
                LayoutMgr.First.moveProp( Row: 6, Column: 2, PropName: CswNbtObjClassUser.PropertyName.Archived );
                LayoutMgr.First.moveProp( Row: 7, Column: 2, PropName: CswNbtObjClassUser.PropertyName.Jurisdiction );
                LayoutMgr.First.moveProp( Row: 8, Column: 2, PropName: CswNbtObjClassUser.PropertyName.AvailableWorkUnits );

                //Profile tab
                LayoutMgr["Profile"].copyProp( Row: 1, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Username );
                LayoutMgr["Profile"].copyProp( Row: 2, Column: 1, PropName: CswNbtObjClassUser.PropertyName.FirstName );
                LayoutMgr["Profile"].copyProp( Row: 3, Column: 1, PropName: CswNbtObjClassUser.PropertyName.LastName );
                LayoutMgr["Profile"].copyProp( Row: 4, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Phone );
                LayoutMgr["Profile"].copyProp( Row: 5, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Email );
                LayoutMgr["Profile"].copyProp( Row: 6, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Password );
                LayoutMgr["Profile"].copyProp( Row: 7, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Role );
                LayoutMgr["Profile"].copyProp( Row: 8, Column: 1, PropName: CswNbtObjClassUser.PropertyName.CurrentWorkUnit );

                LayoutMgr["Profile"].copyProp( Row: 1, Column: 2, PropName: CswNbtObjClassUser.PropertyName.FavoriteActions );
                LayoutMgr["Profile"].copyProp( Row: 2, Column: 2, PropName: CswNbtObjClassUser.PropertyName.FavoriteViews );
                LayoutMgr["Profile"].copyProp( Row: 3, Column: 2, PropName: CswNbtObjClassUser.PropertyName.DateFormat );
                LayoutMgr["Profile"].copyProp( Row: 4, Column: 2, PropName: CswNbtObjClassUser.PropertyName.TimeFormat );
                LayoutMgr["Profile"].copyProp( Row: 5, Column: 2, PropName: CswNbtObjClassUser.PropertyName.Language );
                LayoutMgr["Profile"].copyProp( Row: 6, Column: 2, PropName: CswNbtObjClassUser.PropertyName.Jurisdiction );
                LayoutMgr["Profile"].copyProp( Row: 7, Column: 2, PropName: CswNbtObjClassUser.PropertyName.DefaultLocation );
                LayoutMgr["Profile"].copyProp( Row: 8, Column: 2, PropName: CswNbtObjClassUser.PropertyName.DefaultPrinter );
                LayoutMgr["Profile"].copyProp( Row: 9, Column: 2, PropName: CswNbtObjClassUser.PropertyName.DefaultBalance );
                LayoutMgr["Profile"].copyProp( Row: 10, Column: 2, PropName: CswNbtObjClassUser.PropertyName.PageSize );
            }
            catch( Exception Ex )
            {
                throw new CswDniException( "User layout update failed.", Ex );
            }
        } // update()
Пример #3
0
        } // update()

        private void _updateAddLayout()
        {
            CswNbtSchemaUpdateLayoutMgr AddLayoutMgr = new CswNbtSchemaUpdateLayoutMgr( _CswNbtSchemaModTrnsctn, CswEnumNbtObjectClass.RequestItemClass, LayoutType: CswEnumNbtLayoutType.Add );

            AddLayoutMgr.First.moveProp( Row: 1, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.RequestedFor );
            AddLayoutMgr.First.moveProp( Row: 2, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.NewMaterialType );
            AddLayoutMgr.First.moveProp( Row: 3, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.NewMaterialTradename );
            AddLayoutMgr.First.moveProp( Row: 4, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.NewMaterialSupplier );
            AddLayoutMgr.First.moveProp( Row: 5, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.NewMaterialPartNo );
            AddLayoutMgr.First.moveProp( Row: 6, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Quantity );
            AddLayoutMgr.First.moveProp( Row: 7, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Size );
            AddLayoutMgr.First.moveProp( Row: 8, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.SizeCount );
            AddLayoutMgr.First.moveProp( Row: 10, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.NeededBy );
            AddLayoutMgr.First.moveProp( Row: 11, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.InventoryGroup );
            AddLayoutMgr.First.moveProp( Row: 12, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Location );
            AddLayoutMgr.First.moveProp( Row: 13, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.CertificationLevel );
        }
Пример #4
0
        private void _updatePreviewLayout()
        {
            CswNbtSchemaUpdateLayoutMgr PreviewLayoutMgr = new CswNbtSchemaUpdateLayoutMgr( _CswNbtSchemaModTrnsctn, CswEnumNbtObjectClass.RequestItemClass, LayoutType: CswEnumNbtLayoutType.Preview );

            PreviewLayoutMgr.First.moveProp( Row: 1, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Description );
            PreviewLayoutMgr.First.moveProp( Row: 2, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.ExternalOrderNumber );
            PreviewLayoutMgr.First.moveProp( Row: 3, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.EnterprisePart );
            PreviewLayoutMgr.First.moveProp( Row: 4, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Material );
            PreviewLayoutMgr.First.moveProp( Row: 5, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Container );
            PreviewLayoutMgr.First.moveProp( Row: 6, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.NewMaterialTradename );
            PreviewLayoutMgr.First.moveProp( Row: 7, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.NewMaterialSupplier );
            PreviewLayoutMgr.First.moveProp( Row: 8, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.NewMaterialPartNo );
            PreviewLayoutMgr.First.moveProp( Row: 9, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Quantity );
            PreviewLayoutMgr.First.moveProp( Row: 10, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.SizeCount );
            PreviewLayoutMgr.First.moveProp( Row: 11, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Size );
            PreviewLayoutMgr.First.moveProp( Row: 12, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Location );
        }
Пример #5
0
        private void _updateEditLayout()
        {
            CswNbtSchemaUpdateLayoutMgr LayoutMgr = new CswNbtSchemaUpdateLayoutMgr( _CswNbtSchemaModTrnsctn, CswEnumNbtObjectClass.RequestItemClass, LayoutType: CswEnumNbtLayoutType.Edit );

            LayoutMgr.Identity.moveProp( Row: 1, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.RequestType );
            LayoutMgr.Identity.moveProp( Row: 2, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Description );
            LayoutMgr.Identity.moveProp( Row: 3, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Material );
            LayoutMgr.Identity.moveProp( Row: 4, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.EnterprisePart );
            LayoutMgr.Identity.moveProp( Row: 5, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Container );
            LayoutMgr.Identity.moveProp( Row: 6, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Fulfill );

            LayoutMgr.First.moveProp( Row: 1, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.ItemNumber );
            LayoutMgr.First.moveProp( Row: 2, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.IsBatch );
            LayoutMgr.First.moveProp( Row: 3, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Requestor );
            LayoutMgr.First.moveProp( Row: 4, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Status );
            LayoutMgr.First.moveProp( Row: 5, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.NewMaterialTradename );
            LayoutMgr.First.moveProp( Row: 6, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.NewMaterialSupplier );
            LayoutMgr.First.moveProp( Row: 7, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Quantity );
            LayoutMgr.First.moveProp( Row: 8, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Size );
            LayoutMgr.First.moveProp( Row: 9, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Location );
            LayoutMgr.First.moveProp( Row: 10, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.NeededBy );
            LayoutMgr.First.moveProp( Row: 11, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.TotalDispensed );
            LayoutMgr.First.moveProp( Row: 12, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.RecurringFrequency );
            LayoutMgr.First.moveProp( Row: 13, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.Comments );

            LayoutMgr.First.moveProp( Row: 1, Column: 2, PropName: CswNbtObjClassRequestItem.PropertyName.ExternalOrderNumber );
            LayoutMgr.First.moveProp( Row: 2, Column: 2, PropName: CswNbtObjClassRequestItem.PropertyName.BatchNumber );
            LayoutMgr.First.moveProp( Row: 3, Column: 2, PropName: CswNbtObjClassRequestItem.PropertyName.RequestedFor );
            LayoutMgr.First.moveProp( Row: 4, Column: 2, PropName: CswNbtObjClassRequestItem.PropertyName.AssignedTo );
            LayoutMgr.First.moveProp( Row: 5, Column: 2, PropName: CswNbtObjClassRequestItem.PropertyName.NewMaterialPartNo );
            LayoutMgr.First.moveProp( Row: 6, Column: 2, PropName: CswNbtObjClassRequestItem.PropertyName.NewMaterialType );
            LayoutMgr.First.moveProp( Row: 7, Column: 2, PropName: CswNbtObjClassRequestItem.PropertyName.CertificationLevel );
            LayoutMgr.First.moveProp( Row: 8, Column: 2, PropName: CswNbtObjClassRequestItem.PropertyName.SizeCount );
            LayoutMgr.First.moveProp( Row: 9, Column: 2, PropName: CswNbtObjClassRequestItem.PropertyName.InventoryGroup );
            LayoutMgr.First.moveProp( Row: 10, Column: 2, PropName: CswNbtObjClassRequestItem.PropertyName.Priority );
            LayoutMgr.First.moveProp( Row: 11, Column: 2, PropName: CswNbtObjClassRequestItem.PropertyName.TotalMoved );
            LayoutMgr.First.moveProp( Row: 12, Column: 2, PropName: CswNbtObjClassRequestItem.PropertyName.NextReorderDate );
            LayoutMgr.First.moveProp( Row: 13, Column: 2, PropName: CswNbtObjClassRequestItem.PropertyName.FulfillmentHistory );

            //Receipt Lots tab

            LayoutMgr["Receipt Lots"].copyProp( Row: 1, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.GoodsReceived );
            LayoutMgr["Receipt Lots"].copyProp( Row: 2, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.ReceiptLotToDispense );
            LayoutMgr["Receipt Lots"].copyProp( Row: 3, Column: 1, PropName: CswNbtObjClassRequestItem.PropertyName.ReceiptLotsReceived );
        }
        public override void update()
        {
            try
            {
                CswNbtSchemaUpdateLayoutMgr LayoutMgr = new CswNbtSchemaUpdateLayoutMgr( _CswNbtSchemaModTrnsctn, CswEnumNbtObjectClass.UserClass, LayoutType: CswEnumNbtLayoutType.Edit );
                CswNbtMetaDataObjectClass RoleOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.RoleClass );
                
                //Step 1: Make sure all admins have Edit on Users. Revoke View for everyone else.
                {
                    CswNbtMetaDataObjectClass UserOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.UserClass );
                    foreach ( CswNbtMetaDataNodeType UserNt in UserOc.getLatestVersionNodeTypes() )
                    {
                        foreach( CswNbtObjClassRole Role in RoleOC.getNodes( forceReInit: true, includeSystemNodes: false, IncludeDefaultFilters: false ) )
                        {
                            if( Role.Administrator.Checked == CswEnumTristate.True )
                            {
                                _CswNbtSchemaModTrnsctn.Permit.set( CswEnumNbtNodeTypeTabPermission.Edit, UserNt, Role, value: true );
                            }
                            else
                            {
                                _CswNbtSchemaModTrnsctn.Permit.set( CswEnumNbtNodeTypeTabPermission.View, UserNt, Role, value: false );
                            }
                        }
                    }
                    
                }
                //Step 2: Make sure everyone has edit on Profile.
                {
                    Collection<CswNbtObjClassRole> AllRolesRoles = new Collection<CswNbtObjClassRole>();

                    foreach ( CswNbtObjClassRole Role in RoleOC.getNodes( forceReInit: true, includeSystemNodes: false, IncludeDefaultFilters: false ) )
                    {
                        AllRolesRoles.Add( Role );
                    }
                    LayoutMgr["Profile"].setPermit( CswEnumNbtNodeTypeTabPermission.Edit, true, AllRolesRoles );
                }

            }
            catch ( Exception )
            {
                throw new CswDniException( "User layout update failed." );
            }

        } // update()
Пример #7
0
        public override void update()
        {
            CswNbtMetaDataObjectClass MaterialComponentOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.MaterialComponentClass);

            foreach (CswNbtMetaDataNodeType MaterialComponentNT in MaterialComponentOC.getNodeTypes())
            {
                CswNbtMetaDataNodeTypeProp PercentageNTP = MaterialComponentNT.getNodeTypePropByObjectClassProp(CswNbtObjClassMaterialComponent.PropertyName.Percentage);
                PercentageNTP.Hidden = true;
                PercentageNTP.removeFromAllLayouts();
            }

            foreach (CswNbtObjClassMaterialComponent MaterialComponentNode in MaterialComponentOC.getNodes(false, false, false))
            {
                MaterialComponentNode.TargetPercentageValue.Value = MaterialComponentNode.Percentage.Value;
                MaterialComponentNode.HighPercentageValue.Value   = MaterialComponentNode.Percentage.Value;
                MaterialComponentNode.postChanges(false);
            }

            CswNbtSchemaUpdateLayoutMgr AddLayoutMgr = new CswNbtSchemaUpdateLayoutMgr(_CswNbtSchemaModTrnsctn, CswEnumNbtObjectClass.MaterialComponentClass, LayoutType: CswEnumNbtLayoutType.Add);

            AddLayoutMgr.First.moveProp(Row: 1, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.Mixture);
            AddLayoutMgr.First.moveProp(Row: 2, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.Constituent);
            AddLayoutMgr.First.moveProp(Row: 3, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.LowPercentageValue);
            AddLayoutMgr.First.moveProp(Row: 4, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.TargetPercentageValue);
            AddLayoutMgr.First.moveProp(Row: 5, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.HighPercentageValue);
            AddLayoutMgr.First.moveProp(Row: 6, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.Active);
            AddLayoutMgr.First.moveProp(Row: 7, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.HazardousReporting);

            CswNbtSchemaUpdateLayoutMgr EditLayoutMgr = new CswNbtSchemaUpdateLayoutMgr(_CswNbtSchemaModTrnsctn, CswEnumNbtObjectClass.MaterialComponentClass, LayoutType: CswEnumNbtLayoutType.Edit);

            EditLayoutMgr.First.moveProp(Row: 1, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.Mixture);
            EditLayoutMgr.First.moveProp(Row: 2, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.Constituent);
            EditLayoutMgr.First.moveProp(Row: 3, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.LowPercentageValue);
            EditLayoutMgr.First.moveProp(Row: 4, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.TargetPercentageValue);
            EditLayoutMgr.First.moveProp(Row: 5, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.HighPercentageValue);
            EditLayoutMgr.First.moveProp(Row: 6, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.Active);
            EditLayoutMgr.First.moveProp(Row: 7, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.HazardousReporting);
        }
        public override void update()
        {
            CswNbtMetaDataObjectClass ComponentOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.MaterialComponentClass);

            CswNbtMetaDataObjectClassProp oldLowOCP        = ComponentOC.getObjectClassProp(oldLowPercentageValue);
            CswNbtMetaDataObjectClassProp oldTargetOCP     = ComponentOC.getObjectClassProp(oldTargetPercentageValue);
            CswNbtMetaDataObjectClassProp oldHighOCP       = ComponentOC.getObjectClassProp(oldHighPercentageValue);
            CswNbtMetaDataObjectClassProp oldPercentageOCP = ComponentOC.getObjectClassProp(oldPercentageValue);

            if (null != oldLowOCP)
            {
                // Copy values from existing Low/Target/High to new PercentageRange
                CswNbtView CompFixView = _CswNbtSchemaModTrnsctn.makeView();
                CompFixView.ViewName = "52299_compfixview";
                CswNbtViewRelationship rel1 = CompFixView.AddViewRelationship(ComponentOC, false);
                CompFixView.AddViewPropertyAndFilter(rel1, oldLowOCP, Conjunction: CswEnumNbtFilterConjunction.Or, FilterMode: CswEnumNbtFilterMode.NotNull);
                CompFixView.AddViewPropertyAndFilter(rel1, oldTargetOCP, Conjunction: CswEnumNbtFilterConjunction.Or, FilterMode: CswEnumNbtFilterMode.NotNull);
                CompFixView.AddViewPropertyAndFilter(rel1, oldHighOCP, Conjunction: CswEnumNbtFilterConjunction.Or, FilterMode: CswEnumNbtFilterMode.NotNull);

                ICswNbtTree CompFixTree = _CswNbtSchemaModTrnsctn.getTreeFromView(CompFixView, IncludeSystemNodes: true);
                while (CompFixTree.getChildNodeCount() > 0)
                {
                    for (Int32 c = 0; c < CompFixTree.getChildNodeCount(); c++)
                    {
                        CompFixTree.goToNthChild(c);

                        CswNbtObjClassMaterialComponent CompNode = CompFixTree.getCurrentNode();
                        CompNode.PercentageRange.Lower  = CompNode.Node.Properties[oldLowPercentageValue].AsNumber.Value;
                        CompNode.PercentageRange.Target = CompNode.Node.Properties[oldTargetPercentageValue].AsNumber.Value;
                        CompNode.PercentageRange.Upper  = CompNode.Node.Properties[oldHighPercentageValue].AsNumber.Value;
                        CompNode.PercentageRange.Units  = "%";

                        CompNode.Node.Properties[oldLowPercentageValue].AsNumber.Value    = Double.NaN;
                        CompNode.Node.Properties[oldTargetPercentageValue].AsNumber.Value = Double.NaN;
                        CompNode.Node.Properties[oldHighPercentageValue].AsNumber.Value   = Double.NaN;

                        CompNode.postChanges(false);

                        CompFixTree.goToParentNode();
                    } // for( Int32 c = 0; c < CompFixTree.getChildNodeCount(); c++ )

                    // next iteration
                    CompFixTree = _CswNbtSchemaModTrnsctn.getTreeFromView(CompFixView, IncludeSystemNodes: true);
                } // while( CompFixTree.getChildNodeCount() > 0 )


                // Delete existing Low/Target/High
                _CswNbtSchemaModTrnsctn.MetaData.DeleteObjectClassProp(oldLowOCP, true);
                _CswNbtSchemaModTrnsctn.MetaData.DeleteObjectClassProp(oldTargetOCP, true);
                _CswNbtSchemaModTrnsctn.MetaData.DeleteObjectClassProp(oldHighOCP, true);
                _CswNbtSchemaModTrnsctn.MetaData.DeleteObjectClassProp(oldPercentageOCP, true);
            }

            // Set default value of Units to %
            foreach (CswNbtMetaDataNodeType NodeType in ComponentOC.getNodeTypes())
            {
                CswNbtMetaDataNodeTypeProp PercentRangeNTP = NodeType.getNodeTypePropByObjectClassProp(CswNbtObjClassMaterialComponent.PropertyName.PercentageRange);
                PercentRangeNTP.DesignNode.AttributeProperty[CswNbtFieldTypeRuleNumericRange.AttributeName.DefaultValue].SetSubFieldValue(CswNbtFieldTypeRuleNumericRange.SubFieldName.Units, "%");
            }


            // Set layout on nodetypes
            CswNbtSchemaUpdateLayoutMgr AddLayoutMgr = new CswNbtSchemaUpdateLayoutMgr(_CswNbtSchemaModTrnsctn, CswEnumNbtObjectClass.MaterialComponentClass, LayoutType: CswEnumNbtLayoutType.Add);

            AddLayoutMgr.First.moveProp(Row: 1, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.Mixture);
            AddLayoutMgr.First.moveProp(Row: 2, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.Constituent);
            AddLayoutMgr.First.moveProp(Row: 3, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.PercentageRange);
            AddLayoutMgr.First.moveProp(Row: 4, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.Active);
            AddLayoutMgr.First.moveProp(Row: 5, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.HazardousReporting);

            CswNbtSchemaUpdateLayoutMgr EditLayoutMgr = new CswNbtSchemaUpdateLayoutMgr(_CswNbtSchemaModTrnsctn, CswEnumNbtObjectClass.MaterialComponentClass, LayoutType: CswEnumNbtLayoutType.Edit);

            EditLayoutMgr.First.moveProp(Row: 1, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.Mixture);
            EditLayoutMgr.First.moveProp(Row: 2, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.Constituent);
            EditLayoutMgr.First.moveProp(Row: 3, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.PercentageRange);
            EditLayoutMgr.First.moveProp(Row: 4, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.Active);
            EditLayoutMgr.First.moveProp(Row: 5, Column: 1, PropName: CswNbtObjClassMaterialComponent.PropertyName.HazardousReporting);

            // Fix Chemical Components Grid
            CswNbtMetaDataNodeType ChemicalNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType("Chemical");

            if (null != ChemicalNT)
            {
                CswNbtMetaDataNodeTypeProp ComponentsNTP = ChemicalNT.getNodeTypeProp("Components");
                if (null != ComponentsNTP)
                {
                    CswNbtView         ComponentsView = _CswNbtSchemaModTrnsctn.restoreView(ComponentsNTP.ViewId);
                    CswNbtViewProperty percentageVP   = ComponentsView.findPropertyByName("Percentage");
                    if (null != percentageVP)
                    {
                        CswNbtMetaDataObjectClassProp PercentageRangeOCP = ComponentOC.getObjectClassProp(CswNbtObjClassMaterialComponent.PropertyName.PercentageRange);
                        percentageVP.Name = PercentageRangeOCP.PropName;
                        percentageVP.ObjectClassPropId = PercentageRangeOCP.ObjectClassPropId;
                        percentageVP.FieldType         = CswEnumNbtFieldType.NumericRange.ToString();
                        ComponentsView.save();
                    }

                    /*
                     *<TreeView viewname="Components" version="1.0" iconfilename="Images/view/viewgrid.gif" selectable="true" mode="Grid" width="100" viewid="3293" category="" visibility="Property"
                     *        visibilityroleid="" visibilityuserid="" groupbysiblings="false" included="true" isdemo="false" issystem="false" gridgroupbycol="">
                     *    <Relationship secondname="ChemicalClass" secondtype="ObjectClassId" secondid="147" secondiconfilename="atom.png" selectable="true" arbitraryid="root_OC_147" showintree="true"
                     *                  allowaddchildren="True" allowview="True" allowedit="True" allowdelete="True" nodeidstofilterin="" nodeidstofilterout="">
                     *        <Relationship propid="1373" propname="Mixture" proptype="ObjectClassPropId" propowner="Second" firstname="ChemicalClass" firsttype="ObjectClassId" firstid="147"
                     *                      secondname="MaterialComponentClass" secondtype="ObjectClassId" secondid="315" secondiconfilename="atom.png" selectable="true" arbitraryid="root_OC_147_OC_3151373"
                     *                      showintree="true" allowaddchildren="True" allowview="True" allowedit="True" allowdelete="True" nodeidstofilterin="" nodeidstofilterout="">
                     *            <Property type="ObjectClassPropId" nodetypepropid="-2147483648" objectclasspropid="1374" name="Constituent" arbitraryid="root_OC_147_OC_3151373_OCP_1374" sortby="False"
                     *                      sortmethod="Ascending" fieldtype="Relationship" order="1" width="" showingrid="True" />
                     *            <Property type="ObjectClassPropId" nodetypepropid="-2147483648" objectclasspropid="1364" name="Percentage" arbitraryid="root_OC_147_OC_3151373_OCP_1364" sortby="False"
                     *                      sortmethod="Ascending" fieldtype="Number" order="3" width="" showingrid="True" />
                     *            <Relationship propid="1374" propname="Constituent" proptype="ObjectClassPropId" propowner="First" firstname="MaterialComponentClass" firsttype="ObjectClassId"
                     *                      firstid="315" secondname="ChemicalClass" secondtype="ObjectClassId" secondid="147" secondiconfilename="atom.png" selectable="true"
                     *                      arbitraryid="root_OC_147_OC_3151373_OC_1471374" showintree="true" allowaddchildren="True" allowview="True" allowedit="True" allowdelete="True"
                     *                      nodeidstofilterin="" nodeidstofilterout="">
                     *                <Property type="NodeTypePropId" nodetypepropid="5583" objectclasspropid="-2147483648" name="CAS No" arbitraryid="root_OC_147_OC_3151373_OC_1471374_NTP_5583"
                     *                          sortby="False" sortmethod="Ascending" fieldtype="CASNo" order="2" width="" showingrid="True" />
                     *            </Relationship>
                     *        </Relationship>
                     *    </Relationship>
                     *</TreeView>
                     */
                }
            }
        }
        public override void update()
        {
            try
            {
                CswNbtSchemaUpdateLayoutMgr LayoutMgr = new CswNbtSchemaUpdateLayoutMgr( _CswNbtSchemaModTrnsctn, CswEnumNbtObjectClass.UserClass, LayoutType: CswEnumNbtLayoutType.Edit );

                //User tab
                LayoutMgr.First.removeProp( PropName: CswNbtObjClassUser.PropertyName.FavoriteActions );
                LayoutMgr.First.removeProp( PropName: CswNbtObjClassUser.PropertyName.FavoriteViews );
                LayoutMgr.First.removeProp( PropName: CswNbtObjClassUser.PropertyName.DateFormat );
                LayoutMgr.First.removeProp( PropName: CswNbtObjClassUser.PropertyName.TimeFormat );
                LayoutMgr.First.removeProp( PropName: CswNbtObjClassUser.PropertyName.Language );
                LayoutMgr.First.removeProp( PropName: CswNbtObjClassUser.PropertyName.DefaultLocation );
                LayoutMgr.First.removeProp( PropName: CswNbtObjClassUser.PropertyName.DefaultPrinter );
                LayoutMgr.First.removeProp( PropName: CswNbtObjClassUser.PropertyName.PageSize );

                LayoutMgr.First.moveProp( Row: 1, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Username );
                LayoutMgr.First.moveProp( Row: 2, Column: 1, PropName: CswNbtObjClassUser.PropertyName.FirstName );
                LayoutMgr.First.moveProp( Row: 3, Column: 1, PropName: CswNbtObjClassUser.PropertyName.LastName );
                LayoutMgr.First.moveProp( Row: 4, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Phone );
                LayoutMgr.First.moveProp( Row: 5, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Email );
                LayoutMgr.First.moveProp( Row: 6, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Password );
                LayoutMgr.First.moveProp( Row: 7, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Jurisdiction );

                LayoutMgr.First.moveProp( Row: 1, Column: 2, PropName: CswNbtObjClassUser.PropertyName.Role );
                LayoutMgr.First.moveProp( Row: 2, Column: 2, PropName: CswNbtObjClassUser.PropertyName.WorkUnit );
                LayoutMgr.First.moveProp( Row: 3, Column: 2, PropName: CswNbtObjClassUser.PropertyName.EmployeeId );
                LayoutMgr.First.moveProp( Row: 4, Column: 2, PropName: CswNbtObjClassUser.PropertyName.Barcode );
                LayoutMgr.First.moveProp( Row: 5, Column: 2, PropName: CswNbtObjClassUser.PropertyName.LastLogin );
                LayoutMgr.First.moveProp( Row: 6, Column: 2, PropName: CswNbtObjClassUser.PropertyName.AccountLocked );
                LayoutMgr.First.moveProp( Row: 7, Column: 2, PropName: CswNbtObjClassUser.PropertyName.FailedLoginCount );
                LayoutMgr.First.moveProp( Row: 8, Column: 2, PropName: CswNbtObjClassUser.PropertyName.Archived );

                //Profile tab
                LayoutMgr["Profile"].copyProp( Row: 1, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Username );
                LayoutMgr["Profile"].copyProp( Row: 2, Column: 1, PropName: CswNbtObjClassUser.PropertyName.FirstName );
                LayoutMgr["Profile"].copyProp( Row: 3, Column: 1, PropName: CswNbtObjClassUser.PropertyName.LastName );
                LayoutMgr["Profile"].copyProp( Row: 4, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Phone );
                LayoutMgr["Profile"].copyProp( Row: 5, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Email );
                LayoutMgr["Profile"].copyProp( Row: 6, Column: 1, PropName: CswNbtObjClassUser.PropertyName.Password );
                LayoutMgr["Profile"].copyProp( Row: 7, Column: 1, PropName: CswNbtObjClassUser.PropertyName.PageSize );

                LayoutMgr["Profile"].copyProp( Row: 1, Column: 2, PropName: CswNbtObjClassUser.PropertyName.FavoriteActions );
                LayoutMgr["Profile"].copyProp( Row: 2, Column: 2, PropName: CswNbtObjClassUser.PropertyName.FavoriteViews );
                LayoutMgr["Profile"].copyProp( Row: 3, Column: 2, PropName: CswNbtObjClassUser.PropertyName.DateFormat );
                LayoutMgr["Profile"].copyProp( Row: 4, Column: 2, PropName: CswNbtObjClassUser.PropertyName.TimeFormat );
                LayoutMgr["Profile"].copyProp( Row: 5, Column: 2, PropName: CswNbtObjClassUser.PropertyName.Language );
                LayoutMgr["Profile"].copyProp( Row: 6, Column: 2, PropName: CswNbtObjClassUser.PropertyName.Jurisdiction );
                LayoutMgr["Profile"].copyProp( Row: 7, Column: 2, PropName: CswNbtObjClassUser.PropertyName.DefaultLocation );
                LayoutMgr["Profile"].copyProp( Row: 8, Column: 2, PropName: CswNbtObjClassUser.PropertyName.DefaultPrinter );

                CswNbtMetaDataObjectClass RoleOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.RoleClass );
                Collection<CswNbtObjClassRole> Roles = new Collection<CswNbtObjClassRole>();
                foreach( CswNbtObjClassRole Role in RoleOC.getNodes( forceReInit: true, includeSystemNodes: false, IncludeDefaultFilters: false ) )
                {
                    Roles.Add( Role );
                }
                LayoutMgr["Profile"].setPermit( CswEnumNbtNodeTypeTabPermission.Edit, true, Roles );

            }
            catch( Exception )
            {
                throw new CswDniException("User layout update failed.");
            }

        } // update()