示例#1
0
 protected override bool onButtonClick(NbtButtonData ButtonData)
 {
     if (null != ButtonData.NodeTypeProp)
     {
         string OCPPropName = ButtonData.NodeTypeProp.getObjectClassPropName();
         switch (OCPPropName)
         {
         case PropertyName.Request:
             if (_CswNbtResources.Permit.can(CswEnumNbtActionName.Submit_Request))
             {
                 ButtonData.Action = CswEnumNbtButtonAction.request;
                 CswNbtActRequesting       RequestAct  = new CswNbtActRequesting(_CswNbtResources);
                 CswNbtObjClassRequestItem RequestItem = RequestAct.makeEnterprisePartRequestItem(this, ButtonData);
                 ButtonData.Data["titleText"]             = "Add to Cart: " + RequestItem.Type.Value;
                 ButtonData.Data["requestItemProps"]      = RequestAct.getRequestItemAddProps(RequestItem.Node);
                 ButtonData.Data["requestItemNodeTypeId"] = RequestItem.NodeTypeId;
             }
             else
             {
                 throw new CswDniException(CswEnumErrorType.Warning, "You do not have permission to the Submit Request action.", "You do not have permission to the Submit Request action.");
             }
             break;
         }
     }
     return(true);
 }
示例#2
0
        /// <summary>
        /// Instance a new EnterprisePart Request Item
        /// </summary>
        public CswNbtObjClassRequestItem makeEnterprisePartRequestItem(CswNbtObjClassEnterprisePart EnterprisePart, CswNbtObjClass.NbtButtonData ButtonData)
        {
            checkForCentralInventoryGroups(_CswNbtResources);
            CswNbtObjClassRequestItem RequestItem   = null;
            CswNbtMetaDataObjectClass RequestItemOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RequestItemClass);
            CswNbtMetaDataNodeType    RequestItemNT = RequestItemOC.getNodeTypes().FirstOrDefault();
            CswNbtSdTabsAndProps      PropsAction   = new CswNbtSdTabsAndProps(_CswNbtResources);

            if (null != RequestItemNT)
            {
                RequestItem = PropsAction.getAddNodeAndPostChanges(RequestItemNT, delegate(CswNbtNode NewNode)
                {
                    CswNbtObjClassRequestItem RequestItemNode    = NewNode;
                    RequestItemNode.EnterprisePart.RelatedNodeId = EnterprisePart.NodeId;
                    RequestItemNode.Type.Value = CswNbtObjClassRequestItem.Types.EnterprisePart;
                    if (null != _ThisUser.DefaultLocationId)
                    {
                        CswNbtObjClassLocation DefaultAsLocation = _CswNbtResources.Nodes.GetNode(_ThisUser.DefaultLocationId);
                        if (null != DefaultAsLocation)
                        {
                            RequestItemNode.Location.SelectedNodeId = DefaultAsLocation.NodeId;
                            RequestItemNode.Location.CachedNodeName = DefaultAsLocation.Location.CachedNodeName;
                            RequestItemNode.Location.CachedPath     = DefaultAsLocation.Location.CachedPath;
                        }
                    }
                });
            }
            return(RequestItem);
        }
示例#3
0
        protected override void OnEnable()
        {
            //Show the following Container properties...
            //   Requests
            //   Submitted Requests
            CswNbtMetaDataObjectClass ContainerOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ContainerClass);

            foreach (int NodeTypeId in ContainerOC.getNodeTypeIds().Keys)
            {
                _CswNbtResources.Modules.ShowProp(NodeTypeId, CswNbtObjClassContainer.PropertyName.Request);
                _CswNbtResources.Modules.ShowProp(NodeTypeId, CswNbtObjClassContainer.PropertyName.SubmittedRequests);
            }

            //Show the following Inventory Group properties...
            //   Limit Request Delivery Location
            CswNbtMetaDataObjectClass InventoryGroupOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.InventoryGroupClass);

            foreach (int NodeTypeId in InventoryGroupOC.getNodeTypeIds().Keys)
            {
                _CswNbtResources.Modules.ShowProp(NodeTypeId, CswNbtObjClassInventoryGroup.PropertyName.LimitRequestDeliveryLocation);
            }

            //Show the following Location properties...
            //   Request Delivery Location
            CswNbtMetaDataObjectClass LocationOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.LocationClass);

            foreach (int NodeTypeId in LocationOC.getNodeTypeIds().Keys)
            {
                _CswNbtResources.Modules.ShowProp(NodeTypeId, CswNbtObjClassLocation.PropertyName.RequestDeliveryLocation);
            }

            //Show the following Material properties...
            //   Request Button
            CswNbtMetaDataPropertySet MaterialSet = _CswNbtResources.MetaData.getPropertySet(CswEnumNbtPropertySetName.MaterialSet);

            foreach (CswNbtMetaDataObjectClass MaterialOC in MaterialSet.getObjectClasses())
            {
                foreach (int NodeTypeId in MaterialOC.getNodeTypeIds().Keys)
                {
                    _CswNbtResources.Modules.ShowProp(NodeTypeId, CswNbtObjClassChemical.PropertyName.Request);
                }
            }

            //Show all views in the Requests category
            _CswNbtResources.Modules.ToggleViewsInCategory(false, "Requests", CswEnumNbtViewVisibility.Global);

            //Show the request fulfiller Role/User
            _CswNbtResources.Modules.ToggleRoleNodes(false, "request_fulfiller");
            _CswNbtResources.Modules.ToggleUserNodes(false, "request_fulfiller");
            //TODO - Case 31274 - Add CISPro_Guardian Role/User to this list

            // Case 28930 - Enable Scheduled Rules
            _CswNbtResources.Modules.ToggleScheduledRule(CswEnumNbtScheduleRuleNames.GenRequest, Disabled: false);

            //Case 31546 - If we're enabling Requesting AFTER MLM, we need to show the MLM props
            if (_CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.MLM))
            {
                CswNbtObjClassRequestItem.ToggleMLMProps(_CswNbtResources, false);
            }
        }
