コード例 #1
0
        /// <summary>
        /// Get a landing page for a Material
        /// </summary>
        public static JObject getLandingPageData(CswNbtResources NbtResources, CswNbtNode MaterialNode, CswNbtView MaterialNodeView = null)
        {
            JObject Ret = new JObject();

            if (null != MaterialNode)
            {
                MaterialNodeView = MaterialNodeView ?? CswNbtPropertySetMaterial.getMaterialNodeView(NbtResources, MaterialNode);
                MaterialNodeView.SaveToCache(IncludeInQuickLaunch: false);

                Ret["ActionId"] = NbtResources.Actions[CswEnumNbtActionName.Create_Material].ActionId.ToString();
                //Used for Tab and Button items
                Ret["NodeId"]     = MaterialNode.NodeId.ToString();
                Ret["NodeViewId"] = MaterialNodeView.SessionViewId.ToString();
                //Used for node-specific Add items
                Ret["RelatedNodeId"]   = MaterialNode.NodeId.ToString();
                Ret["RelatedNodeName"] = MaterialNode.NodeName;
                //If (and when) action landing pages are slated to be roleId-specific, remove this line
                Ret["isConfigurable"] = NbtResources.CurrentNbtUser.IsAdministrator();
                //Used for viewing new material
                Ret["ActionLinks"] = new JObject();
                string ActionLinkName = MaterialNode.NodeId.ToString();
                Ret["ActionLinks"][ActionLinkName]           = new JObject();
                Ret["ActionLinks"][ActionLinkName]["Text"]   = MaterialNode.NodeName;
                Ret["ActionLinks"][ActionLinkName]["ViewId"] = MaterialNodeView.SessionViewId.ToString();
            }
            return(Ret);
        }
コード例 #2
0
        /// <summary>
        /// Updates the default Expiration Date on containers to receive based on Receipt Lot's Manufactured Date
        /// </summary>
        public ContainerData.ReceivingData updateExpirationDate(ContainerData.ReceiptLotRequest Request)
        {
            ContainerData.ReceivingData ReceiveData = new ContainerData.ReceivingData();
            JObject ReceiptLotPropsObj = CswConvert.ToJObject(Request.ReceiptLotProps);

            if (ReceiptLotPropsObj.HasValues)
            {
                CswPrimaryKey ReceiptLotId = CswConvert.ToPrimaryKey(Request.ReceiptLotId);
                if (CswTools.IsPrimaryKey(ReceiptLotId))
                {
                    CswNbtObjClassReceiptLot ReceiptLot = _CswNbtResources.Nodes.GetNode(ReceiptLotId);
                    _CswNbtSdTabsAndProps.saveNodeProps(ReceiptLot.Node, ReceiptLotPropsObj);
                    CswPrimaryKey ContainerId = CswConvert.ToPrimaryKey(Request.ContainerId);
                    if (CswTools.IsPrimaryKey(ContainerId) &&
                        ReceiptLot.ManufacturedDate.DateTimeValue != DateTime.MinValue)
                    {
                        CswNbtObjClassContainer   Container = _CswNbtResources.Nodes.GetNode(ContainerId);
                        CswNbtPropertySetMaterial Material  = _CswNbtResources.Nodes.GetNode(Container.Material.RelatedNodeId);
                        Container.ExpirationDate.DateTimeValue = Material.getDefaultExpirationDate(ReceiptLot.ManufacturedDate.DateTimeValue);
                        Container.postChanges(false);
                        JObject ContainerProps = getContainerAddProps(Container);
                        ReceiveData.ContainerProps = ContainerProps.ToString();
                    }
                }
            }
            return(ReceiveData);
        }
コード例 #3
0
        public static JObject getImportBtnItems(CswNbtResources CswNbtResources)
        {
            JObject ImportableNodeTypes = new JObject();

            Collection <CswEnumNbtObjectClass> MaterialPropSetMembers = CswNbtPropertySetMaterial.Members();

            foreach (CswEnumNbtObjectClass ObjectClassName in MaterialPropSetMembers)
            {
                CswNbtMetaDataObjectClass ObjectClass = CswNbtResources.MetaData.getObjectClass(ObjectClassName);
                foreach (CswNbtMetaDataNodeType CurrentNT in ObjectClass.getNodeTypes())
                {
                    CswNbtMetaDataNodeTypeProp IsConstituentNTP = CurrentNT.getNodeTypePropByObjectClassProp(CswNbtPropertySetMaterial.PropertyName.IsConstituent);
                    if (IsConstituentNTP.HasDefaultValue() &&
                        CswEnumTristate.False == IsConstituentNTP.getDefaultValue(false).AsLogical.Checked)
                    {
                        JObject NodeType = new JObject();
                        ImportableNodeTypes[CurrentNT.NodeTypeName] = NodeType;
                        NodeType["nodetypename"] = CurrentNT.NodeTypeName;
                        NodeType["nodetypeid"]   = CurrentNT.NodeTypeId.ToString();
                        NodeType["iconfilename"] = CswNbtMetaDataObjectClass.IconPrefix16 + CurrentNT.IconFileName;
                        NodeType["objclass"]     = ObjectClassName.ToString();
                    }
                }
            }

            return(ImportableNodeTypes);
        }//getImportBtnItems()
