Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="VendorName"></param>
        /// <returns></returns>
        public C3CreateMaterialResponse.State.Supplier constructVendorObject(string VendorName)
        {
            C3CreateMaterialResponse.State.Supplier Supplier = new C3CreateMaterialResponse.State.Supplier();

            CswNbtView VendorView = new CswNbtView(_CswNbtResources);

            VendorView.ViewName = "VendorWithNameEquals";

            CswNbtMetaDataObjectClass VendorOC           = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.VendorClass);
            CswNbtViewRelationship    ParentRelationship = VendorView.AddViewRelationship(VendorOC, true);

            CswNbtMetaDataObjectClassProp VendorNameOCP = VendorOC.getObjectClassProp(CswNbtObjClassVendor.PropertyName.VendorName);

            VendorView.AddViewPropertyAndFilter(ParentRelationship, VendorNameOCP, VendorName, CswEnumNbtSubFieldName.Text);

            // If MLM is enabled, we only want to match on corporate vendors
            if (_CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.MLM))
            {
                CswNbtMetaDataObjectClassProp VendorTypeOCP = VendorOC.getObjectClassProp(CswNbtObjClassVendor.PropertyName.VendorTypeName);
                VendorView.AddViewPropertyAndFilter(ParentRelationship, VendorTypeOCP, CswNbtObjClassVendor.VendorTypes.Corporate, CswEnumNbtSubFieldName.Text);
            }

            ICswNbtTree VendorsTree = _CswNbtResources.Trees.getTreeFromView(VendorView, false, true, true);
            bool        NewVendor   = true;

            if (VendorsTree.getChildNodeCount() > 0)
            {
                NewVendor = false;

                VendorsTree.goToNthChild(0);
                CswNbtObjClassVendor VendorNode = VendorsTree.getNodeForCurrentPosition();
                Supplier.name     = CswConvert.ToString(VendorNode.VendorName.Text);
                Supplier.val      = CswConvert.ToString(VendorNode.NodeId);
                Supplier.nodelink = CswConvert.ToString(VendorNode.Node.NodeLink);
            }

            if (NewVendor)
            {
                // Don't create a new node just return an empty value in the return object - Case 28687
                Supplier.name     = VendorName;
                Supplier.val      = string.Empty;
                Supplier.nodelink = string.Empty;
            }

            Supplier.corporate = _CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.MLM);

            return(Supplier);
        }//createVendorNode()
Exemplo n.º 2
0
        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()