示例#4
0
        }//importC3Product()

        public static void CreateMaterialRequestFromC3(ICswResources CswResources, CswNbtC3CreateMaterialReturn Return, CswNbtC3Import.Request Request)
        {
            CswNbtResources           NbtResources       = (CswNbtResources)CswResources;
            CswNbtMetaDataObjectClass RequestItemOC      = NbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RequestItemClass);
            CswNbtMetaDataNodeType    FirstRequestItemNT = RequestItemOC.getNodeTypes().FirstOrDefault();

            if (null == FirstRequestItemNT)
            {
                throw new CswDniException(CswEnumErrorType.Error, "Cannot create a Create Material Request because there are no Request Item Types", "Cannot create a Create Material Request when there are no Request Item Nodetypes");
            }

            CswNbtObjClassRequestItem RequestItemNode = NbtResources.Nodes.makeNodeFromNodeTypeId(FirstRequestItemNT.NodeTypeId, IsTemp : true, OnAfterMakeNode : delegate(CswNbtNode NewNode)
            {
                CswNbtObjClassRequestItem AsRequestItem = NewNode;
                AsRequestItem.Type.Value        = CswNbtObjClassRequestItem.Types.MaterialCreate;
                AsRequestItem.C3CDBRegNo.Value  = Request.Cdbregno;
                AsRequestItem.C3ProductId.Value = Request.C3ProductId;

                AsRequestItem.NewMaterialTradename.Text = "TEST THING";
            });

            //RequestItemNode.NewMaterialSupplier.setHidden( true, true );
            //RequestItemNode.NewMaterialTradename.setHidden( true, true );
            //RequestItemNode.NewMaterialPartNo.setHidden( true, true );
            //RequestItemNode.Location.setHidden( true, true );
            //RequestItemNode.postChanges( false );

            Return.Data.state = new C3CreateMaterialResponse.State();
            Return.Data.state.materialType      = new C3CreateMaterialResponse.State.MaterialType();
            Return.Data.state.materialId        = RequestItemNode.NodeId.ToString();
            Return.Data.state.materialType.name = FirstRequestItemNT.NodeTypeName;
            Return.Data.state.materialType.val  = FirstRequestItemNT.NodeTypeId;
        }
 protected CswNbtRequestItemType(CswNbtResources CswNbtResources, CswNbtObjClassRequestItem RequestItem)
 {
     _CswNbtResources = CswNbtResources;
     _RequestItem     = RequestItem;
     //Set RequestItemType explicitly in the constructor in case the referenced RequestItem object's Type value changes
     RequestItemType = _RequestItem.Type.Value;
 }
        /// <summary>
        /// WCF method to fulfill a Move Containers request
        /// </summary>
        public static void fulfillContainerMoveRequest(ICswResources CswResources, CswNbtRequestDataModel.CswRequestReturn Ret, CswNbtRequestDataModel.RequestFulfill Request)
        {
            CswNbtResources           NbtResources = _validate(CswResources);
            CswNbtObjClassRequestItem RequestItem  = NbtResources.Nodes[Request.RequestItemId];

            if (null != RequestItem)
            {
                Int32 ContainersMoved = moveContainers(NbtResources, RequestItem, Request);
                Ret.Data.Succeeded = ContainersMoved > 0;
                if (Ret.Data.Succeeded)
                {
                    if (CswTools.IsDouble(RequestItem.TotalMoved.Value))
                    {
                        RequestItem.TotalMoved.Value += ContainersMoved;
                    }
                    else
                    {
                        RequestItem.TotalMoved.Value = ContainersMoved;
                    }
                    RequestItem.Status.Value = CswNbtObjClassRequestItem.Statuses.Moved;
                    RequestItem.FulfillmentHistory.AddComment("Moved " + ContainersMoved + " containers to " +
                                                              CswNbtNode.getNodeLink(RequestItem.Location.SelectedNodeId, RequestItem.Location.CachedFullPath));
                    RequestItem.postChanges(ForceUpdate: false);
                }
            }
        }
示例#7
0
        private bool _allRequestItemsCompleted(ICswNbtTree RequestItemTree)
        {
            bool allRequestItemsCompleted = true;
            int  RequestCount             = RequestItemTree.getChildNodeCount();

            if (RequestCount == 1)
            {
                RequestItemTree.goToNthChild(0);

                if (RequestItemTree.getChildNodeCount() > 0)
                {
                    for (Int32 N = 0; N < RequestItemTree.getChildNodeCount(); N += 1)
                    {
                        RequestItemTree.goToNthChild(N);
                        CswNbtObjClassRequestItem RequestItem = RequestItemTree.getNodeForCurrentPosition();
                        if (null != RequestItem)
                        {
                            if (CswNbtObjClassRequestItem.Statuses.Completed != RequestItem.Status.Value)
                            {
                                allRequestItemsCompleted = false;
                            }
                        }
                        RequestItemTree.goToParentNode();
                    }
                }
            }
            return(allRequestItemsCompleted);
        }
示例#8
0
        private void onSubmittedDatePropChange(CswNbtNodeProp NodeProp, bool Creating)
        {
            if (SubmittedDate.DateTimeValue != DateTime.MinValue)
            {
                ICswNbtTree Tree         = _getRelatedRequestItemsTree(FilterByStatus: CswNbtObjClassRequestItem.Statuses.Pending);
                int         RequestCount = Tree.getChildNodeCount();
                if (RequestCount == 1)
                {
                    Tree.goToNthChild(0);

                    Int32 RequestItemNodeCount = Tree.getChildNodeCount();
                    if (RequestItemNodeCount > 0)
                    {
                        for (Int32 N = 0; N < RequestItemNodeCount; N += 1)
                        {
                            Tree.goToNthChild(N);
                            CswNbtObjClassRequestItem RequestItem = Tree.getNodeForCurrentPosition();
                            RequestItem.Status.Value = CswNbtObjClassRequestItem.Statuses.Submitted;
                            RequestItem.Request.RefreshNodeName();
                            RequestItem.Name.RecalculateReferenceValue();
                            RequestItem.postChanges(ForceUpdate: false);
                            Tree.goToParentNode();
                        }
                    }
                }
            }
        }