コード例 #4
0
ファイル: CswNbtSdC3.cs プロジェクト: crfroehlich/legacy
        }//_removeDuplicateSizes()

        #endregion Private helper methods

        public CswPrimaryKey createMaterialDocument(CswNbtPropertySetMaterial MaterialNode)
        {
            CswPrimaryKey NewSDSDocumentNodeId = null;

            string MsdsUrl = _ProductToImport.MsdsUrl;

            if (false == string.IsNullOrEmpty(MsdsUrl) && _CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.SDS))
            {
                CswNbtMetaDataObjectClass SDSDocClass   = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.SDSDocumentClass);
                CswNbtMetaDataNodeType    SDSDocumentNT = SDSDocClass.FirstNodeType;
                if (null != SDSDocumentNT)
                {
                    CswNbtObjClassSDSDocument NewDoc = _CswNbtResources.Nodes.makeNodeFromNodeTypeId(SDSDocumentNT.NodeTypeId, OnAfterMakeNode : delegate(CswNbtNode NewNode)
                    {
                        // This needs to be CswNbtObjClassSDSDocument NOT CswNbtObjClassDocument!
                        CswNbtObjClassSDSDocument NewSDSDocumentNode = NewNode;
                        NewSDSDocumentNode.Title.Text          = "SDS: " + MaterialNode.TradeName.Text;
                        NewSDSDocumentNode.FileType.Value      = CswNbtPropertySetDocument.CswEnumDocumentFileTypes.Link;
                        NewSDSDocumentNode.Link.Href           = MsdsUrl;
                        NewSDSDocumentNode.Link.Text           = MsdsUrl;
                        NewSDSDocumentNode.Owner.RelatedNodeId = MaterialNode.NodeId;
                    });

                    // Set the return object
                    NewSDSDocumentNodeId = NewDoc.NodeId;
                }
            }

            return(NewSDSDocumentNodeId);
        }
コード例 #5
0
        /// <summary>
        /// Makes a temporary node of the Chemical nodetype. The reason we can't use createMaterial()
        /// is because we don't have the any properties to provide to the method and tradename,
        /// material type, and supplier are required.
        /// </summary>
        /// <param name="NodeId"></param>
        /// <returns></returns>
        public CswPrimaryKey makeTemp(string NodeId)
        {
            CswPrimaryKey Ret = new CswPrimaryKey();

            CswPrimaryKey NodePk = CswConvert.ToPrimaryKey(NodeId);

            if (false == CswTools.IsPrimaryKey(NodePk))    //node doesn't exist
            {
                CswNbtMetaDataObjectClass ChemicalOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ChemicalClass);
                CswNbtMetaDataNodeType    ChemicalNT = ChemicalOC.FirstNodeType;
                if (null != ChemicalNT)
                {
                    CswNbtPropertySetMaterial NewMaterialTempNode = _CswNbtResources.Nodes.makeNodeFromNodeTypeId(ChemicalNT.NodeTypeId, IsTemp: true);
                    if (null != NewMaterialTempNode)
                    {
                        Ret = NewMaterialTempNode.Node.NodeId;
                    }
                }
            }
            else //node exists
            {
                Ret = NodePk;
            }

            return(Ret);
        }
コード例 #6
0
        /// <summary>
        /// Get a landing page for a Material
        /// </summary>
        public static JObject getLandingPageData(CswNbtResources NbtResources, CswNbtNode MaterialNode, bool UseBatchOp, Collection <CswPrimaryKey> ContainerIds, CswNbtView MaterialNodeView = null)
        {
            JObject Ret = new JObject();

            if (null != MaterialNode)
            {
                MaterialNodeView = MaterialNodeView ?? CswNbtPropertySetMaterial.getMaterialNodeView(NbtResources, MaterialNode, "Received: ");
                MaterialNodeView.SaveToCache(IncludeInQuickLaunch: false);

                Ret["ActionId"] = NbtResources.Actions[CswEnumNbtActionName.Receiving].ActionId.ToString();

                //Used for Tab and Button items
                Ret["NodeId"]     = MaterialNode.NodeId.ToString();
                Ret["NodeViewId"] = MaterialNodeView.SessionViewId.ToString();

                //Used for node-specific Add items
                Ret["RelatedNodeId"]   = MaterialNode.NodeId.ToString();
                Ret["RelatedNodeName"] = MaterialNode.NodeName;

                //If (and when) action landing pages are slated to be roleId-specific, remove this line
                Ret["isConfigurable"] = NbtResources.CurrentNbtUser.IsAdministrator();

                //Used for viewing new material
                Ret["ActionLinks"] = new JObject();
                string ActionLinkName = MaterialNode.NodeId.ToString();
                Ret["ActionLinks"][ActionLinkName]           = new JObject();
                Ret["ActionLinks"][ActionLinkName]["Text"]   = MaterialNode.NodeName;
                Ret["ActionLinks"][ActionLinkName]["ViewId"] = MaterialNodeView.SessionViewId.ToString();

                if (UseBatchOp)
                {
                    Ret["Title"] = "The containers for this material have been scheduled for creation, but may not be available immediately. Click 'View Batch Operations' to check their progress.";
                    Ret["ActionLinks"]["BatchOps"] = new JObject();
                    Ret["ActionLinks"]["BatchOps"]["ActionName"] = "These containers will be created in a batch operation and may not be immediately available. You can check the progress of their creation below:";
                    Ret["ActionLinks"]["BatchOps"]["Text"]       = "View Batch Operations";
                    Ret["ActionLinks"]["BatchOps"]["ViewId"]     = NbtResources.ViewSelect.getViewIdByName("My Batch Operations", CswEnumNbtViewVisibility.Global, null, null).ToString();
                }
                else
                {
                    CswNbtMetaDataNodeType ContainerNT = NbtResources.MetaData.getNodeType("Container");
                    if (null != ContainerNT)
                    {
                        CswNbtView NewContainersView = new CswNbtView(NbtResources);
                        NewContainersView.ViewName = "New Containers";
                        CswNbtViewRelationship ContainerVr = NewContainersView.AddViewRelationship(ContainerNT, true);
                        ContainerVr.NodeIdsToFilterIn = ContainerIds;
                        NewContainersView.SaveToCache(false);

                        Ret["ActionLinks"]["NewContainers"]           = new JObject();
                        Ret["ActionLinks"]["NewContainers"]["Text"]   = "View Received Containers";
                        Ret["ActionLinks"]["NewContainers"]["ViewId"] = NewContainersView.SessionViewId.ToString();;
                    }
                }
            }
            return(Ret);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        public JObject initNewTempMaterialNode(Int32 NodeTypeId, string SupplierId, string Suppliername, string Tradename, string PartNo, string NodeId, bool IsConstituent, bool CorporateSupplier)
        {
            JObject Ret = new JObject();

            //Check if the vendor needs to be created
            if (false == CswTools.IsPrimaryKey(CswConvert.ToPrimaryKey(SupplierId)) && false == IsConstituent)
            {
                CswNbtMetaDataObjectClass VendorOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.VendorClass);
                if (null != VendorOC)
                {
                    CswNbtMetaDataNodeType VendorNT = VendorOC.FirstNodeType;
                    if (null != VendorNT)
                    {
                        CswNbtObjClassVendor NewVendorNode = _CswNbtResources.Nodes.makeNodeFromNodeTypeId(VendorNT.NodeTypeId, IsTemp : true, OnAfterMakeNode : delegate(CswNbtNode NewNode)
                        {
                            CswNbtObjClassVendor NodeAsVendor = (CswNbtObjClassVendor)NewNode;
                            NodeAsVendor.VendorName.Text      = Suppliername;
                            NodeAsVendor.VendorName.SyncGestalt();
                            if (CorporateSupplier)
                            {
                                NodeAsVendor.VendorType.Value = CswNbtObjClassVendor.VendorTypes.Corporate;
                            }
                        });
                        //Set the supplierId to the new vendor node
                        SupplierId = NewVendorNode.NodeId.ToString();
                    }
                }
            }

            CswPrimaryKey CurrentTempNodePk = CswConvert.ToPrimaryKey(NodeId);

            if (CswTools.IsPrimaryKey(CurrentTempNodePk))
            {
                CswNbtPropertySetMaterial CurrentTempNode = _CswNbtResources.Nodes.GetNode(CurrentTempNodePk);
                if (null != CurrentTempNode)
                {
                    Int32 CurrentNodeTypeId = CurrentTempNode.NodeTypeId;
                    if (NodeTypeId != CurrentNodeTypeId)
                    {
                        // Then we want to just forget about the first temp node created and create a new one with the new nodetype
                        Ret = _tryCreateTempMaterial(NodeTypeId, CswConvert.ToPrimaryKey(SupplierId), Tradename, PartNo, null, IsConstituent);
                    }
                    else
                    {
                        // If the nodetype isn't different then we want to get the props and check if it exsits
                        Ret = _tryCreateTempMaterial(NodeTypeId, CswConvert.ToPrimaryKey(SupplierId), Tradename, PartNo, CurrentTempNodePk.ToString(), IsConstituent);
                    }
                }
            }
            return(Ret);
        }
