コード例 #1
0
        public static SRPBTO GetSRPConfigRecord(string rootid, string orgid)
        {
            SRPBTO srp = new SRPBTO(orgid);

            object count = SqlProvider.dbExecuteScalar("CBOMV2", string.Format(@"DECLARE @Child hierarchyid SELECT @Child = HIE_ID 
                FROM CBOM_CATALOG_CATEGORY_V2 WHERE ID = '{0}' SELECT COUNT(*) FROM CBOM_CATALOG_CATEGORY_V2 
                WHERE HIE_ID.GetAncestor(1) = @Child AND ID = '{1}' ", srp.Org.ToString(), rootid));

            if (count != null && Convert.ToInt32(count) == 1)
            {
                List <CBOM_CATEGORY_RECORD> CBOMCategoryRecords = CBOMV2_EditorDAL.GetCBOMCategoryTreeByRootId(rootid, orgid);
                CBOM_CATEGORY_RECORD        RootRecord          = (from q in CBOMCategoryRecords where q.ID == rootid select q).FirstOrDefault();

                if (RootRecord != null)
                {
                    srp.BTOSName   = RootRecord.CATEGORY_NOTE;
                    srp.RealPartNo = RootRecord.CATEGORY_ID;

                    List <CBOM_CATEGORY_RECORD> SubRecord = (from q in CBOMCategoryRecords
                                                             where q.PAR_HIE_ID == RootRecord.HIE_ID &&
                                                             q.CATEGORY_TYPE == CategoryTypes.Root
                                                             orderby q.SEQ_NO
                                                             select q).ToList();

                    foreach (var defaultoption in SubRecord)
                    {
                        EasyUITreeNode RootTreeNode = new EasyUITreeNode(defaultoption.ID, defaultoption.VIRTUAL_ID, defaultoption.CATEGORY_ID, "", defaultoption.HIE_ID, "", 0, 0, 1, 0, 0, 0, 0);
                        RootTreeNode.csstype = NodeCssType.Tree_Node_Root;
                        CBOMCategoryRecordsToEasyUITreeNode(CBOMCategoryRecords, RootTreeNode);

                        if (defaultoption.CATEGORY_ID.ToUpper().IndexOf("DEFAULT") > -1)
                        {
                            srp.DefaultPackage = RootTreeNode;
                        }
                        else if (defaultoption.CATEGORY_ID.ToUpper().IndexOf("OPTION") > -1)
                        {
                            srp.OptionPackage = RootTreeNode;
                        }
                    }
                }
            }
            return(srp);
        }
コード例 #2
0
        public static UpdateDBResult AddProject2Cart(string mainItem, string ERPID, string cartID, string currency, string orgID)
        {
            UpdateDBResult udr = new UpdateDBResult();

            try
            {
                DataTable dt = DataCore.CBOMV2_ConfiguratorDAL.ExpandBOM(mainItem, "TWH1");
                if (dt == null || dt.Rows.Count == 0)
                {
                    udr.IsUpdated     = false;
                    udr.ServerMessage = "No data";
                    return(udr);
                }

                DataTable     dt2     = OracleProvider.GetDataTable("SAP_PRD", string.Format("select distinct mast.matnr as Parent_item, stpo.idnrk as child_item, stpo.potx1 as memo from saprdp.mast inner join saprdp.stas  on stas.stlal = mast.stlal AND stas.stlnr = mast.stlnr INNER JOIN saprdp.stpo on stpo.stlkn = stas.stlkn AND stpo.stlnr = stas.stlnr AND stpo.stlty = stas.stlty where stas.LKENZ<>'X' and mast.matnr='{0}'", mainItem));
                List <string> exclude = new List <string>();
                if (dt2 != null && dt2.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt2.Rows)
                    {
                        string pn = CBOMV2_EditorDAL.FormatSAPPartNoToNormal(dr["child_item"].ToString().Trim());
                        string m  = dr["memo"].ToString();
                        if ((m.IndexOf("耗材") > -1 || m.IndexOf("客供") > -1) && !exclude.Contains(pn))
                        {
                            exclude.Add(pn);
                        }
                    }
                }

                List <ConfiguredItems> items = new List <ConfiguredItems>();
                string prjOriginalPartNo     = mainItem; //保存原始料號 Ex. CM-10A3-T4A719901

                string[] pitem = mainItem.ToString().Split('-');
                if (pitem.Length != 3)
                {
                    udr.IsUpdated     = false;
                    udr.ServerMessage = string.Format("{0} does not have BTO parent item", mainItem);
                    return(udr);
                }

                mainItem = string.Format("{0}-{1}-BTO", pitem[0], pitem[1]);
                if (CheckItemOrdereable(mainItem, orgID) == false)
                {
                    udr.IsUpdated     = false;
                    udr.ServerMessage = "BTO item can not be sold";
                    return(udr);
                }

                object          mainItemDesc = SqlProvider.dbExecuteScalar("MY", string.Format("SELECT TOP 1 PRODUCT_DESC FROM SAP_PRODUCT WHERE PART_NO ='{0}'", mainItem));
                ConfiguredItems mi           = new ConfiguredItems();
                mi.name = mainItem;
                mi.desc = mainItemDesc != null?mainItemDesc.ToString() : string.Empty;

                mi.qty      = 1;
                mi.category = prjOriginalPartNo;
                items.Add(mi);

                foreach (DataRow dr in dt.Rows)
                {
                    string pn = CBOMV2_EditorDAL.FormatSAPPartNoToNormal(dr["IDNRK"].ToString().Trim());
                    if (!exclude.Contains(pn))
                    {
                        if (CheckItemOrdereable(pn, orgID) == false)
                        {
                            udr.IsUpdated     = false;
                            udr.ServerMessage = string.Format("{0} can not be sold", pn);
                            return(udr);
                        }

                        double qty = 1;
                        double.TryParse(dr["MENGE"].ToString().Trim(), out qty);
                        int             q    = Convert.ToInt32(Math.Floor(qty));
                        ConfiguredItems item = new ConfiguredItems();
                        item.name = pn;
                        item.desc = dr["OJTXP"].ToString().Trim();
                        item.qty  = q;
                        items.Add(item);
                    }
                }

                //ICC 20170731 中科組裝單要在最後附上 assembly part No.- 目前鎖定 AGS-CTOS-SYS-C
                ConfiguredItems ags     = new ConfiguredItems();
                object          agsDesc = SqlProvider.dbExecuteScalar("MY", "SELECT TOP 1 PRODUCT_DESC FROM SAP_PRODUCT WHERE PART_NO ='AGS-CTOS-SYS-C'");
                ags.name = "AGS-CTOS-SYS-C";
                ags.desc = agsDesc != null?agsDesc.ToString() : string.Empty;

                ags.qty = 1;
                items.Add(ags);

                if (string.IsNullOrEmpty(prjOriginalPartNo))
                {
                    udr.IsUpdated     = false;
                    udr.ServerMessage = "Original part No. is null";
                    return(udr);
                }

                udr = Configurator2Cart(Newtonsoft.Json.JsonConvert.SerializeObject(items), ERPID, cartID, currency, orgID, true);

                return(udr);
            }
            catch (Exception ex)
            {
                udr.IsUpdated     = false;
                udr.ServerMessage = ex.Message;
                return(udr);
            }
        }