示例#9
0
        public void resetCartCounts(CswNbtObjClassUser User)
        {
            if (null != User)
            {
                CswNbtObjClassUser.Cache UserCache = User.CurrentCache;
                UserCache.CartCounts = new CswNbtObjClassUser.Cache.Cart();

                CswNbtView ReqView = new CswNbtView(_CswNbtResources);
                CswNbtMetaDataObjectClass RequestOc = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RequestClass);
                CswNbtViewRelationship    RootVr    = ReqView.AddViewRelationship(RequestOc, IncludeDefaultFilters: false);

                CswNbtMetaDataObjectClassProp RequestorOcp = RequestOc.getObjectClassProp(CswNbtObjClassRequest.PropertyName.Requestor);
                ReqView.AddViewPropertyAndFilter(RootVr, RequestorOcp, FilterMode: CswEnumNbtFilterMode.Equals, SubFieldName: CswEnumNbtSubFieldName.NodeID, Value: User.NodeId.PrimaryKey.ToString());

                CswNbtMetaDataObjectClassProp RequestOcp     = _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Request);
                CswNbtViewRelationship        RequestItemRel = ReqView.AddViewRelationship(RootVr,
                                                                                           CswEnumNbtViewPropOwnerType.Second,
                                                                                           RequestOcp, IncludeDefaultFilters: false);

                ICswNbtTree Tree         = _CswNbtResources.Trees.getTreeFromView(ReqView, IncludeSystemNodes: false, RequireViewPermissions: false, IncludeHiddenNodes: false);
                Int32       RequestCount = Tree.getChildNodeCount();
                if (RequestCount > 0)
                {
                    for (Int32 R = 0; R < RequestCount; R += 1)
                    {
                        Tree.goToNthChild(R);
                        CswNbtObjClassRequest Request = Tree.getNodeForCurrentPosition();
                        if (Request.IsFavorite.Checked == CswEnumTristate.True)
                        {
                            UserCache.CartCounts.FavoriteRequestItems += Tree.getChildNodeCount();
                        }
                        else if (Request.IsRecurring.Checked == CswEnumTristate.True)
                        {
                            UserCache.CartCounts.RecurringRequestItems += Tree.getChildNodeCount();
                        }
                        else
                        {
                            for (Int32 I = 0; I < Tree.getChildNodeCount(); I += 1)
                            {
                                Tree.goToNthChild(I);
                                CswNbtObjClassRequestItem RequestItem = Tree.getNodeForCurrentPosition();
                                if (RequestItem.Status.Text == CswNbtObjClassRequestItem.Statuses.Pending)
                                {
                                    UserCache.CartCounts.PendingRequestItems += 1;
                                }
                                else//Won't this also include completed and cancelled Request Items?  Is that what we want?
                                {
                                    UserCache.CartCounts.SubmittedRequestItems += 1;
                                }
                                Tree.goToParentNode();
                            }
                        }
                        Tree.goToParentNode();
                    }
                }
                User.CurrentCache = UserCache;
                User.postChanges(ForceUpdate: false);
            }
        }
 private bool _doesRequestItemCopyNow(CswNbtObjClassRequestItem CurrentRequestItem)
 {
     //A lot of these checks seem excessive...
     return(null != CurrentRequestItem &&                                                                     // The Request Item isn't null
            CurrentRequestItem.IsRecurring.Checked == CswEnumTristate.True &&                                 // This is actually a recurring request
            false == CurrentRequestItem.RecurringFrequency.Empty &&                                           // The recurring frequency has been defined
            (CurrentRequestItem.RecurringFrequency.RateInterval.RateType != CswEnumRateIntervalType.Hourly || // Recurring on any frequency other than hourly
             (CurrentRequestItem.NextReorderDate.DateTimeValue.Date <= DateTime.Today &&                      // Recurring no more than once per hour
              DateTime.Now.AddHours(1).Subtract(CurrentRequestItem.NextReorderDate.DateTimeValue).Hours >= 1)));
 }
        private void _processRequest(String RequestItemId, CswNbtPropertySetMaterial Material)
        {
            CswNbtObjClassRequestItem RequestItemMaterialCreate = _CswNbtResources.Nodes[RequestItemId];

            RequestItemMaterialCreate.Material.RelatedNodeId = Material.NodeId;
            RequestItemMaterialCreate.Status.Value           = CswNbtObjClassRequestItem.Statuses.Created;
            RequestItemMaterialCreate.Type.Value             = CswNbtObjClassRequestItem.Types.MaterialBulk;
            RequestItemMaterialCreate.FulfillmentHistory.AddComment("Created " + Material.Node.NodeLink);
            RequestItemMaterialCreate.postChanges(ForceUpdate: false);
        }
        /// <summary>
        /// Returns a view used to show the containers available for dispense for the given Request Item
        /// </summary>
        /// <returns></returns>
        public CswNbtView getDispensibleContainersView(CswPrimaryKey RequestItemId)
        {
            CswNbtView Ret = new CswNbtView(_CswNbtResources);

            CswNbtObjClassRequestItem NodeAsRequestItem = _CswNbtResources.Nodes[RequestItemId];

            if (null != NodeAsRequestItem)
            {
                //TODO - if we're dispensing a specific container or EP, we don't care about the specific material
                CswNbtNode TargetNode = _CswNbtResources.Nodes[NodeAsRequestItem.Target.RelatedNodeId];
                if (null != TargetNode)
                {
                    Ret.ViewName = "Containers of " + TargetNode.NodeName;
                    Ret.ViewMode = CswEnumNbtViewRenderingMode.Grid;
                    Ret.Category = "Dispensing";

                    CswNbtMetaDataObjectClass ContainerOc  = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ContainerClass);
                    CswNbtViewRelationship    ContainerRel = Ret.AddViewRelationship(ContainerOc, true);
                    CswNbtViewProperty        BarcodeVp    = Ret.AddViewProperty(ContainerRel, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Barcode));

                    //Filter Containers by Materials in Requested EP
                    if (NodeAsRequestItem.Type.Value == CswNbtObjClassRequestItem.Types.EnterprisePart)
                    {
                        CswCommaDelimitedString EPMaterialPks = _getMaterialPKsForEP(NodeAsRequestItem.EnterprisePart.RelatedNodeId);
                        Ret.AddViewPropertyAndFilter(ContainerRel, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Material), SubFieldName: CswEnumNbtSubFieldName.NodeID, FilterMode: CswEnumNbtFilterMode.In, Value: EPMaterialPks.ToString(), ShowInGrid: false);
                    }
                    else//Filters Containers by Requested Material
                    {
                        Ret.AddViewPropertyAndFilter(ContainerRel, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Material), SubFieldName: CswEnumNbtSubFieldName.NodeID, Value: TargetNode.NodeId.PrimaryKey.ToString(), ShowInGrid: false);
                    }
                    Ret.AddViewPropertyAndFilter(ContainerRel, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Missing), FilterMode: CswEnumNbtFilterMode.NotEquals, Value: CswEnumTristate.True, ShowInGrid: false);
                    Ret.AddViewPropertyAndFilter(ContainerRel, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Quantity), SubFieldName: CswEnumNbtSubFieldName.Value, FilterMode: CswEnumNbtFilterMode.GreaterThan, Value: "0");
                    Ret.AddViewPropertyAndFilter(ContainerRel, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Status), FilterMode: CswEnumNbtFilterMode.NotEquals, Value: CswEnumNbtContainerStatuses.Expired, ShowInGrid: false);
                    Ret.AddViewProperty(ContainerRel, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Location));

                    CswNbtMetaDataObjectClass     LocationOc        = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.LocationClass);
                    CswNbtMetaDataObjectClassProp InventoryGroupOcp = LocationOc.getObjectClassProp(CswNbtObjClassLocation.PropertyName.InventoryGroup);
                    CswNbtViewRelationship        LocationVr        = Ret.AddViewRelationship(ContainerRel, CswEnumNbtViewPropOwnerType.First, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Location), IncludeDefaultFilters: true);
                    if (CswTools.IsPrimaryKey(NodeAsRequestItem.InventoryGroup.RelatedNodeId))   //Filter by Inventory Group
                    {
                        Ret.AddViewPropertyAndFilter(LocationVr, InventoryGroupOcp, SubFieldName: CswEnumNbtSubFieldName.NodeID, Value: NodeAsRequestItem.InventoryGroup.RelatedNodeId.PrimaryKey.ToString(), ShowInGrid: false);
                    }
                    else
                    {
                        Ret.AddViewPropertyAndFilter(LocationVr, InventoryGroupOcp, SubFieldName: CswEnumNbtSubFieldName.NodeID, FilterMode: CswEnumNbtFilterMode.Null, ShowInGrid: false);
                    }

                    if (NodeAsRequestItem.Type.Value == CswNbtObjClassRequestItem.Types.MaterialSize) //Filter By Size (if present)
                    {
                        Ret.AddViewPropertyAndFilter(ContainerRel, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Size), SubFieldName: CswEnumNbtSubFieldName.NodeID, Value: NodeAsRequestItem.Size.RelatedNodeId.PrimaryKey.ToString(), ShowInGrid: false);
                    }
                }
            }
            return(Ret);
        }
        protected override void afterPromoteNodeLogic()
        {
            CswNbtObjClassRequestItem RequestItemNode = _CswNbtResources.Nodes[RequestItem.RelatedNodeId];

            if (null != RequestItemNode)
            {
                RequestItemNode.FulfillmentHistory.AddComment("Received " + Node.NodeLink);
                RequestItemNode.Status.Value = CswNbtObjClassRequestItem.Statuses.Received;
                RequestItemNode.postChanges(false);
            }
        }