コード例 #9
0
 public CswNbtPropertySetMaterial existingMaterial(bool ForceRecalc = false)
 {
     if (ForceRecalc || null == _ExistingNode)
     {
         // If a preexisting material was provided, Node will not be null
         // because it was set in the constructor
         //_ExistingNode = Node;
         if (null == _ExistingNode)
         {
             _ExistingNode = CswNbtPropertySetMaterial.getExistingMaterial(_NbtResources, NodeTypeId, SupplierId, TradeName, PartNo, IsConstituent);
         }
     }
     return(_ExistingNode);
 }
コード例 #10
0
        public void OpenItem()
        {
            CswNbtNode Node = _CswNbtResources.Nodes.GetNode(_OpenableObj.Material.RelatedNodeId);
            CswNbtPropertySetMaterial Material = Node;

            if (false == CanOpen())
            {
                throw new CswDniException(CswEnumErrorType.Warning,
                                          "Cannot open container when Container does not have an expiration date set or the material does not have an open expiration interval set",
                                          "Container.ExpirationDate isn't set or Container.Material.OpenExpirationInterval is not set, cannot open container");
            }
            _OpenableObj.OpenedDate.DateTimeValue     = DateTime.Now;
            _OpenableObj.ExpirationDate.DateTimeValue = (_OpenableObj.ExpirationDate.DateTimeValue < Material.getDefaultOpenExpirationDate(DateTime.Now) ? _OpenableObj.ExpirationDate.DateTimeValue : Material.getDefaultOpenExpirationDate(DateTime.Now));
            _OpenableObj.Open.setHidden(true, true);
        }
