You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

616 lines
36 KiB

3 days ago
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. using NFine.Code;
  4. using NFine.Data.Extensions;
  5. using NFine.Domain._03_Entity;
  6. using NFine.Domain._03_Entity.SRM;
  7. using NFine.Repository;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Data;
  11. using System.Data.Common;
  12. using System.Runtime.Remoting.Lifetime;
  13. using System.Text;
  14. namespace NFine.Application
  15. {
  16. public class QuotedPriceApp : RepositoryFactory<ICSVendor>
  17. {
  18. //ICSWMS_SRMSysEntities db = new ICSWMS_SRMSysEntities();
  19. //初次加载页面数据
  20. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  21. {
  22. DataTable dt = new DataTable();
  23. var queryParam = queryJson.ToJObject();
  24. List<DbParameter> parameter = new List<DbParameter>();
  25. string sql = @" select distinct a.RFQCODE,a.RFQNAME,a.PURCHUGCODE,a.[STATUS] ,a.CREATEUSER,a.CREATEDATE,c.PURCHUGNAME,f.VenName cVenName,
  26. case when isnull(g.QUOTATIONCODE,'')='' then '' else g.QUOTATIONCODE end QUOTATIONCODE,g.LOGTIME,a.WorkPoint,case when isnull(g.QUOTATIONCODE,'')='' then 'WBJ' WHEN isnull(g.QUOTATIONCODE,'')<>'' AND isnull(h.QUOSTATUS,'')='' THEN 'YBJ' else h.QUOSTATUS end QUOSTATUS
  27. from dbo.ICSSORRFQ a
  28. left join ICSSORRFQ2NORMALITEM b on a.RFQCODE=b.RFQCODE and a.WorkPoint=b.WorkPoint
  29. left join dbo.ICSPURCHUG c on a.PURCHUGCODE=c.PURCHUGCODE
  30. left join ICSSORRFQ2VENDOR d on a.RFQCODE=d.RFQCODE and a.workpoint=d.WorkPoint
  31. LEFT JOIN dbo.ICSVendor f ON d.VENDORCODE=f.VenCode and a.workpoint=f.WorkPoint
  32. left join dbo.ICSSORRFQ2NORMALITEM e on a.RFQCODE=e.RFQCODE and b.ITEMCODE=e.ITEMCODE and a.workpoint=e.WorkPoint
  33. left join ICSSORQUOTATION g on a.RFQCODE=g.RFQCODE and a.workpoint=g.WorkPoint and f.VenCode=g.VENDORCODE
  34. left join ICSSORQUODETAILNORMAL h on g.QUOTATIONCODE=h.QUOTATIONCODE and g.WorkPoint=h.WorkPoint
  35. --where a.STATUS='Publish'
  36. where (ISNULL(a.STATUS,'')<>'New'OR ISNULL(a.STATUS,'')<>'Close')
  37. ";
  38. if (!string.IsNullOrWhiteSpace(queryJson))
  39. {
  40. if (!string.IsNullOrWhiteSpace(queryParam["QUOTATIONCODE"].ToString()))
  41. {
  42. sql += " and QUOTATIONCODE like '%" + queryParam["QUOTATIONCODE"].ToString() + "%' ";
  43. }
  44. if (!string.IsNullOrWhiteSpace(queryParam["RFQCODE"].ToString()))
  45. {
  46. sql += " and a.RFQCODE like '%" + queryParam["RFQCODE"].ToString() + "%' ";
  47. }
  48. if (!string.IsNullOrWhiteSpace(queryParam["RFQName"].ToString()))
  49. {
  50. sql += " and a.RFQNAME like '%" + queryParam["RFQName"].ToString() + "%' ";
  51. }
  52. if (!string.IsNullOrWhiteSpace(queryParam["ItemCode"].ToString()))
  53. {
  54. sql += " and e.ITEMCODE like '%" + queryParam["ItemCode"].ToString() + "%' ";
  55. }
  56. if (!string.IsNullOrWhiteSpace(queryParam["ItemName"].ToString()))
  57. {
  58. sql += " and e.ITEMNAME like '%" + queryParam["ItemName"].ToString() + "%' ";
  59. }
  60. if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  61. {
  62. sql += " and a.CREATEDATE >='" + queryParam["BeginDate"].ToString() + "' ";
  63. }
  64. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  65. {
  66. sql += " and a.CREATEDATE <='" + queryParam["EndDate"].ToString() + "'";
  67. }
  68. if (!string.IsNullOrWhiteSpace(queryParam["StatusNew"].ToString()))
  69. {
  70. sql += " and a.[STATUS] = '" + queryParam["StatusNew"].ToString() + "' ";
  71. }
  72. if (!string.IsNullOrWhiteSpace(queryParam["StatusPublish"].ToString()))
  73. {
  74. sql += " and a.[STATUS] = '" + queryParam["StatusPublish"].ToString() + "' ";
  75. }
  76. if (!string.IsNullOrWhiteSpace(queryParam["StatusClose"].ToString()))
  77. {
  78. sql += " and a.[STATUS] = '" + queryParam["StatusClose"].ToString() + "' ";
  79. }
  80. //佑伦增加
  81. if (!string.IsNullOrWhiteSpace(queryParam["ReleaseState"].ToString()))
  82. {
  83. if (queryParam["ReleaseState"].ToString() == "0")
  84. {
  85. sql += " and isnull(g.QUOTATIONCODE, '') = ''";
  86. }else if (queryParam["ReleaseState"].ToString() == "2")
  87. {
  88. sql += " and isnull(g.QUOTATIONCODE, '') <> ''";
  89. }
  90. }
  91. }
  92. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  93. {
  94. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  95. }
  96. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor") || NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "TempVendor")
  97. {
  98. sql += " and f.VenCode in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
  99. }
  100. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  101. }
  102. //初次加载QuotedPriceDetails页面数据
  103. public DataTable SelectOffer(string RFQCODE, ref Pagination jqgridparam, string WorkPoint)
  104. {
  105. DataTable dt = new DataTable();
  106. //var queryParam = queryJson.ToJObject();
  107. List<DbParameter> parameter = new List<DbParameter>();
  108. string VenCode = GetVendorCode(WorkPoint);
  109. string sql = @"select newid() as ID, b.ID as EnquiryID, b.ITEMCODE, b.ITEMNAME as INVNAME,case when b.ITEMTYPE='Real' then '正式物料' else '临时物料' end as ITEMTYPE ,
  110. b.RFQITEMREFERCODE ,b.RFQITEMREFERCODE as RFQITEMREFERCODEName, d.InvUnit as UNIT,b.REFERPRICE ,'' as QUOPRICE ,'New' as QUOSTATUS,'' as COSTDETAILSREFERCODE,b.REQUESTQUANTITY,'' as VENDORREJECTREASON, '' as QUOBUYERPRICE,'' as VENDORMEMO,'' as LoadQUOPRICE,b.MEMO as PurchaseMEMO,
  111. case when isnull(b.HASCOSTDETAILS,0)=0 then '否' else '是' end HASCOSTDETAILS,d.InvStd,'' as ADDITION1
  112. from ICSSORRFQ a
  113. left join ICSSORRFQ2NORMALITEM b on a.RFQCODE=b.RFQCODE and a.workpoint=b.WorkPoint
  114. left join ICSSORRFQ2VENDOR c on a.RFQCODE=c.RFQCODE and a.workpoint=b.WorkPoint
  115. left join ICSINVENTORY d on b.ITEMCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
  116. LEFT JOIN dbo.ICSVendor e ON c.VENDORCODE=e.VenCode and a.workpoint=e.WorkPoint
  117. where a.RFQCODE='{0}'";
  118. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  119. {
  120. //sql += " and f.cVenCode in (SELECT cVenCode FROM ICSVendor where cVenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
  121. sql += "and c.VENDORCODE='" + VenCode + "'";
  122. }
  123. sql = string.Format(sql, RFQCODE);
  124. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  125. }
  126. public DataTable SelectOfferByYL(string RFQCODE, ref Pagination jqgridparam, string WorkPoint)
  127. {
  128. DataTable dt = new DataTable();
  129. //var queryParam = queryJson.ToJObject();
  130. List<DbParameter> parameter = new List<DbParameter>();
  131. string VenCode = GetVendorCode(WorkPoint);
  132. string sql = @"select newid() as ID, b.ID as EnquiryID, b.ITEMCODE, b.ITEMNAME as INVNAME,case when b.ITEMTYPE='Real' then '正式物料' else '临时物料' end as ITEMTYPE ,
  133. b.RFQITEMREFERCODE ,b.RFQITEMREFERCODE as RFQITEMREFERCODEName, d.InvUnit as UNIT,b.REFERPRICE ,'' as QUOPRICE , '' AS Material,'' AS PROCESS,'' AS SurfaceTreatment,'' AS Other,'New' as QUOSTATUS,'' as COSTDETAILSREFERCODE,b.REQUESTQUANTITY,'' as VENDORREJECTREASON, '' as QUOBUYERPRICE,'' as VENDORMEMO,'' as LoadQUOPRICE,b.MEMO as PurchaseMEMO,
  134. case when isnull(b.HASCOSTDETAILS,0)=0 then '否' else '是' end HASCOSTDETAILS,d.InvStd,'' as ADDITION1
  135. from ICSSORRFQ a
  136. left join ICSSORRFQ2NORMALITEM b on a.RFQCODE=b.RFQCODE and a.workpoint=b.WorkPoint
  137. left join ICSSORRFQ2VENDOR c on a.RFQCODE=c.RFQCODE and a.workpoint=b.WorkPoint
  138. left join ICSINVENTORY d on b.ITEMCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
  139. LEFT JOIN dbo.ICSVendor e ON c.VENDORCODE=e.VenCode and a.workpoint=e.WorkPoint
  140. where a.RFQCODE='{0}'";
  141. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  142. {
  143. //sql += " and f.cVenCode in (SELECT cVenCode FROM ICSVendor where cVenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
  144. sql += "and c.VENDORCODE='" + VenCode + "'";
  145. }
  146. sql = string.Format(sql, RFQCODE);
  147. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  148. }
  149. public DataTable SecondSelectOffer(string RFQCODE, string QUOTATIONCODE, ref Pagination jqgridparam)
  150. {
  151. DataTable dt = new DataTable();
  152. //var queryParam = queryJson.ToJObject();
  153. List<DbParameter> parameter = new List<DbParameter>();
  154. string sql = @"select
  155. b.ID as ID,
  156. c.ID as EnquiryID,
  157. b.ITEMCODE, b.ITEMNAME as INVNAME,
  158. c.RFQITEMREFERCODE ,c.RFQITEMREFERCODE as RFQITEMREFERCODEName, d.InvUnit as UNIT,b.REFERPRICE ,b.QUOPRICE, b.QUOPRICE as LoadQUOPRICE , b.COSTDETAILSREFERCODE,b.REQUESTQUANTITY, b.QUOBUYERPRICE ,b.COSTDETAILSREFERCODE as COSTDETAILSREFERCODEName,b.VENDORMEMO,c.MEMO as PurchaseMEMO
  159. ,b.QUOSTATUS,case when isnull(c.HASCOSTDETAILS,0)=0 then '否' else '是' end HASCOSTDETAILS
  160. ,b.ADDITION1
  161. from ICSSORQUOTATION a
  162. left join ICSSORQUODETAILNORMAL b on a.QUOTATIONCODE=b.QUOTATIONCODE and a.WorkPoint=b.WorkPoint
  163. left join ICSSORRFQ2NORMALITEM c on b.RFQCODE=c.RFQCODE and b.ITEMCODE=c.ITEMCODE and a.WorkPoint=c.WorkPoint
  164. left join ICSINVENTORY d on b.ITEMCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
  165. LEFT JOIN dbo.ICSVendor e ON a.VENDORCODE=e.VenCode and a.workpoint=e.WorkPoint
  166. where a.RFQCODE='{0}' and a.QUOTATIONCODE='{1}'";
  167. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  168. {
  169. //sql += " and f.cVenCode in (SELECT cVenCode FROM ICSVendor where cVenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
  170. sql += "and a.VENDORCODE='" + NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode + "'";
  171. }
  172. sql = string.Format(sql, RFQCODE, QUOTATIONCODE);
  173. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  174. }
  175. public DataTable SecondSelectOfferByYL(string RFQCODE, string QUOTATIONCODE, ref Pagination jqgridparam)
  176. {
  177. DataTable dt = new DataTable();
  178. //var queryParam = queryJson.ToJObject();
  179. List<DbParameter> parameter = new List<DbParameter>();
  180. string sql = @"select
  181. b.ID as ID,
  182. c.ID as EnquiryID,
  183. b.ITEMCODE, b.ITEMNAME as INVNAME,
  184. c.RFQITEMREFERCODE ,c.RFQITEMREFERCODE as RFQITEMREFERCODEName, d.InvUnit as UNIT,b.REFERPRICE ,b.QUOPRICE, b.QUOPRICE as LoadQUOPRICE , b.COSTDETAILSREFERCODE,b.REQUESTQUANTITY, b.QUOBUYERPRICE ,b.COSTDETAILSREFERCODE as COSTDETAILSREFERCODEName,b.VENDORMEMO,c.MEMO as PurchaseMEMO
  185. ,b.QUOSTATUS,case when isnull(c.HASCOSTDETAILS,0)=0 then '否' else '是' end HASCOSTDETAILS
  186. ,b.ADDITION1,b.Material AS Material,b.PROCESS AS PROCESS,b.SurfaceTreatment AS SurfaceTreatment, b.Other AS Other
  187. from ICSSORQUOTATION a
  188. left join ICSSORQUODETAILNORMAL b on a.QUOTATIONCODE=b.QUOTATIONCODE and a.WorkPoint=b.WorkPoint
  189. left join ICSSORRFQ2NORMALITEM c on b.RFQCODE=c.RFQCODE and b.ITEMCODE=c.ITEMCODE and a.WorkPoint=c.WorkPoint
  190. left join ICSINVENTORY d on b.ITEMCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
  191. LEFT JOIN dbo.ICSVendor e ON a.VENDORCODE=e.VenCode and a.workpoint=e.WorkPoint
  192. where a.RFQCODE='{0}' and a.QUOTATIONCODE='{1}'";
  193. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  194. {
  195. //sql += " and f.cVenCode in (SELECT cVenCode FROM ICSVendor where cVenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
  196. sql += "and a.VENDORCODE='" + NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode + "'";
  197. }
  198. sql = string.Format(sql, RFQCODE, QUOTATIONCODE);
  199. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  200. }
  201. //获取QuotedPriceDetails页面文本框值
  202. public DataTable GetTxtInfo(string RFQCODE)
  203. {
  204. // string configSql = @" select distinct a.RFQCODE,a.RFQNAME,a.PURCHUGCODE,b.ITEMTYPE ,
  205. // c.PURCHUGNAME ,c.PURCHUGCONECT ,d.VENDORCODE,e.cVenName,d.VENDORTYPE ,b.CURRENCY,d.TAXRATE,d.PAYMENTCONDITION,a.MEMO ,b.COMPANYCODE
  206. // ,a.HASCOSTDETAILS
  207. // from dbo.ICSSORRFQ a
  208. // left join ICSSORRFQ2NORMALITEM b on a.RFQCODE=b.RFQCODE
  209. // left join dbo.ICSPURCHUG c on a.PURCHUGCODE=c.PURCHUGCODE
  210. // left join dbo.ICSSORRFQ2VENDOR d on a.RFQCODE=d.RFQCODE
  211. // left join ICSVendor e on d.VENDORCODE=e.cVenCode
  212. // left join ICSSORQUOTATION f on a.RFQCODE=f.RFQCODE WHERE a.RFQCODE='" + RFQCODE + "'";
  213. string configSql = @"SELECT DISTINCT a.RFQCODE,a.RFQNAME,a.PURCHUGCODE,b.ITEMTYPE ,
  214. g.F_FullName AS PURCHUGNAME,h.F_ItemName AS PURCHUGCONECT,d.VENDORCODE,e.VenName cVenName,d.VENDORTYPE ,b.CURRENCY,d.TAXRATE,d.PAYMENTCONDITION,a.MEMO ,b.COMPANYCODE
  215. ,a.HASCOSTDETAILS,a.FileName
  216. FROM dbo.ICSSORRFQ a
  217. LEFT JOIN ICSSORRFQ2NORMALITEM b ON a.RFQCODE=b.RFQCODE
  218. --left join dbo.ICSPURCHUG c on a.PURCHUGCODE=c.PURCHUGCODE
  219. LEFT JOIN dbo.ICSSORRFQ2VENDOR d ON a.RFQCODE=d.RFQCODE
  220. LEFT JOIN ICSVendor e ON d.VENDORCODE=e.VenCode
  221. LEFT JOIN ICSSORQUOTATION f ON a.RFQCODE=f.RFQCODE
  222. LEFT JOIN dbo.Sys_SRM_Items g ON a.purchugcode=g.F_EnCode
  223. LEFT JOIN dbo.Sys_SRM_ItemsDetail h ON g.F_Id=h.F_ItemId AND a.PURTeam=h.F_ItemCode
  224. WHERE a.RFQCODE='" + RFQCODE + "'";
  225. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  226. {
  227. configSql += " and e.VenCode in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
  228. }
  229. DataTable dt = SqlHelper.GetDataTableBySql(configSql);
  230. return dt;
  231. }
  232. //新增获取报价单号
  233. public string GetQuotationNo(string RFQCODE, string WorkPoint)
  234. {
  235. RFQCODE = RFQCODE.Substring(RFQCODE.Length - 6);
  236. string Pre = RFQCODE;
  237. string QuotationNo = "BJD" + GetCode(WorkPoint, "ICSSORQUOTATION", "QUOTATIONCODE", Pre, 3);
  238. return QuotationNo;
  239. }
  240. /// <summary>
  241. /// 上传供应商文件
  242. /// </summary>
  243. /// <param name="keyValue"></param>
  244. /// <returns></returns>
  245. public int UpLoadFile(string FileName, string QuotationNo)
  246. {
  247. DataTable dt = new DataTable();
  248. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  249. string sql = "";
  250. sql += string.Format(@"update ICSSORQUOTATION set GYSFile='{0}'
  251. where QUOTATIONCODE='{1}'",
  252. FileName, QuotationNo);
  253. sql += "\r\n";
  254. StringBuilder Str = new StringBuilder(sql);
  255. return Repository().ExecuteBySql(Str);
  256. }
  257. private string GetCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  258. {
  259. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  260. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  261. return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  262. }
  263. /// <summary>
  264. /// 获取供应商列表
  265. /// </summary>
  266. /// <returns></returns>
  267. public DataTable GetVendor(string RFQCODE)
  268. {
  269. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  270. string sql = "";
  271. sql = string.Format(@"select '' as VENDORCODE,'' as cVenName
  272. union all
  273. select VENDORCODE,b.cVenName from dbo.ICSSORRFQ2VENDOR a
  274. left join dbo.ICSVendor b on a.VENDORCODE=b.cVenCode
  275. WHERE VENDORCODE<>'' and RFQCODE='{0}'", RFQCODE);
  276. string role = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
  277. if (role != "admin")
  278. {
  279. sql += " and b.WorkPoint=" + WorkPoint.TrimEnd(',') + "";
  280. }
  281. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  282. return dt;
  283. }
  284. public DataTable GetcVenName(string VenCode, string RFQCODE)
  285. {
  286. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  287. string sql = "";
  288. sql = string.Format(@" select VENDORCODE,b.cVenName,a.VENDORTYPE from ICSSORRFQ2VENDOR a
  289. left join dbo.ICSVendor b on a.VENDORCODE=b.cVenCode
  290. where a.VENDORCODE='{0}' and RFQCODE='{1}'", VenCode, RFQCODE);
  291. //string role = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
  292. //if (role != "admin")
  293. //{
  294. // sql += " and b.WorkPoint=" + WorkPoint.TrimEnd(',') + "";
  295. //}
  296. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  297. return dt;
  298. }
  299. public string SaveQuotation(string keyValue)
  300. {
  301. string msg = "";
  302. string sql = string.Empty;
  303. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  304. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  305. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  306. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  307. foreach (var item in res)
  308. {
  309. JObject jo = (JObject)item;
  310. sql += @"
  311. IF NOT EXISTS(SELECT * FROM dbo.ICSSORQUOTATION WHERE QUOTATIONCODE='{4}'and WorkPoint = '{8}')
  312. BEGIN
  313. INSERT INTO dbo.ICSSORQUOTATION
  314. (
  315. ID, BUYERMEMO,COMPANYCODE,CREATEDATE,CREATETIME,CREATEUSER,LOGDATE,LOGTIME, LOGUSER, PROCESSDATE, QUOTATIONCODE,
  316. QUOTEDATE,RFQCODE, VENDORCODE,VENDORMEMO,WorkPoint,GYSFile
  317. )
  318. VALUES
  319. (newid(),'{0}','{1}',getdate(),getdate(),'{2}',getdate(),getdate(),'{3}',getdate(),'{4}',getdate(),'{5}','{6}','{7}','{8}','{9}')
  320. END
  321. ELSE
  322. BEGIN
  323. UPDATE dbo.ICSSORQUOTATION
  324. SET VENDORMEMO='{7}',LOGDATE=getdate(),LOGTIME=getdate(),LOGUSER='{3}', WorkPoint='{8}',GYSFile='{9}'
  325. WHERE QUOTATIONCODE='{4}' and WorkPoint = '{8}'
  326. END ";
  327. sql = string.Format(sql, jo["MEMO"].ToString(), jo["COMPANYCODE"].ToString(), MUSER, MUSER, jo["QuotationNo"].ToString(), jo["RFQCODE"].ToString(), jo["VENDORCODE"].ToString(), jo["Description"].ToString(), jo["WorkPoint"].ToString(), jo["GYSFile"].ToString());
  328. JArray Details = (JArray)JsonConvert.DeserializeObject(jo["Details"].ToString());
  329. foreach (var detail in Details)
  330. {
  331. JObject Detail = (JObject)detail;
  332. sql += @" IF NOT EXISTS(SELECT * FROM dbo.ICSSORQUODETAILNORMAL WHERE ID='{0}')
  333. BEGIN
  334. INSERT INTO dbo.ICSSORQUODETAILNORMAL
  335. (
  336. ID, BUYERMEMO, COMPANYCODE, COSTDETAILSREFERCODE, CREATEDATE, CREATETIME,CREATEUSER,ITEMCODE,ITEMNAME, LOGDATE,LOGTIME,LOGUSER,QUOBUYERPRICE,QUOPRICE,QUOTATIONCODE,
  337. QUOTEDATE,REQUESTQUANTITY,RFQCODE,UNIT,VENDORMEMO, WorkPoint,ADDITION1
  338. )
  339. VALUES
  340. ('{0}','{1}','{2}','{3}',getdate(),
  341. getdate(),'{4}','{5}','{6}'
  342. ,getdate(),getdate(),'{7}','{8}','{9}','{10}',
  343. getdate(),'{11}','{12}','{13}','{14}','{15}','{17}')
  344. END
  345. ELSE
  346. BEGIN
  347. UPDATE dbo.ICSSORQUODETAILNORMAL
  348. SET QUOPRICE='{9}',LOGDATE=getdate(),LOGTIME=getdate(),LOGUSER='{7}',QUOTEDATE=getdate(),WorkPoint='{15}',COSTDETAILSREFERCODE='{3}',VENDORMEMO='{14}',ADDITION1='{17}'
  349. WHERE ID='{0}'
  350. END ";
  351. sql += @" INSERT INTO dbo.ICSQuoteHistory
  352. (
  353. ID, QuotationID, EnquiryID, Price, CreateUser, CreateTime,WorkPoint
  354. )
  355. VALUES
  356. (newid(),'{0}','{16}','{9}','{4}',getdate(),'{15}')";
  357. sql = string.Format(sql, Detail["ID"].ToString(), jo["MEMO"].ToString(), jo["COMPANYCODE"].ToString(), Detail["COSTDETAILSREFERCODE"].ToString(), MUSER, Detail["ITEMCODE"].ToString(), Detail["INVNAME"].ToString(), MUSER, Detail["QUOBUYERPRICE"].ToString(),
  358. Detail["QUOPRICE"].ToString() == "" ? 0 : Convert.ToDecimal(Detail["QUOPRICE"].ToString()), jo["QuotationNo"].ToString(), Detail["REQUESTQUANTITY"].ToString(), jo["RFQCODE"].ToString(), Detail["UNIT"].ToString(), Detail["VENDORMEMO"].ToString(), jo["WorkPoint"].ToString(), Detail["EnquiryID"].ToString(), Detail["ADDITION1"].ToString());
  359. }
  360. }
  361. try
  362. {
  363. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  364. {
  365. }
  366. else
  367. {
  368. msg = "发布报价失败!";
  369. }
  370. }
  371. catch (Exception ex)
  372. {
  373. msg = ex.Message;
  374. }
  375. return msg;
  376. }
  377. public string SaveQuotationByYL(string keyValue)
  378. {
  379. string msg = "";
  380. string sql = string.Empty;
  381. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  382. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  383. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  384. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  385. foreach (var item in res)
  386. {
  387. JObject jo = (JObject)item;
  388. sql += @"
  389. IF NOT EXISTS(SELECT * FROM dbo.ICSSORQUOTATION WHERE QUOTATIONCODE='{4}'and WorkPoint = '{8}')
  390. BEGIN
  391. INSERT INTO dbo.ICSSORQUOTATION
  392. (
  393. ID, BUYERMEMO,COMPANYCODE,CREATEDATE,CREATETIME,CREATEUSER,LOGDATE,LOGTIME, LOGUSER, PROCESSDATE, QUOTATIONCODE,
  394. QUOTEDATE,RFQCODE, VENDORCODE,VENDORMEMO,WorkPoint,GYSFile
  395. )
  396. VALUES
  397. (newid(),'{0}','{1}',getdate(),getdate(),'{2}',getdate(),getdate(),'{3}',getdate(),'{4}',getdate(),'{5}','{6}','{7}','{8}','{9}')
  398. END
  399. ELSE
  400. BEGIN
  401. UPDATE dbo.ICSSORQUOTATION
  402. SET VENDORMEMO='{7}',LOGDATE=getdate(),LOGTIME=getdate(),LOGUSER='{3}', WorkPoint='{8}',GYSFile='{9}'
  403. WHERE QUOTATIONCODE='{4}' and WorkPoint = '{8}'
  404. END ";
  405. sql = string.Format(sql, jo["MEMO"].ToString(), jo["COMPANYCODE"].ToString(), MUSER, MUSER, jo["QuotationNo"].ToString(), jo["RFQCODE"].ToString(), jo["VENDORCODE"].ToString(), jo["Description"].ToString(), jo["WorkPoint"].ToString(), jo["GYSFile"].ToString());
  406. JArray Details = (JArray)JsonConvert.DeserializeObject(jo["Details"].ToString());
  407. foreach (var detail in Details)
  408. {
  409. JObject Detail = (JObject)detail;
  410. sql += @" IF NOT EXISTS(SELECT * FROM dbo.ICSSORQUODETAILNORMAL WHERE ID='{0}')
  411. BEGIN
  412. INSERT INTO dbo.ICSSORQUODETAILNORMAL
  413. (
  414. ID, BUYERMEMO, COMPANYCODE, COSTDETAILSREFERCODE, CREATEDATE, CREATETIME,CREATEUSER,ITEMCODE,ITEMNAME, LOGDATE,LOGTIME,LOGUSER,QUOBUYERPRICE,QUOPRICE,QUOTATIONCODE,
  415. QUOTEDATE,REQUESTQUANTITY,RFQCODE,UNIT,VENDORMEMO, WorkPoint,ADDITION1,Material,PROCESS,SurfaceTreatment,Other
  416. )
  417. VALUES
  418. ('{0}','{1}','{2}','{3}',getdate(),
  419. getdate(),'{4}','{5}','{6}'
  420. ,getdate(),getdate(),'{7}','{8}','{9}','{10}',
  421. getdate(),'{11}','{12}','{13}','{14}','{15}','{17}','{18}','{19}','{20}','{21}')
  422. END
  423. ELSE
  424. BEGIN
  425. UPDATE dbo.ICSSORQUODETAILNORMAL
  426. SET QUOPRICE='{9}',LOGDATE=getdate(),LOGTIME=getdate(),LOGUSER='{7}',QUOTEDATE=getdate(),WorkPoint='{15}',COSTDETAILSREFERCODE='{3}',VENDORMEMO='{14}',ADDITION1='{17}',Material='{18}',PROCESS='{19}',SurfaceTreatment='{20}',Other='{21}'
  427. WHERE ID='{0}'
  428. END ";
  429. sql += @" INSERT INTO dbo.ICSQuoteHistory
  430. (
  431. ID, QuotationID, EnquiryID, Price, CreateUser, CreateTime,WorkPoint
  432. )
  433. VALUES
  434. (newid(),'{0}','{16}','{9}','{4}',getdate(),'{15}')";
  435. sql = string.Format(sql, Detail["ID"].ToString(), jo["MEMO"].ToString(), jo["COMPANYCODE"].ToString(), Detail["COSTDETAILSREFERCODE"].ToString(), MUSER, Detail["ITEMCODE"].ToString(), Detail["INVNAME"].ToString(), MUSER, Detail["QUOBUYERPRICE"].ToString(),
  436. Detail["QUOPRICE"].ToString() == "" ? 0 : Convert.ToDecimal(Detail["QUOPRICE"].ToString()), jo["QuotationNo"].ToString(), Detail["REQUESTQUANTITY"].ToString(), jo["RFQCODE"].ToString(), Detail["UNIT"].ToString(), Detail["VENDORMEMO"].ToString(), jo["WorkPoint"].ToString(), Detail["EnquiryID"].ToString(), Detail["ADDITION1"].ToString(), Detail["Material"].ToString()==""? "0" : Detail["Material"].ToString(), Detail["PROCESS"].ToString()==""?"0": Detail["PROCESS"].ToString(), Detail["SurfaceTreatment"].ToString() == "" ? "0" : Detail["SurfaceTreatment"].ToString(), Detail["Other"].ToString() == "" ? "0" : Detail["Other"].ToString());
  437. }
  438. }
  439. try
  440. {
  441. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  442. {
  443. }
  444. else
  445. {
  446. msg = "发布报价失败!";
  447. }
  448. }
  449. catch (Exception ex)
  450. {
  451. msg = ex.Message;
  452. }
  453. return msg;
  454. }
  455. public DataTable SecondGetTxtInfo(string RFQCODE, string QUOTATIONCODE)
  456. {
  457. DataTable dt = new DataTable();
  458. List<DbParameter> parameter = new List<DbParameter>();
  459. string sql = @" select distinct a.RFQCODE,a.RFQNAME,a.PURCHUGCODE,b.ITEMTYPE ,
  460. c.PURCHUGNAME ,c.PURCHUGCONECT ,d.VENDORCODE,e.VenName cVenName,d.VENDORTYPE ,b.CURRENCY,d.TAXRATE,d.PAYMENTCONDITION,a.MEMO ,b.COMPANYCODE ,
  461. g.VENDORMEMO,g.QUOTATIONCODE,g.QUOTEDATE,a.HASCOSTDETAILS
  462. from dbo.ICSSORRFQ a
  463. left join ICSSORRFQ2NORMALITEM b on a.RFQCODE=b.RFQCODE and a.workpoint=b.WorkPoint
  464. left join ICSSORQUOTATION g on a.RFQCODE=g.RFQCODE and a.workpoint=g.WorkPoint
  465. left join dbo.ICSPURCHUG c on a.PURCHUGCODE=c.PURCHUGCODE and a.workpoint=c.WorkPoint
  466. left join dbo.ICSSORRFQ2VENDOR d on a.RFQCODE=d.RFQCODE and a.workpoint=d.WorkPoint
  467. left join ICSVendor e on d.VENDORCODE=e.VenCode and a.workpoint=e.WorkPoint
  468. left join ICSSORQUOTATION f on a.RFQCODE=f.RFQCODE and a.workpoint=f.WorkPoint
  469. where a.RFQCODE='{0}' and g.QUOTATIONCODE='{1}' ";
  470. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  471. {
  472. sql += " and e.VenCode in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
  473. }
  474. sql = string.Format(sql, RFQCODE, QUOTATIONCODE);
  475. return Repository().FindTableBySql(sql.ToString());
  476. }
  477. public DataTable GetVenDorFileTB(string QUOTATIONCODE)
  478. {
  479. string Vendor = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
  480. DataTable dt = new DataTable();
  481. string sql = @"SELECT GYSFile FROM ICSSORQUOTATION WHERE QUOTATIONCODE='{0}' and VENDORCODE='{1}'";
  482. sql = string.Format(sql, QUOTATIONCODE, Vendor);
  483. dt = SqlHelper.GetDataTableBySql(sql);
  484. return dt;
  485. }
  486. public DataTable GetSORRVenDorFile(string QUOTATIONCODE)
  487. {
  488. string Vendor = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
  489. DataTable dt = new DataTable();
  490. string sql = @"SELECT Filename FROM ICSSORQUOTATION a
  491. LEFT JOIN ICSSORRFQ b ON a.RFQCODE=b.RFQCODE WHERE
  492. QUOTATIONCODE='{0}' and VENDORCODE='{1}'";
  493. sql = string.Format(sql, QUOTATIONCODE, Vendor);
  494. dt = SqlHelper.GetDataTableBySql(sql);
  495. return dt;
  496. }
  497. public DataTable GetVenDorFileSSOR(string rfqno)
  498. {
  499. DataTable dt = new DataTable();
  500. string sql = @"
  501. SELECT b.GYSFile,b.VENDORCODE,b.QUOTATIONCODE,c.F_Account FROM ICsSORRFQ a
  502. LEFT JOIN ICSSORQUOTATION b ON a.RFQCODE=b.RFQCODE AND a.workpoint=b.WorkPoint
  503. left join Sys_SRM_User c on b.VENDORCODE=c.F_VenCode
  504. WHERE a.RFQCODE='{0}'";
  505. sql = string.Format(sql, rfqno);
  506. dt = SqlHelper.GetDataTableBySql(sql);
  507. return dt;
  508. }
  509. /// <summary>
  510. /// 获取供应商档案
  511. /// </summary>
  512. /// <returns></returns>
  513. public string GetVendorCode(string WorkPoint)
  514. {
  515. string sql = string.Empty;
  516. string VenCode = string.Empty;
  517. string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  518. string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  519. if (UserName != "admin")
  520. {
  521. sql = @"select b.VenCode cVenCode from Sys_SRM_User a
  522. left join ICSVendor b on a.F_VenCode=b.VenCode
  523. where F_Account='" + UserCode + "'and a.F_Location='" + WorkPoint + "'";
  524. DataTable GetVenCode = SqlHelper.GetDataTableBySql(sql);
  525. if (GetVenCode.Rows.Count > 0)
  526. {
  527. VenCode = GetVenCode.Rows[0]["cVenCode"].ToString();
  528. }
  529. }
  530. return VenCode;
  531. }
  532. public DataTable GetPOListExport(string RFQCODE, string WorkPoint)
  533. {
  534. //string sqlU9 = "SELECT DBIpAddress,DBName FROM dbo.Sys_DataBase WHERE DBSourceName='ERP'";
  535. //DataTable dtU9 = SqlHelper.GetDataTableBySql(sqlU9);
  536. //string U9IP = dtU9.Rows[0]["DBIpAddress"].ToString();
  537. //string DBName = dtU9.Rows[0]["DBName"].ToString();
  538. string VenCode = GetVendorCode(WorkPoint);
  539. List<DbParameter> parameter = new List<DbParameter>();
  540. string sql = @"select b.ID as ID,
  541. b.ITEMCODE as ,
  542. b.ITEMNAME as ,
  543. d.InvStd as ,
  544. b.UNIT AS ,
  545. b.REQUESTQUANTITY AS ,
  546. '' as ,
  547. ''AS ,
  548. Material as ,
  549. PROCESS as ,
  550. SurfaceTreatment as ,
  551. Other as
  552. from ICSSORRFQ a
  553. LEFT JOIN ICSSORRFQ2NORMALITEM b on a.RFQCODE=b.RFQCODE and a.workpoint=b.WorkPoint
  554. LEFT JOIN ICSSORRFQ2VENDOR c on a.RFQCODE=c.RFQCODE and a.workpoint=b.WorkPoint
  555. LEFT JOIN ICSINVENTORY d on b.ITEMCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
  556. LEFT JOIN dbo.ICSVendor e ON c.VENDORCODE=e.VenCode and a.workpoint=e.WorkPoint
  557. LEFT JOIN ICSSORQUOTATION g on a.RFQCODE=g.RFQCODE and a.workpoint=g.WorkPoint and e.VenCode=g.VENDORCODE
  558. LEFT JOIN ICSSORQUODETAILNORMAL h on g.QUOTATIONCODE=h.QUOTATIONCODE and g.WorkPoint=h.WorkPoint
  559. where a.RFQCODE='{0}'";
  560. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  561. {
  562. //sql += " and f.cVenCode in (SELECT cVenCode FROM ICSVendor where cVenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
  563. sql += "and c.VENDORCODE='" + VenCode + "'";
  564. }
  565. sql = string.Format(sql, RFQCODE);
  566. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  567. return dt;
  568. }
  569. public DataTable GetICSImport(string savePath)
  570. {
  571. return FileToExcel.ExcelToTable(savePath);
  572. }
  573. }
  574. }