示例#14
0
        /// <summary>
        /// Instance a new Container Request Item based on the selected button option - the type will either be Dispense, Move, or Dispose.
        /// </summary>
        public CswNbtObjClassRequestItem makeContainerRequestItem(CswNbtObjClassContainer Container, CswNbtObjClass.NbtButtonData ButtonData)
        {
            checkForCentralInventoryGroups(_CswNbtResources);
            CswNbtObjClassRequestItem RequestItem;
            CswNbtMetaDataObjectClass RequestItemOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RequestItemClass);
            CswNbtMetaDataNodeType    RequestItemNT = RequestItemOC.getNodeTypes().FirstOrDefault();
            CswNbtSdTabsAndProps      PropsAction   = new CswNbtSdTabsAndProps(_CswNbtResources);

            RequestItem = PropsAction.getAddNodeAndPostChanges(RequestItemNT, delegate(CswNbtNode NewNode)
            {
                CswNbtObjClassRequestItem RequestItemNode = NewNode;
                if (null != getCurrentRequestNodeId() && null != Container)
                {
                    RequestItemNode.Container.RelatedNodeId = Container.NodeId;
                    RequestItemNode.Material.RelatedNodeId  = Container.Material.RelatedNodeId;
                    CswPrimaryKey SelectedLocationId        = CswTools.IsPrimaryKey(_ThisUser.DefaultLocationId) ?
                                                              _ThisUser.DefaultLocationId :
                                                              Container.Location.SelectedNodeId;
                    ButtonData.Action = CswEnumNbtButtonAction.request;
                    switch (ButtonData.SelectedText)
                    {
                    case CswEnumNbtContainerRequestMenu.Dispense:
                        RequestItemNode.Type.Value              = CswNbtObjClassRequestItem.Types.ContainerDispense;
                        RequestItemNode.Quantity.UnitId         = Container.Quantity.UnitId;
                        RequestItemNode.Size.RelatedNodeId      = Container.Size.RelatedNodeId;
                        RequestItemNode.Location.SelectedNodeId = SelectedLocationId;
                        //Scope available units of measure on Quantity based on the Container's Material
                        CswNbtNode MaterialNode = _CswNbtResources.Nodes[Container.Material.RelatedNodeId];
                        if (null != MaterialNode)
                        {
                            CswNbtUnitViewBuilder Vb = new CswNbtUnitViewBuilder(_CswNbtResources);
                            Vb.setQuantityUnitOfMeasureView(MaterialNode, RequestItemNode.Quantity);
                        }
                        break;

                    case CswEnumNbtContainerRequestMenu.Dispose:
                        RequestItemNode.Type.Value = CswNbtObjClassRequestItem.Types.ContainerDispose;
                        RequestItemNode.Location.SelectedNodeId = Container.Location.SelectedNodeId;
                        break;

                    case CswEnumNbtContainerRequestMenu.Move:
                        RequestItemNode.Type.Value = CswNbtObjClassRequestItem.Types.ContainerMove;
                        RequestItemNode.Location.SelectedNodeId = SelectedLocationId;
                        break;
                    }
                    RequestItemNode.Location.RefreshNodeName();
                }
            });
            if (null == RequestItem)
            {
                throw new CswDniException(CswEnumErrorType.Error, "Could not generate a new request item.", "Failed to create a new Request Item node.");
            }
            return(RequestItem);
        }
示例#15
0
        } // update()

        private void _updateRequestItems( CswNbtMetaDataNodeType RequestItemNT, CswNbtMetaDataNodeTypeProp ItemNumberNTP )
        {
            CswNbtView RequestItems = _CswNbtSchemaModTrnsctn.makeNewView( "RequestItemsNoItemNo31861", CswEnumNbtViewVisibility.Hidden );
            CswNbtViewRelationship Parent = RequestItems.AddViewRelationship( RequestItemNT, false );
            RequestItems.AddViewPropertyAndFilter( Parent, ItemNumberNTP, FilterMode : CswEnumNbtFilterMode.Null );

            ICswNbtTree RequestItemsTree = _CswNbtSchemaModTrnsctn.getTreeFromView( RequestItems, false );
            for( int i = 0; i < RequestItemsTree.getChildNodeCount(); i++ )
            {
                RequestItemsTree.goToNthChild( i );
                CswNbtObjClassRequestItem RequestItem = RequestItemsTree.getNodeForCurrentPosition();
                RequestItem.ItemNumber.setSequenceValue();
                RequestItem.postChanges( false );
                RequestItemsTree.goToParentNode();
            }
        }
 //updates total dispensed for all dispense request fulfillment actions 
 private void _onCreateFromRequestItem()
 {
     if( CswTools.IsPrimaryKey( RequestItem.RelatedNodeId ) )
     {
         CswNbtObjClassRequestItem RequestItemNode = _CswNbtResources.Nodes[RequestItem.RelatedNodeId];
         if( null != RequestItemNode )
         {
             if( Type.Value == CswEnumNbtContainerDispenseType.Dispense.ToString() )
             {
                 CswNbtUnitConversion Conversion = new CswNbtUnitConversion( _CswNbtResources, QuantityDispensed.UnitId, RequestItemNode.TotalDispensed.UnitId, RequestItemNode.Material.RelatedNodeId );
                 double DispensedQuantity = Conversion.convertUnit( QuantityDispensed.Quantity );
                 RequestItemNode.TotalDispensed.Quantity -= DispensedQuantity; // Subtracting a negative number in order to add
                 RequestItemNode.FulfillmentHistory.AddComment( "Dispensed " + QuantityDispensed.Gestalt + " into " + CswNbtNode.getNodeLink( DestinationContainer.RelatedNodeId, DestinationContainer.Gestalt ) );
                 RequestItemNode.Status.Value = CswNbtObjClassRequestItem.Statuses.Dispensed;
             }
             RequestItemNode.postChanges( false );
         }
     }
 }
        private static Int32 moveContainers(CswNbtResources NbtResources, CswNbtObjClassRequestItem RequestItem, CswNbtRequestDataModel.RequestFulfill Request)
        {
            Int32 Ret = 0;

            if (null != RequestItem)
            {
                foreach (string ContainerId in Request.ContainerIds)
                {
                    CswNbtObjClassContainer ContainerNode = NbtResources.Nodes[ContainerId];
                    if (null != ContainerNode)
                    {
                        ContainerNode.Location.SelectedNodeId = RequestItem.Location.SelectedNodeId;
                        ContainerNode.Location.RefreshNodeName();
                        ContainerNode.postChanges(ForceUpdate: false);
                        Ret += 1;
                    }
                }
            }
            return(Ret);
        }
示例#18
0
        /// <summary>
        /// Instance a new Material Request Item based on the selected button option - the type will either be By Bulk or By Size.
        /// </summary>
        public CswNbtObjClassRequestItem makeMaterialRequestItem(CswNbtPropertySetMaterial Material, CswNbtObjClass.NbtButtonData ButtonData)
        {
            checkForCentralInventoryGroups(_CswNbtResources);
            CswNbtObjClassRequestItem RequestItem   = null;
            CswNbtMetaDataObjectClass RequestItemOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RequestItemClass);
            CswNbtMetaDataNodeType    RequestItemNT = RequestItemOC.getNodeTypes().FirstOrDefault();
            CswNbtSdTabsAndProps      PropsAction   = new CswNbtSdTabsAndProps(_CswNbtResources);

            if (null != RequestItemNT)
            {
                RequestItem = PropsAction.getAddNodeAndPostChanges(RequestItemNT, delegate(CswNbtNode NewNode)
                {
                    CswNbtObjClassRequestItem RequestItemNode = NewNode;
                    RequestItemNode.Material.RelatedNodeId    = Material.NodeId;
                    if (null != _ThisUser.DefaultLocationId)
                    {
                        CswNbtObjClassLocation DefaultAsLocation = _CswNbtResources.Nodes.GetNode(_ThisUser.DefaultLocationId);
                        if (null != DefaultAsLocation)
                        {
                            RequestItemNode.Location.SelectedNodeId = DefaultAsLocation.NodeId;
                            RequestItemNode.Location.CachedNodeName = DefaultAsLocation.Location.CachedNodeName;
                            RequestItemNode.Location.CachedPath     = DefaultAsLocation.Location.CachedPath;
                        }
                    }
                    switch (ButtonData.SelectedText)
                    {
                    case CswNbtPropertySetMaterial.CswEnumRequestOption.Size:
                        RequestItemNode.Type.Value = CswNbtObjClassRequestItem.Types.MaterialSize;
                        break;

                    default:     //Request by Bulk
                        RequestItemNode.Type.Value = CswNbtObjClassRequestItem.Types.MaterialBulk;
                        break;
                    }
                });
            }
            return(RequestItem);
        }