コード例 #11
0
        private JObject _tryCreateTempMaterial(Int32 MaterialNodeTypeId, CswPrimaryKey SupplierId, string TradeName, string PartNo, string NodeId, bool IsConstituent)
        {
            JObject Ret = new JObject();

            NewMaterial PotentialMaterial = new NewMaterial(_CswNbtResources, MaterialNodeTypeId, TradeName, SupplierId, IsConstituent, PartNo, NodeId);

            bool MaterialExists = PotentialMaterial.existsInDb();

            Ret["materialexists"] = MaterialExists;
            if (false == MaterialExists)
            {
                CswNbtPropertySetMaterial NodeAsMaterial = PotentialMaterial.Node;
                if (null == NodeAsMaterial)
                {
                    NodeAsMaterial = PotentialMaterial.commit();
                }
                if (null != NodeAsMaterial)
                {
                    Ret["materialid"] = NodeAsMaterial.NodeId.ToString();
                    Ret["tradename"]  = NodeAsMaterial.TradeName.Text;
                    Ret["partno"]     = NodeAsMaterial.PartNumber.Text;
                    Ret["supplier"]   = false == IsConstituent ? NodeAsMaterial.Supplier.CachedNodeName : "";
                    Ret["supplierid"] = false == IsConstituent?SupplierId.ToString() : "";

                    Ret["nodetypeid"] = NodeAsMaterial.NodeTypeId;
                    NodeAsMaterial.Save.setHidden(value: true, SaveToDb: true);
                    CswNbtSdTabsAndProps SdProps = new CswNbtSdTabsAndProps(_CswNbtResources);
                    Ret["properties"] = SdProps.getProps(NodeAsMaterial.Node, string.Empty, null, CswEnumNbtLayoutType.Add);
                    if (_CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.SDS))
                    {
                        CswNbtMetaDataObjectClass SDSDocOC    = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.SDSDocumentClass);
                        CswNbtMetaDataNodeType    SDSNodeType = SDSDocOC.FirstNodeType;
                        if (null != SDSNodeType)
                        {
                            Ret["documenttypeid"] = SDSNodeType.NodeTypeId;
                        }
                    }
                    Ret["noderef"] = NodeAsMaterial.Node.NodeLink; //for the link
                }
            }
            else
            {
                CswNbtPropertySetMaterial ExisitingMaterial = PotentialMaterial.existingMaterial();
                Ret["noderef"] = ExisitingMaterial.Node.NodeLink;
            }

            return(Ret);
        }
コード例 #12
0
        public String getPhysicalState(CswNbtPropertySetMaterial MaterialNode)
        {
            String PhysicalState = "n/a";

            if (MaterialNode.ObjectClass.ObjectClass == CswEnumNbtObjectClass.ChemicalClass)
            {
                CswNbtObjClassChemical ChemicalNode = MaterialNode.Node;
                PhysicalState = ChemicalNode.PhysicalState.Value;
            }
            else if (MaterialNode.ObjectClass.ObjectClass == CswEnumNbtObjectClass.BiologicalClass)
            {
                CswNbtObjClassBiological ChemicalNode = MaterialNode.Node;
                PhysicalState = ChemicalNode.PhysicalState.Value;
            }
            return(PhysicalState);
        }
コード例 #13
0
ファイル: CswNbtSdC3.cs プロジェクト: crfroehlich/legacy
        }//createSizeNodes()

        public void createMaterialSynonyms(CswNbtPropertySetMaterial MaterialNode)
        {
            CswNbtMetaDataNodeType MaterialSynonymNT = _CswNbtResources.MetaData.getNodeType("Material Synonym");

            if (null != MaterialSynonymNT)
            {
                for (int index = 0; index < _ProductToImport.Synonyms.Length; index++)
                {
                    _CswNbtResources.Nodes.makeNodeFromNodeTypeId(MaterialSynonymNT.NodeTypeId, delegate(CswNbtNode NewNode)
                    {
                        CswNbtObjClassMaterialSynonym MaterialSynonymOC = NewNode;
                        MaterialSynonymOC.Name.Text = _ProductToImport.Synonyms[index];
                        MaterialSynonymOC.Material.RelatedNodeId = MaterialNode.NodeId;
                    });
                }
            }
        }
コード例 #14
0
 public static void getPhysicalState(ICswResources CswResources, MaterialResponse Response, string NodeId)
 {
     if (null != CswResources)
     {
         CswNbtResources NbtResources = (CswNbtResources)CswResources;
         CswPrimaryKey   pk           = CswConvert.ToPrimaryKey(NodeId);
         if (CswTools.IsPrimaryKey(pk))
         {
             Response.Data.PhysicalState = "n/a";
             CswNbtPropertySetMaterial MaterialNode = NbtResources.Nodes[pk];
             if (MaterialNode.ObjectClass.ObjectClass == CswEnumNbtObjectClass.ChemicalClass)
             {
                 CswNbtObjClassChemical ChemicalNode = MaterialNode.Node;
                 Response.Data.PhysicalState = ChemicalNode.PhysicalState.Value;
             }
         }
     }
 }
コード例 #15
0
        public override void update()
        {
            List<CswPrimaryKey> MaterialPKs = new List<CswPrimaryKey>();

            //Rename all existing material demo data
            CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet );

            foreach( CswNbtMetaDataObjectClass MatOC in MaterialPS.getObjectClasses() )
            {
                foreach( CswNbtPropertySetMaterial DemoMaterial in MatOC.getNodes( false, false, false ) )
                {
                    if( DemoMaterial.IsDemo )
                    {
                        MaterialPKs.Add( DemoMaterial.NodeId );
                        DemoMaterial.TradeName.Text = DemoMaterial.TradeName.Text.Replace( "Default", "(demo)" );
                        DemoMaterial.ApprovedForReceiving.Checked = CswEnumTristate.True;
                        DemoMaterial.postChanges( false );
                    }
                }
            }

            //Fix existing demo material sizes
            CswNbtMetaDataObjectClass SizeOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.SizeClass );
            foreach( CswNbtObjClassSize DemoSize in SizeOC.getNodes( false, false ) )
            {
                if( DemoSize.IsDemo && MaterialPKs.Contains( DemoSize.Material.RelatedNodeId ) )
                {
                    DemoSize.InitialQuantity.Quantity = 10;
                    CswNbtPropertySetMaterial DemoMaterial = _CswNbtSchemaModTrnsctn.Nodes[DemoSize.Material.RelatedNodeId];
                    if( DemoMaterial.ObjectClass.ObjectClass == CswEnumNbtObjectClass.NonChemicalClass )
                    {
                        CswNbtObjClassUnitOfMeasure CasesUnit = _getUnit( "Unit (Each)", "Cases" );
                        if( null != CasesUnit )
                        {
                            DemoSize.InitialQuantity.UnitId = CasesUnit.NodeId;
                            DemoSize.InitialQuantity.View.Root.ChildRelationships.Clear();
                            DemoSize.InitialQuantity.View.AddViewRelationship( CasesUnit.NodeType, true );
                            DemoSize.InitialQuantity.View.save();
                        }
                    }
                    DemoSize.postChanges( false );
                }
            }
        } // update()
