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); }
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); } }