示例#19
0
        protected override bool onButtonClick( NbtButtonData ButtonData )
        {
            if( null != ButtonData.NodeTypeProp )
            {
                bool HasPermission = false;
                string OCPPropName = ButtonData.NodeTypeProp.getObjectClassPropName();
                switch( OCPPropName )
                {
                    case PropertyName.Request:
                        if( _CswNbtResources.Permit.can( CswEnumNbtActionName.Submit_Request ) )
                        {
                            // Case CIS-52280
                            if( Obsolete.Checked == CswEnumTristate.True )
                            {
                                throw new CswDniException( CswEnumErrorType.Warning, "Can't request Material " + TradeName + " because it is obsolete.", "Material is obsolete" );
                            }

                            HasPermission = true;
                            CswNbtActRequesting RequestAct = new CswNbtActRequesting( _CswNbtResources );

                            CswNbtObjClassRequestItem RequestItem = RequestAct.makeMaterialRequestItem( this, ButtonData );

                            ButtonData.Data["requestaction"] = ButtonData.SelectedText;
                            //ButtonData.Data["requestaction"] = OCPPropName;
                            //Case 31298: Default Option Text "Request" != "Request By Bulk"
                            if( ButtonData.SelectedText == "Request" )
                            {
                                ButtonData.SelectedText = CswEnumRequestOption.Bulk;
                            }
                            ButtonData.Data["titleText"] = ButtonData.SelectedText + " for " + TradeName.Text;
                            ButtonData.Data["requestItemProps"] = RequestAct.getRequestItemAddProps( RequestItem.Node );
                            ButtonData.Data["requestItemNodeTypeId"] = RequestItem.NodeTypeId;
                            ButtonData.Data["relatednodeid"] = NodeId.ToString();
                            ButtonData.Action = CswEnumNbtButtonAction.request;
                        }
                        break;
                    case PropertyName.Receive:
                        if( _CswNbtResources.Permit.can( CswEnumNbtActionName.Receiving ) )
                        {
                            // Case CIS-52280
                            if( Obsolete.Checked == CswEnumTristate.True )
                            {
                                throw new CswDniException( CswEnumErrorType.Warning, "Can't receive Material " + TradeName + " because it is obsolete.", "Material is obsolete" );
                            }

                            HasPermission = true;
                            CswNbtActReceiving Act = new CswNbtActReceiving( _CswNbtResources, NodeId );
                            _CswNbtResources.setAuditActionContext( CswEnumNbtActionName.Receiving );

                            Action<CswNbtNode> After = delegate( CswNbtNode NewNode )
                                {
                                    CswNbtObjClassContainer newContainer = NewNode;
                                    //Case 29436
                                    if( newContainer.isLocationInAccessibleInventoryGroup( _CswNbtResources.CurrentNbtUser.DefaultLocationId ) )
                                    {
                                        newContainer.Location.SelectedNodeId = _CswNbtResources.CurrentNbtUser.DefaultLocationId;
                                    }
                                    newContainer.Owner.RelatedNodeId = _CswNbtResources.CurrentNbtUser.UserId;
                                    DateTime ExpirationDate = getDefaultExpirationDate( DateTime.Now );
                                    if( DateTime.MinValue != ExpirationDate )
                                    {
                                        newContainer.ExpirationDate.DateTimeValue = ExpirationDate;
                                    }
                                    //Container.postChanges( false );
                                };
                            CswNbtObjClassContainer Container = Act.makeContainer( After );

                            ButtonData.Data["state"] = new JObject();
                            ButtonData.Data["state"]["materialId"] = NodeId.ToString();
                            ButtonData.Data["state"]["materialNodeTypeId"] = NodeTypeId;
                            ButtonData.Data["state"]["tradeName"] = TradeName.Text;
                            ButtonData.Data["state"]["nodeName"] = NodeName;

                            Int32 ContainerLimit = CswConvert.ToInt32( _CswNbtResources.ConfigVbls.getConfigVariableValue( CswEnumNbtConfigurationVariables.container_receipt_limit.ToString() ) );
                            ButtonData.Data["state"]["containerlimit"] = ContainerLimit;
                            ButtonData.Data["state"]["containerNodeId"] = Container.NodeId.ToString();
                            ButtonData.Data["state"]["containerNodeTypeId"] = Container.NodeTypeId;
                            bool customBarcodes = CswConvert.ToBoolean( _CswNbtResources.ConfigVbls.getConfigVariableValue( CswEnumNbtConfigurationVariables.custom_barcodes.ToString() ) );
                            ButtonData.Data["state"]["customBarcodes"] = customBarcodes;
                            ButtonData.Data["state"]["nodetypename"] = this.NodeType.NodeTypeName;
                            ButtonData.Data["state"]["containerAddLayout"] = Act.getContainerAddProps( Container );

                            onReceiveButtonClick( ButtonData );
                            _setCofAData( ButtonData );
                            ButtonData.Action = CswEnumNbtButtonAction.receive;
                        }
                        break;
                    case CswNbtObjClass.PropertyName.Save:
                        HasPermission = true;
                        break;
                }
                HasPermission = HasPermission || onPropertySetButtonClick( ButtonData );
                if( false == HasPermission )
                {
                    throw new CswDniException( CswEnumErrorType.Warning, "You do not have permission to the " + OCPPropName + " action.", "You do not have permission to the " + OCPPropName + " action." );
                }
            }

            return true;
        }
 public CswNbtRequestItemTypeEnterprisePart(CswNbtResources CswNbtResources, CswNbtObjClassRequestItem RequestItem) : base(CswNbtResources, RequestItem)
 {
 }
 public CswNbtRequestItemTypeMaterialCreate(CswNbtResources CswNbtResources, CswNbtObjClassRequestItem RequestItem) : base(CswNbtResources, RequestItem)
 {
 }