コード例 #16
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);
        }
コード例 #17
0
        public JObject saveMaterialProps(CswPrimaryKey NodePk, JObject PropsObj, Int32 NodeTypeId)
        {
            JObject Ret = new JObject();

            if (CswTools.IsPrimaryKey(NodePk))
            {
                CswNbtPropertySetMaterial MaterialNode = _CswNbtResources.Nodes.GetNode(NodePk);

                CswNbtSdTabsAndProps SdTabsAndProps = new CswNbtSdTabsAndProps(_CswNbtResources);
                SdTabsAndProps.saveNodeProps(MaterialNode.Node, PropsObj);

                switch (MaterialNode.ObjectClass.ObjectClass)
                {
                case CswEnumNbtObjectClass.ChemicalClass:
                    CswNbtObjClassChemical ChemicalNode = MaterialNode.Node;
                    Ret["PhysicalState"] = ChemicalNode.PhysicalState.Value;

                    // Add more properties here if you want.

                    break;

                case CswEnumNbtObjectClass.NonChemicalClass:
                    Ret["PhysicalState"] = CswNbtPropertySetMaterial.CswEnumPhysicalState.NA;

                    // Add properties here!
                    break;

                case CswEnumNbtObjectClass.BiologicalClass:
                    CswNbtObjClassBiological BioNode = MaterialNode.Node;
                    Ret["PhysicalState"] = BioNode.PhysicalState.Value;
                    break;
                }
            }

            return(Ret);
        }
コード例 #18
0
ファイル: CswNbtSdC3.cs プロジェクト: crfroehlich/legacy
        public static C3CreateMaterialResponse importC3Product(ICswResources CswResources, CswNbtC3Import.Request Request)
        {
            C3CreateMaterialResponse ret = new C3CreateMaterialResponse();

            CswNbtResources _CswNbtResources = (CswNbtResources)CswResources;

            CswC3SearchParams CswC3SearchParams = new CswC3SearchParams();
            CswC3Product      C3ProductDetails  = new CswC3Product();

            if (Int32.MinValue != Request.Cdbregno && Int32.MinValue != Request.C3ProductId)
            {
                CswC3SearchParams.ACDSearchParams           = new ACDSearchParams();
                CswC3SearchParams.ACDSearchParams.ProductId = Request.C3ProductId;
                CswC3SearchParams.ACDSearchParams.Cdbregno  = Request.Cdbregno;
            }
            else if (Int32.MinValue != Request.C3ProductId)
            {
                CswC3SearchParams.C3SearchParams           = new C3SearchParams();
                CswC3SearchParams.C3SearchParams.ProductId = Request.C3ProductId;
            }
            else
            {
                throw new CswDniException(CswEnumErrorType.Error, "Cannot run import, missing parameters.", "Cannot import C3 or ACD data without a Product Id or CdbRegNo.");
            }

            CswNbtC3ClientManager CswNbtC3ClientManager = new CswNbtC3ClientManager(_CswNbtResources, CswC3SearchParams);
            SearchClient          C3SearchClient        = CswNbtC3ClientManager.initializeC3Client();

            if (null != C3SearchClient)
            {
                // Perform C3 search to get the product details
                CswRetObjSearchResults SearchResults = C3SearchClient.getProductDetails(CswC3SearchParams);
                if (SearchResults.CswC3SearchResults.Length > 0)
                {
                    C3ProductDetails = SearchResults.CswC3SearchResults[0];

                    string NodeTypeName = Request.NodeTypeName;
                    if (false == string.IsNullOrEmpty(NodeTypeName))
                    {
                        CswNbtMetaDataNodeType NodeTypeToBeImported = _CswNbtResources.MetaData.getNodeType(NodeTypeName);
                        if (null != NodeTypeToBeImported)
                        {
                            // Instance the ImportManger
                            ImportManager C3Import = new ImportManager(_CswNbtResources, C3ProductDetails);

                            // Create the temporary material node
                            CswNbtPropertySetMaterial C3ProductTempNode = _CswNbtResources.Nodes.makeNodeFromNodeTypeId(NodeTypeToBeImported.NodeTypeId, IsTemp : true, OnAfterMakeNode : delegate(CswNbtNode NewNode)
                            {
                                //Set the c3productid property
                                ((CswNbtPropertySetMaterial)NewNode).C3ProductId.Text = C3ProductDetails.ProductId.ToString();
                                // Add props to the tempnode
                                C3Import.addNodeTypeProps(NewNode);

                                // Sync Hazard Classes and PCID data if C3ProductTempNode is of type Chemical
                                if (NewNode.getObjectClass().ObjectClass == CswEnumNbtObjectClass.ChemicalClass)
                                {
                                    CswNbtObjClassChemical ChemicalNode = NewNode;
                                    ChemicalNode.syncFireDbData();
                                    ChemicalNode.syncPCIDData();
                                }
                                //C3ProductTempNode.postChanges( false );
                            });

                            // Get or create a vendor node
                            C3CreateMaterialResponse.State.Supplier Supplier = C3Import.constructVendorObject(C3ProductDetails.SupplierName);

                            // Create size node(s)
                            Collection <C3CreateMaterialResponse.State.SizeRecord> ProductSizes = C3Import.constructSizeObjects();

                            // Create synonyms node(s)
                            C3Import.createMaterialSynonyms(C3ProductTempNode);

                            // Create a document node if C3ProductTempNode is of type Chemical
                            CswPrimaryKey SDSDocumentNodeId = new CswPrimaryKey();
                            if (C3ProductTempNode.ObjectClass.ObjectClass == CswEnumNbtObjectClass.ChemicalClass)
                            {
                                SDSDocumentNodeId = C3Import.createMaterialDocument(C3ProductTempNode);
                            }

                            #region Return Object

                            ret.success    = true;
                            ret.actionname = "create material";

                            C3CreateMaterialResponse.State.MaterialType MaterialType = new C3CreateMaterialResponse.State.MaterialType();
                            MaterialType.name = Request.NodeTypeName;
                            MaterialType.val  = Request.NodeTypeId;

                            C3CreateMaterialResponse.State State = new C3CreateMaterialResponse.State();
                            State.materialId = C3ProductTempNode.NodeId.ToString();
                            State.tradeName  = C3ProductTempNode.TradeName.Text;
                            State.partNo     = C3ProductTempNode.PartNumber.Text;
                            ret.state        = State;

                            //State.useExistingTempNode = true;
                            State.supplier = Supplier;
                            if (string.IsNullOrEmpty(State.supplier.val))
                            {
                                State.addNewC3Supplier = true;
                            }
                            State.materialType = MaterialType;
                            State.sizes        = ProductSizes;
                            if (null != SDSDocumentNodeId)
                            {
                                State.sds.sdsDocId = SDSDocumentNodeId.ToString();
                            }

                            #endregion Return Object
                        } //if (null != NodeTypeToBeImported)
                    }     //if( false == string.IsNullOrEmpty( NodeTypeName ) )
                }         //if( SearchResults.CswC3SearchResults.Length > 0 )
            }             //if( null != C3SearchClient )

            return(ret);
        }//importC3Product()
コード例 #19
0
        /// <summary>
        /// Default implementation that checks if the Openable has an Expiration Date and that the chemical has an open expiration interval set
        /// </summary>
        public bool CanOpen()
        {
            CswNbtPropertySetMaterial Material = _CswNbtResources.Nodes.GetNode(_OpenableObj.Material.RelatedNodeId);

            return(DateTime.MinValue != _OpenableObj.ExpirationDate.DateTimeValue && (false == String.IsNullOrEmpty(Material.OpenExpireInterval.CachedNodeName) && false == Double.IsNaN(Material.OpenExpireInterval.Quantity)));
        }
コード例 #20
0
        public static void getCopyData(ICswResources _CswResources, CopyDataReturn Copy, CopyDataRequest Request)
        {
            CswNbtResources _CswNbtResources = (CswNbtResources)_CswResources;

            //If we get any more copy types in the future, extract them out into their own classes and instantiate them via factory
            #region Create_Material Copy Data

            if (Request.CopyType == CswEnumNbtActionName.Create_Material)
            {
                CswPrimaryKey OriginalNodeId = CswConvert.ToPrimaryKey(Request.NodeId);
                if (CswTools.IsPrimaryKey(OriginalNodeId))
                {
                    CswNbtPropertySetMaterial OriginalMaterial = _CswNbtResources.Nodes.GetNode(OriginalNodeId);
                    if (null != OriginalMaterial)
                    {
                        #region Material Properties

                        CswNbtPropertySetMaterial MaterialCopy = OriginalMaterial.CopyNode();
                        Copy.Data.Create_Material = new C3CreateMaterialResponse
                        {
                            actionname = CswEnumNbtActionName.Create_Material,
                            state      = new C3CreateMaterialResponse.State
                            {
                                materialId   = MaterialCopy.NodeId.ToString(),
                                materialType = new C3CreateMaterialResponse.State.MaterialType
                                {
                                    name = MaterialCopy.NodeType.NodeTypeName,
                                    val  = CswConvert.ToInt32(MaterialCopy.NodeTypeId)
                                },
                                tradeName = OriginalMaterial.TradeName.Text,
                                partNo    = OriginalMaterial.PartNumber.Text,
                                supplier  = new C3CreateMaterialResponse.State.Supplier
                                {
                                    name = OriginalMaterial.Supplier.CachedNodeName,
                                    val  = OriginalMaterial.Supplier.RelatedNodeId.ToString()
                                },
                                sizes           = new Collection <C3CreateMaterialResponse.State.SizeRecord>(),
                                showOriginalUoM = false
                            }
                        };

                        #endregion Material Properties

                        #region Sizes

                        CswNbtMetaDataObjectClass     SizeOC      = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.SizeClass);
                        CswNbtMetaDataObjectClassProp MaterialOCP = SizeOC.getObjectClassProp(CswNbtObjClassSize.PropertyName.Material);
                        CswNbtView SizesView = new CswNbtView(_CswNbtResources)
                        {
                            ViewName = "MaterialCopySizes"
                        };
                        CswNbtViewRelationship SizeVR = SizesView.AddViewRelationship(SizeOC, false);
                        SizesView.AddViewPropertyAndFilter(SizeVR, MaterialOCP, OriginalMaterial.NodeId.PrimaryKey.ToString(), CswEnumNbtSubFieldName.NodeID);
                        ICswNbtTree SizesTree = _CswNbtResources.Trees.getTreeFromView(SizesView, false, false, false);
                        for (int i = 0; i < SizesTree.getChildNodeCount(); i++)
                        {
                            SizesTree.goToNthChild(i);
                            CswNbtObjClassSize SizeNode = SizesTree.getNodeForCurrentPosition();
                            Copy.Data.Create_Material.state.sizes.Add(new C3CreateMaterialResponse.State.SizeRecord
                            {
                                nodeTypeId = new C3CreateMaterialResponse.State.SizeRecord.SizeData
                                {
                                    value    = SizeNode.NodeTypeId.ToString(),
                                    readOnly = true,
                                    hidden   = true
                                },
                                unitCount = new C3CreateMaterialResponse.State.SizeRecord.SizeData
                                {
                                    value    = CswConvert.ToString(SizeNode.UnitCount.Value),
                                    readOnly = true,
                                    hidden   = false
                                },
                                quantity = new C3CreateMaterialResponse.State.SizeRecord.SizeData
                                {
                                    value    = CswConvert.ToString(SizeNode.InitialQuantity.Quantity),
                                    readOnly = true,
                                    hidden   = false
                                },
                                uom = new C3CreateMaterialResponse.State.SizeRecord.SizeData
                                {
                                    value    = SizeNode.InitialQuantity.CachedUnitName,
                                    readOnly = false == string.IsNullOrEmpty(SizeNode.InitialQuantity.CachedUnitName),
                                    hidden   = false,
                                    id       = SizeNode.InitialQuantity.UnitId.ToString()
                                },
                                catalogNo = new C3CreateMaterialResponse.State.SizeRecord.SizeData
                                {
                                    value    = SizeNode.CatalogNo.Text,
                                    readOnly = true,
                                    hidden   = false
                                },
                                quantityEditable = new C3CreateMaterialResponse.State.SizeRecord.SizeData
                                {
                                    value = SizeNode.QuantityEditable.Checked,
                                },
                                dispensible = new C3CreateMaterialResponse.State.SizeRecord.SizeData
                                {
                                    value = SizeNode.Dispensable.Checked
                                }
                            });
                            SizesTree.goToParentNode();
                        }

                        #endregion Sizes

                        #region Synonyms

                        CswNbtMetaDataObjectClass     MaterialSynonymOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.MaterialSynonymClass);
                        CswNbtMetaDataObjectClassProp SynMaterialOCP    = MaterialSynonymOC.getObjectClassProp(CswNbtObjClassMaterialSynonym.PropertyName.Material);
                        CswNbtView SynonymsView = new CswNbtView(_CswNbtResources)
                        {
                            ViewName = "MaterialCopySynonyms"
                        };
                        CswNbtViewRelationship SynonymsVR = SynonymsView.AddViewRelationship(MaterialSynonymOC, false);
                        SynonymsView.AddViewPropertyAndFilter(SynonymsVR, SynMaterialOCP, OriginalMaterial.NodeId.PrimaryKey.ToString(), CswEnumNbtSubFieldName.NodeID);
                        ICswNbtTree SynonymsTree = _CswNbtResources.Trees.getTreeFromView(SynonymsView, false, false, false);
                        for (int i = 0; i < SynonymsTree.getChildNodeCount(); i++)
                        {
                            SynonymsTree.goToNthChild(i);
                            CswNbtObjClassMaterialSynonym SynonymNode = SynonymsTree.getNodeForCurrentPosition();
                            CswNbtObjClassMaterialSynonym SynonymCopy = SynonymNode.CopyNode();
                            SynonymCopy.Material.RelatedNodeId = MaterialCopy.NodeId;
                            SynonymCopy.postChanges(false);
                            SynonymsTree.goToParentNode();
                        }

                        #endregion Synonyms

                        if (MaterialCopy.ObjectClass.ObjectClass == CswEnumNbtObjectClass.ChemicalClass)
                        {
                            if (CswEnumTristate.False == MaterialCopy.IsConstituent.Checked)
                            {
                                #region SDS

                                CswNbtView  SDSView = CswNbtObjClassSDSDocument.getAssignedSDSDocumentsView(_CswNbtResources, OriginalMaterial.NodeId);
                                ICswNbtTree SDSTree = _CswNbtResources.Trees.getTreeFromView(SDSView, false, false, false);
                                SDSTree.goToNthChild(0);
                                for (int i = 0; i < SDSTree.getChildNodeCount(); i++)
                                {
                                    SDSTree.goToNthChild(i);
                                    CswNbtObjClassSDSDocument SDSDoc  = SDSTree.getNodeForCurrentPosition();
                                    CswNbtObjClassSDSDocument SDSCopy = SDSDoc.CopyNode(IsNodeTemp: true);

                                    SDSCopy.Owner.RelatedNodeId = MaterialCopy.NodeId;
                                    SDSCopy.postChanges(false);

                                    if (i == 0)
                                    {
                                        Copy.Data.Create_Material.state.sds.sdsDocId = SDSCopy.NodeId.ToString();
                                    }
                                    SDSTree.goToParentNode();
                                }

                                #endregion SDS

                                #region Components

                                CswNbtMetaDataObjectClass     MaterialComponentOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.MaterialComponentClass);
                                CswNbtMetaDataObjectClassProp CompMaterialOCP     = MaterialComponentOC.getObjectClassProp(CswNbtObjClassMaterialComponent.PropertyName.Mixture);
                                CswNbtView ComponentsView = new CswNbtView(_CswNbtResources)
                                {
                                    ViewName = "MaterialCopyComponents"
                                };
                                CswNbtViewRelationship ComponentsVR = ComponentsView.AddViewRelationship(MaterialComponentOC, false);
                                ComponentsView.AddViewPropertyAndFilter(ComponentsVR, CompMaterialOCP, OriginalMaterial.NodeId.PrimaryKey.ToString(), CswEnumNbtSubFieldName.NodeID);
                                ICswNbtTree ComponentsTree = _CswNbtResources.Trees.getTreeFromView(ComponentsView, false, false, false);
                                for (int i = 0; i < ComponentsTree.getChildNodeCount(); i++)
                                {
                                    ComponentsTree.goToNthChild(i);
                                    CswNbtObjClassMaterialComponent ComponentNode = ComponentsTree.getNodeForCurrentPosition();
                                    CswNbtObjClassMaterialComponent ComponentCopy = ComponentNode.CopyNode();
                                    ComponentCopy.Mixture.RelatedNodeId     = MaterialCopy.NodeId;
                                    ComponentCopy.Constituent.RelatedNodeId = ComponentNode.Constituent.RelatedNodeId;
                                    ComponentCopy.postChanges(false);
                                    ComponentsTree.goToParentNode();
                                }

                                #endregion Components
                            }

                            #region GHS

                            CswNbtMetaDataObjectClass     GHSOC          = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.GHSClass);
                            CswNbtMetaDataObjectClassProp GHSMaterialOCP = GHSOC.getObjectClassProp(CswNbtObjClassGHS.PropertyName.Material);
                            CswNbtView GHSView = new CswNbtView(_CswNbtResources)
                            {
                                ViewName = "MaterialCopyGHS"
                            };
                            CswNbtViewRelationship GHSVR = GHSView.AddViewRelationship(GHSOC, false);
                            GHSView.AddViewPropertyAndFilter(GHSVR, GHSMaterialOCP, OriginalMaterial.NodeId.PrimaryKey.ToString(), CswEnumNbtSubFieldName.NodeID);
                            ICswNbtTree GHSTree = _CswNbtResources.Trees.getTreeFromView(GHSView, false, false, false);
                            for (int i = 0; i < GHSTree.getChildNodeCount(); i++)
                            {
                                GHSTree.goToNthChild(i);
                                CswNbtObjClassGHS GHSNode = GHSTree.getNodeForCurrentPosition();
                                CswNbtObjClassGHS GHSCopy = GHSNode.CopyNode();
                                GHSCopy.Material.RelatedNodeId = MaterialCopy.NodeId;
                                GHSCopy.postChanges(false);
                                GHSTree.goToParentNode();
                            }

                            #endregion GHS
                        }
                    }
                }
            }

            #endregion Create_Material Copy Data
        }