示例#22
0
        /// <summary>
        /// Create an ObjClass instance for given ObjectClass and Node
        /// </summary>
        public static CswNbtObjClass makeObjClass(CswNbtResources CswNbtResources, CswNbtMetaDataObjectClass ObjectClass, CswNbtNode Node = null)
        {
            CswNbtObjClass ReturnVal = null;

            switch (ObjectClass.ObjectClass)
            {
            case CswEnumNbtObjectClass.BalanceClass:
                ReturnVal = new CswNbtObjClassBalance(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.BalanceConfigurationClass:
                ReturnVal = new CswNbtObjClassBalanceConfiguration(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.BatchOpClass:
                ReturnVal = new CswNbtObjClassBatchOp(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.BiologicalClass:
                ReturnVal = new CswNbtObjClassBiological(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.CertDefCharacteristicLimitClass:
                ReturnVal = new CswNbtObjClassCertDefCharacteristicLimit(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.CertDefSpecClass:
                ReturnVal = new CswNbtObjClassCertDefSpec(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.CertificateDefinitionClass:
                ReturnVal = new CswNbtObjClassCertificateDefinition(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.CertDefConditionClass:
                ReturnVal = new CswNbtObjClassCertDefCondition(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.CertDefSpecLevelClass:
                ReturnVal = new CswNbtObjClassCertDefSpecLevel(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.CofADocumentClass:
                ReturnVal = new CswNbtObjClassCofADocument(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.CofAMethodClass:
                ReturnVal = new CswNbtObjClassCofAMethod(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.CofAMethodTemplateClass:
                ReturnVal = new CswNbtObjClassCofAMethodTemplate(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.ContainerClass:
                ReturnVal = new CswNbtObjClassContainer(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.ContainerDispenseTransactionClass:
                ReturnVal = new CswNbtObjClassContainerDispenseTransaction(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.ContainerGroupClass:
                ReturnVal = new CswNbtObjClassContainerGroup(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.ContainerLocationClass:
                ReturnVal = new CswNbtObjClassContainerLocation(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.ControlZoneClass:
                ReturnVal = new CswNbtObjClassControlZone(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.CustomerClass:
                ReturnVal = new CswNbtObjClassCustomer(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.DepartmentClass:
                ReturnVal = new CswNbtObjClassDepartment(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.DesignNodeTypeClass:
                ReturnVal = new CswNbtObjClassDesignNodeType(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.DesignNodeTypePropClass:
                ReturnVal = new CswNbtObjClassDesignNodeTypeProp(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.DesignNodeTypeTabClass:
                ReturnVal = new CswNbtObjClassDesignNodeTypeTab(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.DesignSequenceClass:
                ReturnVal = new CswNbtObjClassDesignSequence(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.DocumentClass:
                ReturnVal = new CswNbtObjClassDocument(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.DSDPhraseClass:
                ReturnVal = new CswNbtObjClassDSDPhrase(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.EnterprisePartClass:
                ReturnVal = new CswNbtObjClassEnterprisePart(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.EquipmentAssemblyClass:
                ReturnVal = new CswNbtObjClassEquipmentAssembly(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.EquipmentClass:
                ReturnVal = new CswNbtObjClassEquipment(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.EquipmentTypeClass:
                ReturnVal = new CswNbtObjClassEquipmentType(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.FeedbackClass:
                ReturnVal = new CswNbtObjClassFeedback(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.FireClassExemptAmountClass:
                ReturnVal = new CswNbtObjClassFireClassExemptAmount(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.FireClassExemptAmountSetClass:
                ReturnVal = new CswNbtObjClassFireClassExemptAmountSet(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.GenericClass:
                ReturnVal = new CswNbtObjClassGeneric(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.GHSClass:
                ReturnVal = new CswNbtObjClassGHS(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.GHSClassificationClass:
                ReturnVal = new CswNbtObjClassGHSClassification(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.GHSPhraseClass:
                ReturnVal = new CswNbtObjClassGHSPhrase(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.GHSSignalWordClass:
                ReturnVal = new CswNbtObjClassGHSSignalWord(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.InspectionDesignClass:
                ReturnVal = new CswNbtObjClassInspectionDesign(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.InspectionRouteClass:
                ReturnVal = new CswNbtObjClassInspectionRoute(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.InspectionTargetClass:
                ReturnVal = new CswNbtObjClassInspectionTarget(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.InspectionTargetGroupClass:
                ReturnVal = new CswNbtObjClassInspectionTargetGroup(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.InventoryGroupClass:
                ReturnVal = new CswNbtObjClassInventoryGroup(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.InventoryGroupPermissionClass:
                ReturnVal = new CswNbtObjClassInventoryGroupPermission(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.InventoryLevelClass:
                ReturnVal = new CswNbtObjClassInventoryLevel(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.JurisdictionClass:
                ReturnVal = new CswNbtObjClassJurisdiction(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.Level:
                ReturnVal = new CswNbtObjClassLevel(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.LocationClass:
                ReturnVal = new CswNbtObjClassLocation(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.LQNoClass:
                ReturnVal = new CswNbtObjClassLQNo(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.ManufacturerClass:
                ReturnVal = new CswNbtObjClassManufacturer(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.ManufacturerEquivalentPartClass:
                ReturnVal = new CswNbtObjClassManufacturerEquivalentPart(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.ChemicalClass:
                ReturnVal = new CswNbtObjClassChemical(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.MaterialComponentClass:
                ReturnVal = new CswNbtObjClassMaterialComponent(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.MaterialSynonymClass:
                ReturnVal = new CswNbtObjClassMaterialSynonym(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.MailReportClass:
                ReturnVal = new CswNbtObjClassMailReport(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.MailReportGroupClass:
                ReturnVal = new CswNbtObjClassMailReportGroup(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.MailReportGroupPermissionClass:
                ReturnVal = new CswNbtObjClassMailReportGroupPermission(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.MethodClass:
                ReturnVal = new CswNbtObjClassMethod(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.MethodCharacteristicClass:
                ReturnVal = new CswNbtObjClassMethodCharacteristic(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.MethodConditionClass:
                ReturnVal = new CswNbtObjClassMethodCondition(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.NonChemicalClass:
                ReturnVal = new CswNbtObjClassNonChemical(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.PrinterClass:
                ReturnVal = new CswNbtObjClassPrinter(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.PrintJobClass:
                ReturnVal = new CswNbtObjClassPrintJob(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.PrintLabelClass:
                ReturnVal = new CswNbtObjClassPrintLabel(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.ProblemClass:
                ReturnVal = new CswNbtObjClassProblem(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.ReceiptLotClass:
                ReturnVal = new CswNbtObjClassReceiptLot(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.RegulatoryListClass:
                ReturnVal = new CswNbtObjClassRegulatoryList(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.RegulatoryListCasNoClass:
                ReturnVal = new CswNbtObjClassRegulatoryListCasNo(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.RegulatoryListMemberClass:
                ReturnVal = new CswNbtObjClassRegulatoryListMember(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.RegulatoryListListCodeClass:
                ReturnVal = new CswNbtObjClassRegulatoryListListCode(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.ReportClass:
                ReturnVal = new CswNbtObjClassReport(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.ReportGroupClass:
                ReturnVal = new CswNbtObjClassReportGroup(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.ReportGroupPermissionClass:
                ReturnVal = new CswNbtObjClassReportGroupPermission(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.RequestClass:
                ReturnVal = new CswNbtObjClassRequest(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.RequestItemClass:
                ReturnVal = new CswNbtObjClassRequestItem(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.RoleClass:
                ReturnVal = new CswNbtObjClassRole(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.SDSDocumentClass:
                ReturnVal = new CswNbtObjClassSDSDocument(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.TestingLabClass:
                ReturnVal = new CswNbtObjClassTestingLab(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.GeneratorClass:
                ReturnVal = new CswNbtObjClassGenerator(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.SizeClass:
                ReturnVal = new CswNbtObjClassSize(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.TaskClass:
                ReturnVal = new CswNbtObjClassTask(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.TestingLabUserAssignmentClass:
                ReturnVal = new CswNbtObjClassTestingLabUserAssignment(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.TestingLabMethodAssignmentClass:
                ReturnVal = new CswNbtObjClassTestingLabMethodAssignment(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.UnitOfMeasureClass:
                ReturnVal = new CswNbtObjClassUnitOfMeasure(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.UserClass:
                ReturnVal = new CswNbtObjClassUser(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.VendorClass:
                ReturnVal = new CswNbtObjClassVendor(CswNbtResources, Node);
                break;

            case CswEnumNbtObjectClass.WorkUnitClass:
                ReturnVal = new CswNbtObjClassWorkUnit(CswNbtResources, Node);
                break;

            default:
                //ReturnVal = new CswNbtObjClassDefault( CswNbtResources, _CswNbtNode );
                throw (new CswDniException("There is no NbtObjClass derivative for object class " + ObjectClass.ObjectClass.ToString()));
            }//switch


            return(ReturnVal);
        } //makeObjClass()
        }//initScheduleLogicDetail()

        public void threadCallBack(ICswResources CswResources)
        {
            _LogicRunStatus = CswEnumScheduleLogicRunStatus.Running;

            CswNbtResources _CswNbtResources = (CswNbtResources)CswResources;

            _CswNbtResources.AuditContext = "Scheduler Task: " + RuleName;

            if (CswEnumScheduleLogicRunStatus.Stopping != _LogicRunStatus)
            {
                try
                {
                    if (_CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.Containers))
                    {
                        Int32 RequestsLimit = CswConvert.ToInt32(_CswNbtResources.ConfigVbls.getConfigVariableValue(CswEnumNbtConfigurationVariables.generatorlimit.ToString()));
                        if (RequestsLimit <= 0)
                        {
                            RequestsLimit = 1;
                        }

                        CswNbtActRequesting ActRequesting        = new CswNbtActRequesting(_CswNbtResources);
                        CswNbtView          AllRecurringRequests = ActRequesting.getDueRecurringRequestItemsView();
                        ICswNbtTree         Tree = _CswNbtResources.Trees.getTreeFromView(AllRecurringRequests, RequireViewPermissions: false, IncludeSystemNodes: false, IncludeHiddenNodes: false);

                        Int32  TotalRequestsProcessed = 0;
                        string RequestDescriptions    = string.Empty;
                        Int32  TotatRequests          = Tree.getChildNodeCount();

                        for (Int32 ChildN = 0; (ChildN < TotatRequests && TotalRequestsProcessed < RequestsLimit) && (CswEnumScheduleLogicRunStatus.Stopping != _LogicRunStatus); ChildN++)
                        {
                            string Description = "";
                            try
                            {
                                Tree.goToNthChild(ChildN);
                                CswNbtObjClassRequestItem CurrentRequestItem = Tree.getNodeForCurrentPosition();
                                if (_doesRequestItemCopyNow(CurrentRequestItem))
                                {
                                    Description = CurrentRequestItem.Description.StaticText;
                                    CswNbtObjClassRequest RecurringRequest = _CswNbtResources.Nodes[CurrentRequestItem.Request.RelatedNodeId];
                                    if (null != RecurringRequest)
                                    {
                                        CswNbtObjClassUser Requestor = _CswNbtResources.Nodes[RecurringRequest.Requestor.RelatedNodeId];
                                        if (null != Requestor)
                                        {
                                            CswNbtObjClassRequestItem CopiedRequestItem = _CswNbtResources.Nodes.makeNodeFromNodeTypeId(CurrentRequestItem.NodeTypeId, delegate(CswNbtNode NewNode)
                                            {
                                                // We'd get all of this for free if we used copyNode,
                                                // but then we'd have to manually do as much work in the other direction:
                                                // un-hiding properties, etc.
                                                CswNbtActRequesting ThisUserAct     = new CswNbtActRequesting(_CswNbtResources, Requestor);
                                                CswNbtObjClassRequest UsersCartNode = ThisUserAct.getCurrentRequestNode();
                                                if (null != UsersCartNode)
                                                {
                                                    CswNbtObjClassRequestItem NewRequestItem = NewNode;
                                                    // Most importantly, put the new request item in the current cart
                                                    NewRequestItem.Request.RelatedNodeId = UsersCartNode.NodeId;

                                                    NewRequestItem.Requestor.RelatedNodeId      = CurrentRequestItem.Requestor.RelatedNodeId;
                                                    NewRequestItem.Material.RelatedNodeId       = CurrentRequestItem.Material.RelatedNodeId;
                                                    NewRequestItem.Material.CachedNodeName      = CurrentRequestItem.Material.CachedNodeName;
                                                    NewRequestItem.InventoryGroup.RelatedNodeId = CurrentRequestItem.InventoryGroup.RelatedNodeId;
                                                    NewRequestItem.Location.SelectedNodeId      = CurrentRequestItem.Location.SelectedNodeId;
                                                    NewRequestItem.Location.CachedPath          = CurrentRequestItem.Location.CachedPath;
                                                    NewRequestItem.Comments.CommentsJson        = CurrentRequestItem.Comments.CommentsJson;
                                                    NewRequestItem.Type.Value = CurrentRequestItem.Type.Value;

                                                    if (CurrentRequestItem.Type.Value == CswNbtObjClassRequestItem.Types.MaterialSize)
                                                    {
                                                        NewRequestItem.Size.RelatedNodeId  = CurrentRequestItem.Size.RelatedNodeId;
                                                        NewRequestItem.Size.CachedNodeName = CurrentRequestItem.Size.CachedNodeName;
                                                        NewRequestItem.SizeCount.Value     = CurrentRequestItem.SizeCount.Value;
                                                    }
                                                    else
                                                    {
                                                        NewRequestItem.Quantity.Quantity       = CurrentRequestItem.Quantity.Quantity;
                                                        NewRequestItem.Quantity.CachedUnitName = CurrentRequestItem.Quantity.CachedUnitName;
                                                        NewRequestItem.Quantity.UnitId         = CurrentRequestItem.Quantity.UnitId;
                                                    }
                                                    NewRequestItem.Status.Value = CswNbtObjClassRequestItem.Statuses.Pending;

                                                    NewRequestItem.postChanges(ForceUpdate: false);

                                                    CurrentRequestItem.NextReorderDate.DateTimeValue = CswNbtPropertySetSchedulerImpl.getNextDueDate(CurrentRequestItem.Node, CurrentRequestItem.NextReorderDate, CurrentRequestItem.RecurringFrequency, ForceUpdate: true);
                                                    CurrentRequestItem.postChanges(ForceUpdate: false);
                                                }
                                            });
                                        }
                                        RequestDescriptions += CurrentRequestItem.Description + "; ";
                                    }
                                }
                                Tree.goToParentNode();
                            } // if ~( not null, is recurring and is due)
                            catch (Exception Exception)
                            {
                                string Message = "Unable to create recurring request " + Description + ", due to the following exception: " + Exception.Message;
                                RequestDescriptions += Message;
                                _CswNbtResources.logError(new CswDniException(Message));
                            } //catch
                            finally
                            {
                                TotalRequestsProcessed += 1;
                            }
                        } //iterate requests

                        string StatusMessage = "No Recurring Requests found to process";
                        if (TotalRequestsProcessed > 0)
                        {
                            StatusMessage = TotalRequestsProcessed.ToString() + " requests processed: " + RequestDescriptions;
                        }
                        _CswScheduleLogicDetail.StatusMessage = StatusMessage;
                        _LogicRunStatus = CswEnumScheduleLogicRunStatus.Succeeded; //last line
                    }
                }//try
                catch (Exception Exception)
                {
                    _CswScheduleLogicDetail.StatusMessage = "CswScheduleLogicNbtGenRequests::threadCallBack() exception: " + Exception.Message + "; " + Exception.StackTrace;
                    _CswNbtResources.logError(new CswDniException(_CswScheduleLogicDetail.StatusMessage));
                    _LogicRunStatus = CswEnumScheduleLogicRunStatus.Failed;
                } //catch
            }     //if we're not shutting down
        }         //threadCallBack()
示例#24
0
        protected override void OnEnable()
        {
            //Turn on all views in the MLM (demo) category
            _CswNbtResources.Modules.ToggleViewsInCategory(false, "MLM (demo)", CswEnumNbtViewVisibility.Global);

            //Case 27866/28156 on enable show Container props...
            //   Lot Controlled
            //   Requisitionable
            //   Reserved For
            //   Receipt Lot
            CswNbtMetaDataObjectClass containerOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ContainerClass);

            foreach (CswNbtMetaDataNodeType containerNT in containerOC.getNodeTypes())
            {
                _CswNbtResources.Modules.ShowProp(containerNT.NodeTypeId, CswNbtObjClassContainer.PropertyName.LotControlled);
                _CswNbtResources.Modules.ShowProp(containerNT.NodeTypeId, CswNbtObjClassContainer.PropertyName.Requisitionable);
                _CswNbtResources.Modules.ShowProp(containerNT.NodeTypeId, CswNbtObjClassContainer.PropertyName.ReservedFor);
                //Case 30723 - Receipt Lot is only "semi-disabled" when MLM is off, so just add it back to the layout when it's enabled
                CswNbtMetaDataNodeTypeProp ReceiptLotNTP = _CswNbtResources.MetaData.getNodeTypeProp(containerNT.NodeTypeId, CswNbtObjClassContainer.PropertyName.ReceiptLot);
                if (null != ReceiptLotNTP)
                {
                    CswNbtMetaDataNodeTypeProp StatusNTP = containerNT.getNodeTypePropByObjectClassProp(CswNbtObjClassContainer.PropertyName.Status);
                    ReceiptLotNTP.updateLayout(CswEnumNbtLayoutType.Edit, StatusNTP, true);
                }
            }

            //Case 31546 - If requesting is disabled, we don't need to show anything on the Request Item OC because it is not available
            if (_CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.Requesting))
            {
                CswNbtObjClassRequestItem.ToggleMLMProps(_CswNbtResources, false);
            }

            //Case 28339
            //   Show Vendor.VendorType and CorporateEntity
            //   Add a filter to Material.Supplier where VendorType = 'Coporate'
            CswNbtMetaDataObjectClass vendorOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.VendorClass);

            foreach (CswNbtMetaDataNodeType vendorNT in vendorOC.getNodeTypes())
            {
                _CswNbtResources.Modules.ShowProp(vendorNT.NodeTypeId, CswNbtObjClassVendor.PropertyName.VendorTypeName);
                _CswNbtResources.Modules.ShowProp(vendorNT.NodeTypeId, CswNbtObjClassVendor.PropertyName.CorporateEntityName);
            }

            _toggleMaterialSupplierView(false);
            _toggleReceiptLotManufacturerView(false);

            setReceiptLotPermissions(_CswNbtResources, true);

            //Case CIS-52280 on enable show Material props...
            //   Manufacturing Sites Grid
            //   Requires Cleaning Event
            CswNbtMetaDataPropertySet materialPS = _CswNbtResources.MetaData.getPropertySet(CswEnumNbtPropertySetName.MaterialSet);

            foreach (CswNbtMetaDataObjectClass materialOC in materialPS.getObjectClasses())
            {
                foreach (CswNbtMetaDataNodeType materialNT in materialOC.getNodeTypes())
                {
                    _CswNbtResources.Modules.ShowProp(materialNT.NodeTypeId, CswNbtPropertySetMaterial.PropertyName.ManufacturingSites);
                    _CswNbtResources.Modules.ShowProp(materialNT.NodeTypeId, CswNbtPropertySetMaterial.PropertyName.RequiresCleaningEvent);
                }
            }
        } // OnEnable()
示例#25
0
        } // OnEnable()

        protected override void OnDisable()
        {
            //Turn on off views in the MLM (demo) category
            _CswNbtResources.Modules.ToggleViewsInCategory(true, "MLM (demo)", CswEnumNbtViewVisibility.Global);

            //Case 27866 on disable hide Container props...
            //   Lot Controlled
            //   Requisitionable
            //   Reserved For
            CswNbtMetaDataObjectClass containerOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ContainerClass);

            foreach (CswNbtMetaDataNodeType containerNT in containerOC.getNodeTypes())
            {
                _CswNbtResources.Modules.HideProp(containerNT.NodeTypeId, CswNbtObjClassContainer.PropertyName.LotControlled);
                _CswNbtResources.Modules.HideProp(containerNT.NodeTypeId, CswNbtObjClassContainer.PropertyName.Requisitionable);
                _CswNbtResources.Modules.HideProp(containerNT.NodeTypeId, CswNbtObjClassContainer.PropertyName.ReservedFor);
                //if( null != cmgTab )
                //{
                //    cmgTab.DesignNode.Node.delete( false, true );
                //}
            }

            //Case 31546 - If requesting is disabled, we don't need to hide anything on the Request Item OC because it is not available
            if (_CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.Requesting))
            {
                CswNbtObjClassRequestItem.ToggleMLMProps(_CswNbtResources, true);
            }

            //Case 28339
            //   Hide Vendor.VendorType and CorporateEntity
            //   Remove filter on Material.Supplier
            CswNbtMetaDataObjectClass vendorOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.VendorClass);

            foreach (CswNbtMetaDataNodeType vendorNT in vendorOC.getNodeTypes())
            {
                _CswNbtResources.Modules.HideProp(vendorNT.NodeTypeId, CswNbtObjClassVendor.PropertyName.VendorTypeName);
                _CswNbtResources.Modules.HideProp(vendorNT.NodeTypeId, CswNbtObjClassVendor.PropertyName.CorporateEntityName);
            }

            CswNbtView newSupplierPropView = new CswNbtView(_CswNbtResources);

            newSupplierPropView.saveNew("Supplier", CswEnumNbtViewVisibility.Property);
            newSupplierPropView.AddViewRelationship(vendorOC, true);
            newSupplierPropView.save();

            _toggleMaterialSupplierView(true);
            _toggleReceiptLotManufacturerView(true);

            //Case CIS-52280 on disable hide Material props...
            //   Manufacturing Sites Grid
            //   Requires Cleaning Event
            CswNbtMetaDataPropertySet materialPS = _CswNbtResources.MetaData.getPropertySet(CswEnumNbtPropertySetName.MaterialSet);

            foreach (CswNbtMetaDataObjectClass materialOC in materialPS.getObjectClasses())
            {
                foreach (CswNbtMetaDataNodeType materialNT in materialOC.getNodeTypes())
                {
                    _CswNbtResources.Modules.HideProp(materialNT.NodeTypeId, CswNbtPropertySetMaterial.PropertyName.ManufacturingSites);
                    _CswNbtResources.Modules.HideProp(materialNT.NodeTypeId, CswNbtPropertySetMaterial.PropertyName.RequiresCleaningEvent);
                }
            }

            setReceiptLotPermissions(_CswNbtResources, false);
        } // OnDisable()
 public CswNbtRequestItemTypeContainerDispose(CswNbtResources CswNbtResources, CswNbtObjClassRequestItem RequestItem) : base(CswNbtResources, RequestItem)
 {
 }
示例#27
0
        public static CswNbtRequestItemType makeRequestItemType(CswNbtResources CswNbtResources, CswNbtObjClassRequestItem RequestItem)
        {
            string RequestItemType = RequestItem.Type.Value;
            CswNbtRequestItemType TypeDef;

            switch (RequestItemType)
            {
            case CswNbtObjClassRequestItem.Types.EnterprisePart:
                TypeDef = new CswNbtRequestItemTypeEnterprisePart(CswNbtResources, RequestItem);
                break;

            case CswNbtObjClassRequestItem.Types.MaterialCreate:
                TypeDef = new CswNbtRequestItemTypeMaterialCreate(CswNbtResources, RequestItem);
                break;

            case CswNbtObjClassRequestItem.Types.MaterialBulk:
                TypeDef = new CswNbtRequestItemTypeMaterialByBulk(CswNbtResources, RequestItem);
                break;

            case CswNbtObjClassRequestItem.Types.MaterialSize:
                TypeDef = new CswNbtRequestItemTypeMaterialBySize(CswNbtResources, RequestItem);
                break;

            case CswNbtObjClassRequestItem.Types.ContainerDispense:
                TypeDef = new CswNbtRequestItemTypeContainerDispense(CswNbtResources, RequestItem);
                break;

            case CswNbtObjClassRequestItem.Types.ContainerDispose:
                TypeDef = new CswNbtRequestItemTypeContainerDispose(CswNbtResources, RequestItem);
                break;

            case CswNbtObjClassRequestItem.Types.ContainerMove:
                TypeDef = new CswNbtRequestItemTypeContainerMove(CswNbtResources, RequestItem);
                break;

            default:
                throw new CswDniException(CswEnumErrorType.Error,
                                          "Unhandled item type: " + RequestItemType,
                                          "CswNbtRequestItemTypeFactory did not recognize item type: " + RequestItemType);
            }
            return(TypeDef);
        }