コード例 #21
0
            public bool existsInDb(bool ForceRecalc = false)
            {
                CswNbtPropertySetMaterial ExistingMaterial = existingMaterial(ForceRecalc);

                return(ExistingMaterial != null && false == ExistingMaterial.IsTemp);
            }
コード例 #22
0
        private CswNbtNode _commitMaterialNode(JObject MaterialObj)
        {
            CswNbtNode Ret = null;

            Int32 MaterialNodeTypeId = CswConvert.ToInt32(MaterialObj["materialnodetypeid"]);

            if (Int32.MinValue != MaterialNodeTypeId)
            {
                CswNbtMetaDataNodeType MaterialNt = _CswNbtResources.MetaData.getNodeType(MaterialNodeTypeId);
                if (null != MaterialNt)
                {
                    Ret = _CswNbtResources.Nodes[CswConvert.ToString(MaterialObj["materialId"])];
                    if (null != Ret)
                    {
                        // Set the Vendor node property isTemp = false if necessary
                        bool          IsConstituent = CswConvert.ToBoolean(MaterialObj["isConstituent"]);
                        CswPrimaryKey VendorNodePk  = CswConvert.ToPrimaryKey(CswConvert.ToString(MaterialObj["supplierid"]));
                        if (CswTools.IsPrimaryKey(VendorNodePk) && false == IsConstituent)
                        {
                            CswNbtObjClassVendor VendorNode = _CswNbtResources.Nodes.GetNode(VendorNodePk);
                            if (null != VendorNode && VendorNode.IsTemp)
                            {
                                VendorNode.PromoteTempToReal();
                            }
                        }

                        //Ret.IsTemp = false;
                        JObject MaterialProperties          = (JObject)MaterialObj["properties"];
                        CswNbtSdTabsAndProps SdTabsAndProps = new CswNbtSdTabsAndProps(_CswNbtResources);
                        SdTabsAndProps.saveProps(Ret.NodeId, Int32.MinValue, MaterialProperties, Ret.NodeTypeId, null, IsIdentityTab: false, setIsTempToFalse: false);

                        NewMaterial FinalMaterial = new NewMaterial(_CswNbtResources, Ret);
                        FinalMaterial.TradeName = CswConvert.ToString(MaterialObj["tradename"]);
                        if (false == IsConstituent)
                        {
                            FinalMaterial.SupplierId = CswConvert.ToPrimaryKey(CswConvert.ToString(MaterialObj["supplierid"]));
                            FinalMaterial.PartNo     = CswConvert.ToString(MaterialObj["partno"]);
                        }

                        CswNbtPropertySetMaterial NodeAsMaterial = FinalMaterial.commit();
                        NodeAsMaterial.Save.setHidden(value: false, SaveToDb: true);

                        JObject RequestObj = CswConvert.ToJObject(MaterialObj["request"]);
                        if (RequestObj.HasValues)
                        {
                            _processRequest(CswConvert.ToString(RequestObj["requestitemid"]), NodeAsMaterial);
                        }
                        CswNbtActReceiving Receiving = new CswNbtActReceiving(_CswNbtResources);

                        CswPrimaryKey SDSNodeId = new CswPrimaryKey();
                        if (null != MaterialObj["sdsDocId"])
                        {
                            SDSNodeId.FromString(MaterialObj["sdsDocId"].ToString());
                            JObject SDSProps = CswConvert.ToJObject(MaterialObj["sdsDocProperties"]);
                            Receiving.commitSDSDocNode(NodeAsMaterial.NodeId, SDSNodeId, SDSProps);
                        }
                        Ret.PromoteTempToReal();
                    }
                }

                if (null == Ret)
                {
                    throw new CswDniException(CswEnumErrorType.Error,
                                              "Failed to create new material.",
                                              "Attempted to call _commitMaterialNode failed.");
                }
            }
            return(Ret);
        }