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.

3755 lines
202 KiB

2 months ago
1 month ago
3 weeks ago
2 months ago
1 month ago
3 weeks ago
2 months ago
2 months ago
2 months ago
1 month ago
3 weeks ago
1 month ago
3 weeks ago
1 month ago
2 months ago
1 month ago
2 months ago
1 month ago
2 months ago
2 months ago
2 months ago
2 months ago
1 month ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
3 weeks ago
3 weeks ago
2 months ago
3 weeks ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
1 month ago
3 weeks ago
1 month ago
2 months ago
  1. using NFine.Code;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Data.Common;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using NFine.Repository;
  10. using NFine.Domain._03_Entity.SRM;
  11. using System.Data.Odbc;
  12. using System.Data.SqlClient;
  13. using NFine.Data.Extensions;
  14. using System.IO;
  15. using System.Net;
  16. using Newtonsoft.Json.Linq;
  17. using Newtonsoft.Json;
  18. using System.Configuration;
  19. using System.Security.Cryptography.X509Certificates;
  20. using System.Net.Security;
  21. using System.Net.Mail;
  22. using System.Web.UI.WebControls;
  23. namespace NFine.Application.SRM
  24. {
  25. public class RFQManagerApp : RepositoryFactory<ICSVendor>
  26. {
  27. private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
  28. public static DataTable Invmes = new DataTable();
  29. public static DataTable Supplier = new DataTable();
  30. public DataTable GetGridJson(string Json, ref Pagination jqgridparam)
  31. {
  32. string ParentId = "";
  33. DataTable table = new DataTable();
  34. var Jobject = Json.ToJObject();
  35. List<DbParameter> parameter = new List<DbParameter>();
  36. string sqlwhere = "";
  37. if (!string.IsNullOrEmpty(Jobject["PruOrganize"].ToString()))
  38. {
  39. sqlwhere += " and c.PURCHUGNAME like '%" + Jobject["PruOrganize"].ToString() + "%' ";
  40. }
  41. if (!string.IsNullOrEmpty(Jobject["PruTeam"].ToString()))
  42. {
  43. sqlwhere += " and h.F_ItemName like '%" + Jobject["PruTeam"].ToString() + "%'";
  44. }
  45. if (!string.IsNullOrEmpty(Jobject["RFQCode"].ToString()))
  46. {
  47. sqlwhere += " and a.RFQCode like '%" + Jobject["RFQCode"].ToString() + "%'";
  48. }
  49. if (!string.IsNullOrEmpty(Jobject["RFQName"].ToString()))
  50. {
  51. sqlwhere += " and a.RFQName like '%" + Jobject["RFQName"].ToString() + "%'";
  52. }
  53. if (!string.IsNullOrEmpty(Jobject["SupplierCode"].ToString()))
  54. {
  55. sqlwhere += " and B.SupplierCode like '%" + Jobject["SupplierCode"].ToString() + "%'";
  56. }
  57. if (!string.IsNullOrEmpty(Jobject["SupplierName"].ToString()))
  58. {
  59. sqlwhere += " and b.SupplierName like '%" + Jobject["SupplierName"].ToString() + "%'";
  60. }
  61. if (!string.IsNullOrEmpty(Jobject["InvCode"].ToString()))
  62. {
  63. sqlwhere += " and e.itemcode like '%" + Jobject["InvCode"].ToString() + "%'";
  64. }
  65. if (!string.IsNullOrEmpty(Jobject["InvName"].ToString()))
  66. {
  67. sqlwhere += " and e.itemname like '%" + Jobject["InvName"].ToString() + "%'";
  68. }
  69. if (!string.IsNullOrEmpty(Jobject["InvStd"].ToString()))
  70. {
  71. sqlwhere += " and f.InvStd like '%" + Jobject["InvStd"].ToString() + "%'";
  72. }
  73. if (!string.IsNullOrEmpty(Jobject["TimeFrom"].ToString()))
  74. {
  75. sqlwhere += " and a.BEGINDATE>='" + Jobject["TimeFrom"].ToString() + "'";
  76. }
  77. if (!string.IsNullOrEmpty(Jobject["TimeTo"].ToString()))
  78. {
  79. sqlwhere += " and a.BEGINDATE<='" + Jobject["TimeTo"].ToString() + "'";
  80. }
  81. if (!string.IsNullOrEmpty(Jobject["ReleaseState"].ToString().Trim(',')) && Jobject["ReleaseState"].ToString().Trim(',') != "'Examine'" && Jobject["ReleaseState"].ToString().Trim(',') != "'HasExamine'")
  82. {
  83. sqlwhere += " and a.status in ('" + Jobject["ReleaseState"].ToString().TrimEnd('\'').TrimEnd(',') + "')";
  84. }
  85. //if (Jobject["status"].ToString().Trim(',') == "'Examine'")
  86. //{
  87. // sqlwhere += " and a.RFQCODE in (SELECT a.RFQCODE FROM ICSSORRFQ a where a.RFQCODE in (SELECT DISTINCT b.RFQCODE from ICSSORQUODETAILNORMAL b WHERE b.QUOSTATUS = 'Pending'))";
  88. //}
  89. //if (Jobject["status"].ToString().Trim(',') == "'HasExamine'")
  90. //{
  91. // sqlwhere += " and a.RFQCODE in (SELECT a.RFQCODE FROM ICSSORRFQ a where a.RFQCODE in (SELECT DISTINCT b.RFQCODE from ICSSORQUODETAILNORMAL b WHERE b.QUOSTATUS in ('PricingApprove','PricingReject')))";
  92. //}
  93. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  94. {
  95. sqlwhere += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  96. }
  97. string sql = @"select distinct a.RFQCODE,RFQNAME,
  98. case a.STATUS
  99. when 'Publish' then ''
  100. when 'Examine' then ''
  101. when 'HasExamine' THEN ''
  102. WHEN 'New' THEN ''
  103. when 'Close' then ''
  104. when 'PricingApprove' then ''
  105. when 'BZPricingApprove' then ''
  106. when 'Comparison' then ''
  107. when 'Pending' then ''
  108. when 'Back' then '退'
  109. when 'End' then ''
  110. end as STATUS,
  111. case a.STATUS
  112. when 'Publish' then ''
  113. when 'Examine' then ''
  114. when 'HasExamine' THEN ''
  115. WHEN 'New' THEN ''
  116. when 'Close' then ''
  117. when 'PricingApprove' then ''
  118. when 'BZPricingApprove' then ''
  119. when 'Comparison' then ''
  120. when 'Pending' then ''
  121. when 'Back' then '退'
  122. when 'End' then ''
  123. end as HIDDSTATUS,
  124. a.BEGINDATE,a.ENDDATE,a.CREATEUSER,a.CREATETIME,c.PURCHUGNAME,h.F_RealName as PURTEAM,c.PURCHUGNAME as PURORG
  125. ,b.SupplierName as COMPANYNAME,A.LOGDATE,A.LOGUSER,A.workpoint
  126. ,a.ADDITION1
  127. ,a.ADDITION2
  128. from icsSORRFQ A
  129. left join BASE_SUPPLIER B ON B.SupplierCode = a.COMPANYCODE
  130. left join ICSPurChug c on c.PURCHUGCODE = a.PURCHUGCODE
  131. --left join ICSPURCHUGSON d on d.PURCHUGSONCODE = a.PURTeam
  132. left join icsSORRFQ2NORMALITEM e on e.RFQCODE=a.RFQCODE
  133. left join ICSINVENTORY f on f.INVCODE=e.ITEMCODE
  134. left join icsSORQUOTATION g on g.RFQCODE=a.Rfqcode
  135. left join dbo.Sys_SRM_User h on h.F_Account=A.purteam
  136. where 1=1 " + sqlwhere;
  137. ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  138. if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  139. {
  140. return SqlHelper.FindTablePageBySql_OtherTempbyLOGUSER(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  141. }
  142. else
  143. {
  144. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  145. }
  146. }
  147. public DataTable GetGridJsonByBJ(string Json, ref Pagination jqgridparam)
  148. {
  149. DataTable table = new DataTable();
  150. var Jobject = Json.ToJObject();
  151. List<DbParameter> parameter = new List<DbParameter>();
  152. string ParentId = "";
  153. string sql = @"select distinct a.RFQCODE,RFQNAME,
  154. case a.STATUS
  155. when 'Publish' then ''
  156. when 'Examine' then ''
  157. when 'HasExamine' THEN ''
  158. WHEN 'New' THEN ''
  159. when 'Close' then ''
  160. when 'PricingApprove' then ''
  161. when 'BZPricingApprove' then ''
  162. when 'Comparison' then ''
  163. when 'Pending' then ''
  164. when 'Back' then '退'
  165. when 'End' then ''
  166. end as STATUS,
  167. case a.STATUS
  168. when 'Publish' then ''
  169. when 'Examine' then ''
  170. when 'HasExamine' THEN ''
  171. WHEN 'New' THEN ''
  172. when 'Close' then ''
  173. when 'PricingApprove' then ''
  174. when 'BZPricingApprove' then ''
  175. when 'Comparison' then ''
  176. when 'Pending' then ''
  177. when 'Back' then '退'
  178. when 'End' then ''
  179. end as HIDDSTATUS,
  180. a.BEGINDATE,a.ENDDATE,a.CREATEUSER,a.CREATETIME,c.PURCHUGNAME,h.F_ItemName as PURTEAM,c.PURCHUGNAME as PURORG
  181. ,b.SupplierName as COMPANYNAME,A.LOGDATE,A.LOGUSER,A.workpoint,A.memo,
  182. CASE WHEN i.XNum=j.BNum THEN '0' ELSE '1' END AS BSTATUS
  183. --,BJDFileName
  184. from icsSORRFQ A
  185. left join BASE_SUPPLIER B ON B.SupplierCode = a.COMPANYCODE
  186. left join ICSPurChug c on c.PURCHUGCODE = a.PURCHUGCODE
  187. --left join ICSPURCHUGSON d on d.PURCHUGSONCODE = a.PURTeam
  188. left join icsSORRFQ2NORMALITEM e on e.RFQCODE=a.RFQCODE
  189. left join ICSINVENTORY f on f.INVCODE=e.ITEMCODE
  190. LEFT JOIN ICSSORRFQ2VENDOR ven ON a.Rfqcode = ven.RFQCODE
  191. left join icsSORQUOTATION g on g.RFQCODE=a.Rfqcode AND ven.VENDORCODE = g.VENDORCODE
  192. left join Sys_SRM_ItemsDetail h on h.F_ItemCode=A.purteam
  193. LEFT JOIN (SELECT COUNT(*) AS XNum,RFQCODE,VENDORCODE FROM ICSSORRFQ2VENDOR a WHERE (ISNULL(venCodeStatus,'')='' and ISNULL(RFQCodeStatus,'')='') GROUP BY RFQCODE,VENDORCODE
  194. ) i ON a.RFQCODE=i.RFQCODE AND ven.VENDORCODE=i.VENDORCODE
  195. LEFT JOIN (SELECT COUNT(*) AS BNum,RFQCODE,VENDORCODE FROM icsSORQUOTATION a GROUP BY RFQCODE,VENDORCODE) j
  196. ON a.RFQCODE=j.RFQCODE AND ven.VENDORCODE=j.VENDORCODE
  197. where 1=1 ";
  198. if (!string.IsNullOrEmpty(Jobject["PruOrganize"].ToString()))
  199. {
  200. sql += " and c.PURCHUGNAME like '%" + Jobject["PruOrganize"].ToString() + "%' ";
  201. }
  202. if (!string.IsNullOrEmpty(Jobject["PruTeam"].ToString()))
  203. {
  204. sql += " and h.F_ItemName like '%" + Jobject["PruTeam"].ToString() + "%'";
  205. }
  206. if (!string.IsNullOrEmpty(Jobject["RFQCode"].ToString()))
  207. {
  208. sql += " and a.RFQCode like '%" + Jobject["RFQCode"].ToString() + "%'";
  209. }
  210. if (!string.IsNullOrEmpty(Jobject["RFQName"].ToString()))
  211. {
  212. sql += " and a.RFQName like '%" + Jobject["RFQName"].ToString() + "%'";
  213. }
  214. if (!string.IsNullOrEmpty(Jobject["SupplierCode"].ToString()))
  215. {
  216. sql += " and B.SupplierCode like '%" + Jobject["SupplierCode"].ToString() + "%'";
  217. }
  218. if (!string.IsNullOrEmpty(Jobject["SupplierName"].ToString()))
  219. {
  220. sql += " and b.SupplierName like '%" + Jobject["SupplierName"].ToString() + "%'";
  221. }
  222. if (!string.IsNullOrEmpty(Jobject["InvCode"].ToString()))
  223. {
  224. sql += " and e.itemcode like '%" + Jobject["InvCode"].ToString() + "%'";
  225. }
  226. if (!string.IsNullOrEmpty(Jobject["InvName"].ToString()))
  227. {
  228. sql += " and e.itemname like '%" + Jobject["InvName"].ToString() + "%'";
  229. }
  230. if (!string.IsNullOrEmpty(Jobject["InvStd"].ToString()))
  231. {
  232. sql += " and f.InvStd like '%" + Jobject["InvStd"].ToString() + "%'";
  233. }
  234. if (!string.IsNullOrEmpty(Jobject["TimeFrom"].ToString()))
  235. {
  236. sql += " and a.BEGINDATE>='" + Jobject["TimeFrom"].ToString() + "'";
  237. }
  238. if (!string.IsNullOrEmpty(Jobject["TimeTo"].ToString()))
  239. {
  240. sql += " and a.BEGINDATE<='" + Jobject["TimeTo"].ToString() + "'";
  241. }
  242. if (!string.IsNullOrEmpty(Jobject["status"].ToString().Trim(',')) && Jobject["status"].ToString().Trim(',') != "'Examine'" && Jobject["status"].ToString().Trim(',') != "'HasExamine'")
  243. {
  244. sql += " and a.status in (" + Jobject["status"].ToString().TrimEnd('\'').TrimEnd(',') + ")";
  245. }
  246. if (Jobject["status"].ToString().Trim(',') == "'Examine'")
  247. {
  248. sql += " and a.RFQCODE in (SELECT a.RFQCODE FROM ICSSORRFQ a where a.RFQCODE in (SELECT DISTINCT b.RFQCODE from ICSSORQUODETAILNORMAL b WHERE b.QUOSTATUS = 'Pending'))";
  249. }
  250. if (Jobject["status"].ToString().Trim(',') == "'HasExamine'")
  251. {
  252. sql += " and a.RFQCODE in (SELECT a.RFQCODE FROM ICSSORRFQ a where a.RFQCODE in (SELECT DISTINCT b.RFQCODE from ICSSORQUODETAILNORMAL b WHERE b.QUOSTATUS in ('PricingApprove','PricingReject')))";
  253. }
  254. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  255. {
  256. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  257. }
  258. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Business")
  259. //{
  260. // sql += " and c.PURCHUGNAME in(" + NFine.Code.OperatorProvider.Provider.GetCurrent().cPTName.TrimEnd(',') + ")";
  261. //}
  262. //ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  263. //if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  264. //{
  265. // return SqlHelper.FindTablePageBySql_OtherTempByZZ(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  266. //}
  267. //else
  268. //{
  269. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  270. //}
  271. //return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  272. }
  273. public DataTable GetPUROrganize(string workpoint)
  274. {
  275. string wheresql = "";
  276. if (!string.IsNullOrEmpty(workpoint))
  277. {
  278. wheresql += " and workpoint='" + workpoint + "'";
  279. }
  280. string sql = " select '' as purchugcode,''as purchugname from ICSPurChug Union select purchugcode,purchugname from ICSPurChug where 1=1 " + wheresql;
  281. return Repository().FindTableBySql(sql, null);
  282. }
  283. public DataTable GetPURTeam(string code)
  284. {
  285. string sql = @" SELECT '' AS purchugcode,'' AS purchugname
  286. union all
  287. SELECT DISTINCT a.F_Account AS purchugcode,F_RealName AS purchugname
  288. FROM sys_srm_user a
  289. LEFT JOIN sys_srm_Role b ON a.F_RoleId=b.F_ID
  290. WHERE b.F_EnCode='Purchasing Staff'";
  291. //if (!string.IsNullOrEmpty(code))
  292. //{
  293. // sql += " where F_EnCode='" + code + "'";
  294. //}
  295. return Repository().FindTableBySql(sql, null);
  296. }
  297. public DataRow GetRFQ(string Rfqcode)
  298. {
  299. string sql = @"select begindate,COSTANALYSISTEMPLATE,costtype,CONVERT(VARCHAR(10),
  300. createdate,120)AS createdate,createtime,createuser,ISUNIFYANALYSISTEMPLATE,
  301. logdate,logtime,loguser,poct,a.purchugcode,b.PURCHUGNAME,rfqname,status,
  302. a.purteam,a.workpoint,companycode,rfqcode,memo,a.FileName,a.HASCOSTDETAILS
  303. from ICSSORRFQ a
  304. LEFT JOIN dbo.ICSPurChug b ON a.PURCHUGCODE=b.PURCHUGCODE
  305. where rfqcode='" + Rfqcode + "'";
  306. DataTable table = Repository().FindTableBySql(sql, null);
  307. return table.Rows[0];
  308. }
  309. public string GetSercode(string workpoint)
  310. {
  311. string datetime = DateTime.Now.ToString("yyyyMMdd");
  312. SqlParameter[] para = { new SqlParameter("@WorkPoint", workpoint), new SqlParameter("@TbName", "ICSSORRFQ"), new SqlParameter("@CodeCol", "RFQCODE"), new SqlParameter("@Pre", "XJD" + datetime), new SqlParameter("@NumLen", 3) };
  313. DataTable table = Repository().FindTableByProc("Addins_GetSerialCode", para);
  314. return table.Rows[0][0].ToString();
  315. }
  316. public void updateS(string ID, string paymentcondition)
  317. {
  318. DataRow[] a = Supplier.Select("ID='" + ID + "'");
  319. foreach (var item in a)
  320. {
  321. item["供应商付款条件"] = paymentcondition;
  322. }
  323. //return "操作成功!";
  324. }
  325. public void updateiss(string ID, string isshowprice)
  326. {
  327. DataRow[] a = Supplier.Select("ID='" + ID + "'");
  328. foreach (var item in a)
  329. {
  330. item["是否显示参考价"] = isshowprice;
  331. }
  332. //return "操作成功!";
  333. }
  334. /// <summary>
  335. /// 新增询价单
  336. /// </summary>
  337. /// <param name="details"></param>
  338. public void AddRFQ(ICSSORRFQ details)
  339. {
  340. string sql = string.Empty;
  341. try
  342. {
  343. List<ICSSORRFQ2NORMALITEM> list_BD = JsonConvert.DeserializeObject<List<ICSSORRFQ2NORMALITEM>>(details.arrayBidDocBD);
  344. List<ICSSORRFQ2VENDOR> list_GYS = JsonConvert.DeserializeObject<List<ICSSORRFQ2VENDOR>>(details.arrayBidDocGYS);
  345. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  346. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  347. conn.Open();
  348. SqlTransaction sqlTran = conn.BeginTransaction();
  349. SqlCommand cmd = new SqlCommand();
  350. cmd.Transaction = sqlTran;
  351. cmd.Connection = conn;
  352. try
  353. {
  354. string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  355. string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  356. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  357. if (details.RFQstatus == "2")
  358. {
  359. sql = "select * from ICSSORRFQ where RFQCODE='" + details.RFQCODE + "' and WorkPoint='" + details.WorkPoint + "'";
  360. DataTable dt = SqlCommandHelper.SQlReturnData(sql, cmd);
  361. if (dt != null && dt.Rows.Count > 0)
  362. {
  363. throw new Exception("询价单已存在!");
  364. }
  365. }
  366. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ WHERE RFQCODE=@RFQCODE and WorkPoint=@workpoint)
  367. BEGIN
  368. INSERT INTO dbo.ICSSORRFQ(
  369. begindate,COSTANALYSISTEMPLATE,costtype,createdate,createtime,
  370. createuser,ISUNIFYANALYSISTEMPLATE,logdate,logtime,loguser,
  371. poct,purchugcode,rfqname,status,purteam,
  372. workpoint,companycode,rfqcode,memo,HASCOSTDETAILS,FileName
  373. )
  374. VALUES (@begindate,@COSTANALYSISTEMPLATE,@costtype,getdate(),getdate() ,
  375. @createuser,@ISUNIFYANALYSISTEMPLATE,getdate(),getdate(),@loguser,
  376. @poct,@purchugcode,@rfqname,@status,@purteam,
  377. @workpoint,@companycode,@rfqcode,@memo,@HASCOSTDETAILS,@FileName)
  378. END
  379. ELSE
  380. BEGIN
  381. UPDATE dbo.ICSSORRFQ SET
  382. begindate=@begindate ,
  383. COSTANALYSISTEMPLATE=@COSTANALYSISTEMPLATE ,
  384. costtype=@costtype,
  385. ISUNIFYANALYSISTEMPLATE=@ISUNIFYANALYSISTEMPLATE ,
  386. logdate=getdate() ,
  387. logtime=getdate() ,
  388. loguser=@loguser,
  389. purchugcode=@purchugcode ,
  390. rfqname=@rfqname ,
  391. purteam=@purteam,
  392. memo=@memo,
  393. HASCOSTDETAILS=@HASCOSTDETAILS,
  394. FileName=@FileName
  395. WHERE RFQCODE=@RFQCODE AND WorkPoint=@workpoint
  396. END";
  397. SqlParameter[] sp_Detail = {
  398. new SqlParameter("@begindate",details.BEGINDATE),
  399. new SqlParameter("@COSTANALYSISTEMPLATE",details.COSTANALYSISTEMPLATE),
  400. new SqlParameter("@costtype",details.COSTTYPE),
  401. new SqlParameter("@createuser",MuserName),
  402. new SqlParameter("@ISUNIFYANALYSISTEMPLATE",details.ISUNIFYANALYSISTEMPLATE),
  403. new SqlParameter("@loguser",MuserName),
  404. //new SqlParameter("@ZTBCount",details.ZTBCount),
  405. new SqlParameter("@poct",details.POCT),
  406. new SqlParameter("@purchugcode",details.PURCHUGCODE),
  407. new SqlParameter("@rfqname",details.RFQNAME),
  408. new SqlParameter("@status","New"),
  409. new SqlParameter("@PURTeam",details.PURTeam),
  410. new SqlParameter("@workpoint",details.WorkPoint),
  411. new SqlParameter("@companycode",details.WorkPoint),
  412. new SqlParameter("@rfqcode",details.RFQCODE),
  413. new SqlParameter("@memo",details.MEMO),
  414. new SqlParameter("@HASCOSTDETAILS",details.HASCOSTDETAILS),
  415. new SqlParameter("@FileName",details.FileName),
  416. //new SqlParameter("@ENDDATE",details.ENDDATE)
  417. };
  418. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
  419. #region 标的
  420. foreach (ICSSORRFQ2NORMALITEM BD in list_BD)
  421. {
  422. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ2NORMALITEM WHERE ID='" + BD.ID + @"' and WorkPoint='" + BD.WorkPoint + @"')
  423. BEGIN
  424. INSERT INTO dbo.ICSSORRFQ2NORMALITEM(
  425. COMPANYCODE,COSTANALYSISTEMPLATE,CREATEDATE,CREATETIME,CREATEUSER,
  426. HASCOSTDETAILS,ISINCLUDETAX,ITEMCLASSID,ITEMCODE,ITEMNAME,
  427. ITEMTYPE,LOGDATE,LOGTIME,LOGUSER,MEMO,
  428. PRINCINGITEMCODE,REFERPRICE,CURRENCY,REQUESTQUANTITY,RFQCODE,
  429. RFQITEMREFERCODE,UNIT,ID,workpoint,
  430. Requirements,ManuFacturer,ManuFacturerInvCode)
  431. VALUES (
  432. '" + details.WorkPoint + @"','" + BD.COSTANALYSISTEMPLATE + @"',getdate(),getdate(),'" + MuserName + @"',
  433. '" + BD.HASCOSTDETAILS + @"','" + BD.ISINCLUDETAX + @"','" + BD.ITEMCLASSID + @"','" + BD.ITEMCODE + @"','" + BD.ITEMNAME + @"',
  434. '" + BD.ITEMTYPE + @"',getdate(),getdate(),'" + MuserName + @"','" + BD.MEMO + @"',
  435. '" + BD.PRINCINGITEMCODE + @"', " + Convert.ToDecimal(BD.REFERPRICE) + @",'" + BD.CURRENCY + @"'," + Convert.ToDecimal(BD.REQUESTQUANTITY) + @",'" + details.RFQCODE + @"',
  436. '" + BD.RFQITEMREFERCODE + @"','" + BD.UNIT + @"',NewID(),'" + details.WorkPoint + @"',
  437. '" + BD.Requirements + @"','" + BD.ManuFacturer + @"','" + BD.ManuFacturerInvCode + @"'
  438. )
  439. END
  440. ELSE
  441. BEGIN
  442. UPDATE dbo.ICSSORRFQ2NORMALITEM SET
  443. MEMO='" + BD.MEMO + @"' ,
  444. Requirements='" + BD.Requirements + @"' ,
  445. REQUESTQUANTITY=" + Convert.ToDecimal(BD.REQUESTQUANTITY) + @",
  446. HASCOSTDETAILS='" + BD.HASCOSTDETAILS + @"' ,
  447. RFQITEMREFERCODE='" + BD.RFQITEMREFERCODE + @"' ,
  448. LOGDATE=getdate() ,
  449. LOGTIME=getdate(),
  450. LOGUSER='" + MuserName + @"' ,
  451. ManuFacturer='" + BD.ManuFacturer + @"',
  452. ManuFacturerInvCode='" + BD.ManuFacturerInvCode + @"'
  453. WHERE ID='" + BD.ID + @"' AND WorkPoint='" + BD.WorkPoint + @"'
  454. END
  455. ";
  456. SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  457. }
  458. #endregion
  459. #region 临时物料
  460. foreach (ICSSORRFQ2NORMALITEM BD in list_BD)
  461. {
  462. if (BD.Source == "手工")
  463. {
  464. sql = @"INSERT INTO dbo.ICSINVENTORY
  465. (
  466. ID
  467. ,INVCODE
  468. ,INVNAME
  469. ,INVUOM
  470. ,INVSTD
  471. ,INVTYPE
  472. ,INVCLASS
  473. ,INVEXPORTIMPORT
  474. ,MUSER
  475. ,MUSERName
  476. ,MTIME
  477. ,WorkPoint
  478. )
  479. VALUES (
  480. @ID
  481. ,@INVCODE
  482. ,@INVNAME
  483. ,@INVUOM
  484. ,@INVSTD
  485. ,@INVTYPE
  486. ,@INVCLASS
  487. ,@INVEXPORTIMPORT
  488. ,@MUSER
  489. ,@MUSERName
  490. ,Getdate()
  491. ,@WorkPoint
  492. )
  493. ";
  494. SqlParameter[] sp_INv = {
  495. new SqlParameter("@ID",BD.ID),
  496. new SqlParameter("@INVCODE",BD.ITEMCODE),
  497. new SqlParameter("@INVNAME",BD.ITEMNAME),
  498. new SqlParameter("@INVUOM",BD.UNIT),
  499. new SqlParameter("@INVSTD",BD.InvStd),
  500. new SqlParameter("@INVTYPE","生产类型"),
  501. new SqlParameter("@INVCLASS","生产类型"),
  502. new SqlParameter("@INVEXPORTIMPORT","生产类型"),
  503. new SqlParameter("@WorkPoint",details.WorkPoint),
  504. new SqlParameter("@MUSER",Muser),
  505. new SqlParameter("@MUSERName",MuserName),
  506. //new SqlParameter("@WorkPoint",BD.cCode)
  507. };
  508. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_INv, cmd);
  509. }
  510. }
  511. #endregion
  512. #region 供应商
  513. foreach (ICSSORRFQ2VENDOR GYS in list_GYS)
  514. {
  515. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ2VENDOR WHERE ID='" + GYS.ID + @"' and WorkPoint='" + GYS.WorkPoint + @"')
  516. BEGIN
  517. INSERT INTO dbo.ICSSORRFQ2VENDOR
  518. (COMPANYCODE,CREATEDATE,CREATETIME,CREATEUSER,CURRENCY,
  519. ISCLOSED,ISSHOWPRICE,LOCATIONCODE,LOGDATE,LOGTIME,
  520. LOGUSER,PAYMENTCONDITION,PRINCINGVENDORCODE,RFQCODE,TAXRATE
  521. ,VENDORCODE,VENDORTYPE,ADDITION1,ID,workpoint,addition2)
  522. VALUES
  523. ('" + details.WorkPoint + @"',getdate(),getdate(),'" + MuserName + @"','" + GYS.CURRENCY + @"',
  524. '" + GYS.ISCLOSED + @"','" + GYS.ISSHOWPRICE + @"','" + GYS.LOCATIONCODE + @"',getdate(),getdate(),
  525. '" + MuserName + @"','" + GYS.PAYMENTCONDITION + @"','" + GYS.PRINCINGVENDORCODE + @"','" + details.RFQCODE + @"','" + GYS.TAXRATE + @"'
  526. ,'" + GYS.VENDORCODE + @"','" + GYS.VENDORTYPE + @"','" + GYS.ADDITION1 + @"','" + GYS.ID + @"','" + details.WorkPoint + @"','" + details.ADDITION2 + @"')
  527. END
  528. ELSE
  529. BEGIN
  530. UPDATE dbo.ICSSORRFQ2VENDOR SET
  531. PAYMENTCONDITION='" + GYS.PAYMENTCONDITION + @"' ,
  532. ISSHOWPRICE='" + GYS.ISSHOWPRICE + @"',
  533. LOGDATE=getdate() ,
  534. LOGTIME=getdate(),
  535. LOGUSER='" + MuserName + @"'
  536. WHERE ID='" + GYS.ID + @"' AND WorkPoint='" + GYS.WorkPoint + @"'
  537. END
  538. ";
  539. SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  540. }
  541. #endregion
  542. cmd.Transaction.Commit();
  543. }
  544. catch (Exception ex)
  545. {
  546. cmd.Transaction.Rollback();
  547. throw new Exception(ex.Message);
  548. }
  549. finally
  550. {
  551. if (conn.State == ConnectionState.Open)
  552. {
  553. conn.Close();
  554. }
  555. conn.Dispose();
  556. }
  557. }
  558. catch (Exception ex)
  559. {
  560. throw new Exception(ex.Message);
  561. }
  562. }
  563. public void Upload(string filepath)
  564. {
  565. }
  566. public DataTable Getinv(string invcode, ref Pagination jqgridparam, string workpoint, string InvName)
  567. {
  568. List<DbParameter> parameter = new List<DbParameter>();
  569. DataTable table = new DataTable();
  570. string wherestr = "";
  571. if (!string.IsNullOrEmpty(invcode))
  572. {
  573. wherestr += " and invcode like '%" + invcode + "%'";
  574. }
  575. if (!string.IsNullOrEmpty(InvName))
  576. {
  577. wherestr += " and invname like '%" + InvName + "%'";
  578. }
  579. string sql = "select invcode,invname,invstd,InvUnit invuom,ClassName invclass from icsinventory where workpoint='" + workpoint + "'" + wherestr;
  580. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  581. }
  582. public string GetNewid()
  583. {
  584. string sql = "select newid() AS ID";
  585. return Repository().FindTableBySql(sql, null).Rows[0]["ID"].ToString();
  586. }
  587. public void AddinvtoTemp(string json)
  588. {
  589. var data = json.ToJObject();
  590. if (Invmes.Columns.Count <= 0)
  591. {
  592. Invmes.Columns.Add("公司代码", typeof(string));
  593. Invmes.Columns.Add("成本分析模板", typeof(string));
  594. Invmes.Columns.Add("创建日期", typeof(string));
  595. Invmes.Columns.Add("创建时间", typeof(string));
  596. Invmes.Columns.Add("创建用户", typeof(string));
  597. Invmes.Columns.Add("成本明细", typeof(string));
  598. Invmes.Columns.Add("是否含税", typeof(string));
  599. Invmes.Columns.Add("物料分类代码", typeof(string));
  600. Invmes.Columns.Add("物料代码", typeof(string));
  601. Invmes.Columns.Add("物料名称", typeof(string));
  602. Invmes.Columns.Add("物料类型", typeof(string));
  603. Invmes.Columns.Add("物料规格", typeof(string));
  604. Invmes.Columns.Add("更新日期", typeof(string));
  605. Invmes.Columns.Add("更新时间", typeof(string));
  606. Invmes.Columns.Add("更新用户", typeof(string));
  607. Invmes.Columns.Add("备注", typeof(string));
  608. Invmes.Columns.Add("定价物料编码", typeof(string));
  609. Invmes.Columns.Add("参考价格", typeof(string));
  610. Invmes.Columns.Add("币种", typeof(string));
  611. Invmes.Columns.Add("预计需求量", typeof(string));
  612. Invmes.Columns.Add("询价单编码", typeof(string));
  613. Invmes.Columns.Add("文件路径", typeof(string));
  614. Invmes.Columns.Add("有效期开始", typeof(string));
  615. Invmes.Columns.Add("单位", typeof(string));
  616. Invmes.Columns.Add("ID", typeof(string));
  617. Invmes.Columns.Add("workpoint", typeof(string));
  618. Invmes.Columns.Add("技术要求", typeof(string));
  619. }
  620. if (!String.IsNullOrEmpty(data["id"].ToString()))
  621. {
  622. UpdateInvRow(data["id"].ToString(), json);
  623. }
  624. else
  625. {
  626. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  627. DataRow newrow = Invmes.NewRow();
  628. newrow["公司代码"] = data["companycode"];
  629. newrow["成本分析模板"] = data["COSTANALYSISTEMPLATE"];
  630. newrow["创建日期"] = data["CREATEDATE"];
  631. newrow["创建时间"] = data["CreateTime"];
  632. newrow["创建用户"] = usercode;
  633. newrow["成本明细"] = data["HASCOSTDETAILS"];
  634. newrow["是否含税"] = data["ISINCLUDETAX"];
  635. newrow["物料分类代码"] = data["itemclass"];
  636. newrow["物料代码"] = data["itemcode"];
  637. newrow["物料名称"] = data["itemname"];
  638. newrow["物料类型"] = data["invtype"];
  639. newrow["物料规格"] = data["itemstd"];
  640. newrow["更新日期"] = data["logdate"];
  641. newrow["更新时间"] = data["logtime"];
  642. newrow["更新用户"] = usercode;
  643. newrow["备注"] = data["memo"];
  644. newrow["定价物料编码"] = data["PRINCINGITEMCODE"];
  645. newrow["参考价格"] = data["REFERPRICE"];
  646. newrow["币种"] = data["currency"];
  647. newrow["预计需求量"] = data["REQUESTQUANTITY"];
  648. newrow["询价单编码"] = data["RFQCODE"];
  649. newrow["文件路径"] = data["RFQITEMREFERCODE"];
  650. newrow["有效期开始"] = data["startdate"];
  651. newrow["单位"] = data["unit"];
  652. newrow["ID"] = GetNewid();
  653. newrow["workpoint"] = data["workpoint"];
  654. newrow["技术要求"] = data["Requirements"];
  655. Invmes.Rows.Add(newrow);
  656. }
  657. }
  658. /// <summary>
  659. /// 删除物料明细行
  660. /// </summary>
  661. /// <param name="json"></param>
  662. /// <returns></returns>
  663. public string DeleteInvTab(string keyValue)
  664. {
  665. string msg = string.Empty;
  666. try
  667. {
  668. //string wheresql = "(";
  669. ////string[] id = json.Split(',');
  670. ////for (int i = 0; i < id.Length; i++) {
  671. //// wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  672. ////}
  673. //wheresql = wheresql.Trim(',') + ")";
  674. string sql = "delete from icsSORRFQ2NORMALITEM where id in ('" + keyValue + "')";
  675. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  676. }
  677. catch (Exception ex)
  678. {
  679. msg = ex.Message + " 删除失败!";
  680. }
  681. return msg;
  682. }
  683. /// <summary>
  684. /// 清楚临时表
  685. /// </summary>
  686. public void ClearTempTab()
  687. {
  688. Invmes.Rows.Clear();
  689. Supplier.Rows.Clear();
  690. }
  691. public DataTable GetInvTable(string rfqno)
  692. {
  693. string sql = @"select companycode as 公司代码,COSTANALYSISTEMPLATE as 成本分析模板 ,CREATEDATE as 创建日期,
  694. CreateTime as ,CREATEUSER as ,HASCOSTDETAILS as ,ISINCLUDETAX as ,
  695. ITEMCLASSID as ,b.itemcode as ,b.itemname as ,
  696. CASE b.ITEMTYPE WHEN 'Real' then '' else '' end as ,a.invstd as ,
  697. logdate as ,logtime as ,LOGUSER as ,memo as ,PRINCINGITEMCODE as ,
  698. REFERPRICE as ,CURRENCY as ,REQUESTQUANTITY as ,RFQCODE as ,
  699. RFQITEMREFERCODE as ,startdate as ,Requirements as ,RFQITEMREFERCODE as HiddenFile,
  700. unit as ,B.ID,b.workpoint,ManuFacturer AS ,ManuFacturerInvCode AS from icsSORRFQ2NORMALITEM b
  701. left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
  702. where RFQCODE='" + rfqno + @"'
  703. ";
  704. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  705. DataTable dtCloned = table.Clone();
  706. foreach (DataColumn col in dtCloned.Columns)
  707. {
  708. col.DataType = typeof(string);
  709. }
  710. foreach (DataRow row in table.Rows)
  711. {
  712. DataRow newrow = dtCloned.NewRow();
  713. foreach (DataColumn column in dtCloned.Columns)
  714. {
  715. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  716. }
  717. dtCloned.Rows.Add(newrow);
  718. }
  719. if (Invmes.Rows.Count > 0)
  720. {
  721. dtCloned.Merge(Invmes, false);
  722. }
  723. return dtCloned;
  724. }
  725. public DataRow GetInvRow(string id)
  726. {
  727. string sql = @"select companycode as 公司代码,COSTANALYSISTEMPLATE as 成本分析模板 ,CREATEDATE as 创建日期,CreateTime as 创建时间,CREATEUSER as 创建用户,HASCOSTDETAILS as 成本明细,ISINCLUDETAX as 是否含税,ITEMCLASSID as 物料分类代码,
  728. b.itemcode as ,b.itemname as ,CASE b.ITEMTYPE WHEN 'Real' then '' else '' end as ,a.invstd as ,logdate as ,logtime as ,LOGUSER as ,memo as ,PRINCINGITEMCODE as ,REFERPRICE as ,CURRENCY as ,REQUESTQUANTITY as ,RFQCODE as ,RFQITEMREFERCODE as ,startdate as ,Requirements as ,
  729. unit as ,B.ID,b.workpoint from icsSORRFQ2NORMALITEM b
  730. left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
  731. where B.id='" + id + "'";
  732. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  733. if (table.Rows.Count <= 0)
  734. {
  735. return Invmes.Select("ID='" + id + "'").Single();
  736. }
  737. else
  738. {
  739. return table.Rows[0];
  740. }
  741. }
  742. public void UpdateInvRow(string id, string json)
  743. {
  744. var data = json.ToJObject();
  745. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  746. string sql = @"update icsSORRFQ2NORMALITEM set COSTANALYSISTEMPLATE='" + data["COSTANALYSISTEMPLATE"].ToString() + @"',
  747. HASCOSTDETAILS='" + data["HASCOSTDETAILS"].ToString() + @"',ISINCLUDETAX='" + data["ISINCLUDETAX"].ToString() + @"',itemcode='" + data["itemcode"].ToString() + @"',
  748. itemname='" + data["itemname"].ToString() + @"',ITEMTYPE='" + data["invtype"].ToString() + @"',logdate='" + data["logdate"].ToString() + "',logtime='" + data["logtime"].ToString() + @"',
  749. LOGUSER='" + usercode.ToString() + @",memo='" + data["memo"] + "',PRINCINGITEMCODE='" + data["PRINCINGITEMCODE"].ToString() + "',REQUESTQUANTITY='" + data["REQUESTQUANTITY"].ToString() + @"',
  750. RFQCODE='" + data["RFQCODE"].ToString() + "',RFQITEMREFERCODE='" + data["RFQITEMREFERCODE"].ToString() + "',STARTDATE='" + data["startdate"].ToString() + "',unit='" + data["unit"] + @"',CURRENCY='" + data["currency"].ToString() + @"',REFERPRICE='" + data["REFERPRICE"].ToString() + @"'
  751. WHERE ID='" + id + @"'
  752. ";
  753. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  754. if (count <= 0)
  755. {
  756. DataRow row = Invmes.Select("ID ='" + id + "'").Single();
  757. row["成本分析模板"] = data["COSTANALYSISTEMPLATE"];
  758. row["成本明细"] = data["HASCOSTDETAILS"];
  759. row["是否含税"] = data["ISINCLUDETAX"];
  760. row["物料分类代码"] = data["itemclass"];
  761. row["物料代码"] = data["itemcode"];
  762. row["物料名称"] = data["itemname"];
  763. row["物料类型"] = data["invtype"];
  764. row["物料规格"] = data["itemstd"];
  765. row["更新日期"] = data["logdate"];
  766. row["更新时间"] = data["logtime"];
  767. row["更新用户"] = usercode;
  768. row["备注"] = data["memo"];
  769. row["定价物料编码"] = data["PRINCINGITEMCODE"];
  770. row["预计需求量"] = data["REQUESTQUANTITY"];
  771. row["询价单编码"] = data["RFQCODE"];
  772. row["文件路径"] = data["RFQITEMREFERCODE"];
  773. row["有效期开始"] = data["startdate"];
  774. row["单位"] = data["unit"];
  775. }
  776. }
  777. public DataTable GetSup(string queryJson, ref Pagination jqgridparam)
  778. {
  779. string ParentId = "";
  780. var queryParam = queryJson.ToJObject();
  781. List<DbParameter> parameter = new List<DbParameter>();
  782. string sql = @"SELECT DISTINCT a.VenCode cvencode,a.VenName cvenname, VenExch_name as currency,a.VenPerson cvenperson, a.VenHand cvenhand,a.VenAddress cvenaddress,
  783. VenDisRate iVenTaxRate, VCName cVenType from ICSVendor a
  784. LEFT JOIN dbo.Sys_SRM_User b ON a.VenCode=b.F_VenCode AND a.WorkPoint=b.F_Location
  785. where 1=1 ";
  786. if (!string.IsNullOrWhiteSpace(queryParam["supcode"].ToString()))
  787. {
  788. sql += " and a.vencode like '%" + queryParam["supcode"].ToString() + "%'";
  789. }
  790. if (!string.IsNullOrWhiteSpace(queryParam["suppliername"].ToString()))
  791. {
  792. sql += " and a.venname like '%" + queryParam["suppliername"].ToString() + "%'";
  793. }
  794. if (!string.IsNullOrWhiteSpace(queryParam["WorkPoint"].ToString()))
  795. {
  796. sql += " and a.WorkPoint ='" + queryParam["WorkPoint"].ToString() + "'";
  797. }
  798. if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
  799. {
  800. sql = SqlHelper.OrganizeByVendor_F_ParentId(sql, NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  801. }
  802. sql += @" union all
  803. select distinct a.F_VenCode cvencode, a.F_NickName cvenname, '' as currency,'' cvenperson, '' cvenhand,'' cvenaddress,
  804. '' iVenTaxRate, '' cVenType from Sys_SRM_User a
  805. inner join dbo.Sys_SRM_Role b on a.F_RoleId = b.F_Id and a.F_RoleId = 'eefea641-5e0a-4633-9d0e-c864176aaf10' where 1=1 ";
  806. if (!string.IsNullOrWhiteSpace(queryParam["supcode"].ToString()))
  807. {
  808. sql += " and a.F_VenCode like '%" + queryParam["supcode"].ToString() + "%'";
  809. }
  810. if (!string.IsNullOrWhiteSpace(queryParam["suppliername"].ToString()))
  811. {
  812. sql += " and a.F_NickName like '%" + queryParam["suppliername"].ToString() + "%'";
  813. }
  814. if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
  815. {
  816. sql = SqlHelper.OrganizeByVendor_F_ParentId(sql, NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  817. }
  818. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  819. }
  820. public void AddSuptoTemp(string json)
  821. {
  822. JArray res = (JArray)JsonConvert.DeserializeObject(json.ToString());
  823. foreach (var item in res)
  824. {
  825. JObject data = (JObject)item;
  826. if (Supplier.Columns.Count <= 0)
  827. {
  828. Supplier.Columns.Add("公司代码", typeof(string));
  829. Supplier.Columns.Add("创建日期", typeof(string));
  830. Supplier.Columns.Add("创建时间", typeof(string));
  831. Supplier.Columns.Add("创建用户", typeof(string));
  832. Supplier.Columns.Add("供应商币别", typeof(string));
  833. Supplier.Columns.Add("是否关闭", typeof(string));
  834. Supplier.Columns.Add("是否所有物料已报价", typeof(string));
  835. Supplier.Columns.Add("是否显示参考价", typeof(string));
  836. Supplier.Columns.Add("供应商地点代码", typeof(string));
  837. Supplier.Columns.Add("更新日期", typeof(string));
  838. Supplier.Columns.Add("更新时间", typeof(string));
  839. Supplier.Columns.Add("更新用户", typeof(string));
  840. Supplier.Columns.Add("供应商付款条件", typeof(string));
  841. Supplier.Columns.Add("PRINCINGVENDORCODE", typeof(string));
  842. Supplier.Columns.Add("询价单编码", typeof(string));
  843. Supplier.Columns.Add("供应商税率", typeof(string));
  844. Supplier.Columns.Add("供应商代码", typeof(string));
  845. Supplier.Columns.Add("供应商名称", typeof(string));
  846. Supplier.Columns.Add("供应商类型", typeof(string));
  847. Supplier.Columns.Add("联系人", typeof(string));
  848. Supplier.Columns.Add("联系人电话", typeof(string));
  849. Supplier.Columns.Add("关闭原因", typeof(string));
  850. Supplier.Columns.Add("ID", typeof(string));
  851. Supplier.Columns.Add("workpoint", typeof(string));
  852. }
  853. if (!String.IsNullOrEmpty(data["id"].ToString()))
  854. {
  855. UpdateSupRow(data["id"].ToString(), json);
  856. }
  857. else
  858. {
  859. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  860. DataRow newrow = Supplier.NewRow();
  861. newrow["公司代码"] = data["companycode"];
  862. newrow["创建日期"] = data["createdate"];
  863. newrow["创建时间"] = data["createtime"];
  864. newrow["创建用户"] = usercode;
  865. newrow["供应商币别"] = data["currency"];
  866. newrow["是否关闭"] = data["isclosed"];
  867. newrow["是否所有物料已报价"] = data["isquoted"];
  868. newrow["是否显示参考价"] = data["isshowprice"];
  869. newrow["供应商地点代码"] = data["locationcode"];
  870. newrow["更新日期"] = data["logdate"];
  871. newrow["更新时间"] = data["logtime"];
  872. newrow["更新用户"] = usercode;
  873. newrow["供应商付款条件"] = data["paymentcondition"];
  874. newrow["PRINCINGVENDORCODE"] = data["PRINCINGVENDORCODE"];
  875. newrow["询价单编码"] = data["rfqcode"];
  876. newrow["供应商税率"] = data["rate"];
  877. newrow["供应商代码"] = data["code"];
  878. newrow["供应商名称"] = data["name"];
  879. newrow["供应商类型"] = data["type"];
  880. newrow["联系人"] = data["person"];
  881. newrow["联系人电话"] = data["phone"];
  882. newrow["关闭原因"] = data["closereason"];
  883. newrow["ID"] = GetNewid();
  884. newrow["workpoint"] = data["workpoint"];
  885. Supplier.Rows.Add(newrow);
  886. }
  887. }
  888. }
  889. public void UpdateSupRow(string id, string json)
  890. {
  891. var data = json.ToJObject();
  892. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  893. string sql = @"update icsSORRFQ2VENDOR set COMPANYCODE='" + data["companycode"].ToString() + @"',
  894. CURRENCY='" + data["currency"].ToString() + @"',ISCLOSED='" + data["isclosed"].ToString() + @"',ISQUOTED='" + data["isquoted"] + @"',
  895. ISSHOWPRICE='" + data["isshowprice"].ToString() + "',LOCATIONCODE='" + data["locationcode"].ToString() + "',LOGDATE='" + data["logdate"] + "',LOGTIME='" + data["logtime"].ToString() + "',LOGUSER='" + usercode + @"',
  896. PAYMENTCONDITION='" + data["paymentcondition"].ToString() + "', PRINCINGVENDORCODE='" + data["PRINCINGVENDORCODE"].ToString() + "',RFQCODE='" + data["rfqcode"] + "',TAXRATE='" + data["rate"].ToString() + "',VENDORCODE='" + data["code"] + "',VENDORTYPE='" + data["type"].ToString() + "',ADDITION1='" + data["closereason"].ToString() + @"'
  897. where id='" + id + "'";
  898. ;
  899. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  900. if (count <= 0)
  901. {
  902. DataRow newrow = Supplier.Select("ID ='" + id + "'").Single();
  903. newrow["公司代码"] = data["companycode"];
  904. newrow["供应商币别"] = data["currency"];
  905. newrow["是否关闭"] = data["isclosed"];
  906. newrow["是否所有物料已报价"] = data["isquoted"];
  907. newrow["是否显示参考价"] = data["isshowprice"];
  908. newrow["供应商地点代码"] = data["locationcode"];
  909. newrow["更新日期"] = data["logdate"];
  910. newrow["更新时间"] = data["logtime"];
  911. newrow["更新用户"] = usercode;
  912. newrow["供应商付款条件"] = data["paymentcondition"];
  913. newrow["PRINCINGVENDORCODE"] = data["PRINCINGVENDORCODE"];
  914. newrow["询价单编码"] = data["rfqcode"];
  915. newrow["供应商税率"] = data["rate"];
  916. newrow["供应商代码"] = data["code"];
  917. newrow["供应商名称"] = data["name"];
  918. newrow["供应商类型"] = data["type"];
  919. newrow["联系人"] = data["person"];
  920. newrow["联系人电话"] = data["phone"];
  921. newrow["关闭原因"] = data["closereason"];
  922. }
  923. }
  924. public DataTable GetSupTable(string rfqno)
  925. {
  926. string sql = @"select COMPANYCODE as 公司代码,CREATEDATE as 创建日期,CREATETIME as 创建时间,CREATEUSER as 创建用户,CURRENCY as 供应商币别,
  927. ISCLOSED as ,ISQUOTED as ,ISSHOWPRICE as ,locationcode as ,logdate as ,
  928. logtime as ,LOGUSER as ,paymentcondition as ,PRINCINGVENDORCODE,RFQCODE as ,TAXRATE as ,
  929. VENDORCODE as ,VenName as ,VENDORTYPE as ,VENPERSON AS ,venhand as ,ADDITION1 AS ,icsSORRFQ2VENDOR.ID,icsSORRFQ2VENDOR.workpoint
  930. FROM icsSORRFQ2VENDOR
  931. left join icsvendor on ICSVendor.vencode=icsSORRFQ2VENDOR.VENDORCODE AND icsSORRFQ2VENDOR.workpoint=icsvendor.workpoint
  932. where RFQCODE='" + rfqno + @"'
  933. ";
  934. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  935. DataTable dtCloned = table.Clone();
  936. foreach (DataColumn col in dtCloned.Columns)
  937. {
  938. col.DataType = typeof(string);
  939. }
  940. foreach (DataRow row in table.Rows)
  941. {
  942. DataRow newrow = dtCloned.NewRow();
  943. foreach (DataColumn column in dtCloned.Columns)
  944. {
  945. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  946. }
  947. dtCloned.Rows.Add(newrow);
  948. }
  949. if (Supplier.Rows.Count > 0)
  950. {
  951. dtCloned.Merge(Supplier, false);
  952. }
  953. return dtCloned;
  954. }
  955. public DataRow GetSuprow(string id)
  956. {
  957. string sql = @"select COMPANYCODE as 公司代码,CREATEDATE as 创建日期,CREATETIME as 创建时间,CREATEUSER as 创建用户,CURRENCY as 供应商币别,
  958. ISCLOSED as ,ISQUOTED as ,ISSHOWPRICE as ,locationcode as ,logdate as ,
  959. logtime as ,LOGUSER as ,paymentcondition as ,PRINCINGVENDORCODE,RFQCODE as ,TAXRATE as ,
  960. VENDORCODE as ,cVenName as ,VENDORTYPE as ,CVENPERSON AS ,cvenhand as ,ADDITION1 AS ,ID,icsSORRFQ2VENDOR.workpoint FROM icsSORRFQ2VENDOR
  961. left join icsvendor on ICSVendor.cvencode=icsSORRFQ2VENDOR.VENDORCODE
  962. where icsSORRFQ2VENDOR.id='" + id + @"';
  963. ";
  964. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  965. if (table.Rows.Count <= 0)
  966. {
  967. return Supplier.Select("ID='" + id + "'").Single();
  968. }
  969. else
  970. {
  971. return table.Rows[0];
  972. }
  973. }
  974. public string DeleteSupTab(string keyValue)
  975. {
  976. string msg = string.Empty;
  977. try
  978. {
  979. string sql = @"delete from icsSORRFQ2VENDOR where id in ('" + keyValue + "')";
  980. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  981. }
  982. catch (Exception ex)
  983. {
  984. msg = ex.Message + " 删除失败!";
  985. }
  986. return msg;
  987. }
  988. /// <summary>
  989. /// 发布询价
  990. /// </summary>
  991. /// <param name="json"></param>
  992. /// <returns></returns>
  993. public string Publish(string json)
  994. {
  995. string msg = string.Empty;
  996. string wheresql = "(";
  997. string[] id = json.Split(',');
  998. for (int i = 0; i < id.Length; i++)
  999. {
  1000. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  1001. }
  1002. wheresql = wheresql.Trim(',') + ")";
  1003. //发送邮件通知供应商
  1004. string MailOpen = ConfigurationManager.ConnectionStrings["MailOpen"].ConnectionString;
  1005. if (MailOpen == "true")
  1006. {
  1007. string SendHost = ConfigurationManager.ConnectionStrings["SendHost"].ConnectionString;
  1008. string StrSendPort = ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString;
  1009. int SendPort = 25;
  1010. if (!string.IsNullOrEmpty(StrSendPort))
  1011. SendPort = Convert.ToInt32(ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString);
  1012. string SendDisplayName = ConfigurationManager.ConnectionStrings["SendDisplayName"].ConnectionString;
  1013. string SendAddress = ConfigurationManager.ConnectionStrings["SendAddress"].ConnectionString;
  1014. string SendPassword = ConfigurationManager.ConnectionStrings["SendPassword"].ConnectionString;
  1015. string sqlEmail = @"SELECT F_EMail,VenDorCode,F_RealName,a.RFQCODE FROM icsSORRFQ2VENDOR a
  1016. LEFT JOIN sys_SRM_User b ON a.VenDorCode=b.F_VenCode and a.workpoint=b.F_Location
  1017. where RFQCODE in " + wheresql + "";
  1018. DataTable dt = SqlHelper.GetDataTableBySql(sqlEmail);
  1019. foreach (DataRow dr in dt.Rows)
  1020. {
  1021. string cVenCode = dr["VenDorCode"].ToString();
  1022. string TOAddress = dr["F_Email"].ToString();
  1023. string[] Partint = TOAddress.Split(';');
  1024. if (!string.IsNullOrEmpty(TOAddress))
  1025. {
  1026. foreach (var p in Partint)
  1027. {
  1028. string CCAddress = "";
  1029. string Subject = "有来自派纳SRM平台新发布的询价信息";
  1030. bool isBodyHtml = true;
  1031. string F_RealName = dr["F_RealName"].ToString();
  1032. //string StarTime = dr["StarTime"].ToString();
  1033. //string EndTime = dr["EndTime"].ToString();
  1034. string RFQCODE = dr["RFQCODE"].ToString();
  1035. string NowDate = DateTime.Now.GetDateTimeFormats('D')[0].ToString();
  1036. //string body = F_RealName + ":";
  1037. //body += " \r\n\r\n\r\n 您有一个询价单号:" + RFQCODE + "待报价 ,请进行登录 SRM进行报价!";
  1038. //body += "<tr><td> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;入口网址:<a> http://srm.ksstarconn.com:8889 </a>查看相关信息! </td></tr>";
  1039. //body += "\r\n";
  1040. //body += " 顺颂商祺!";
  1041. //body += "\r\n";
  1042. //body += " 派纳维森电气科技有限公司";
  1043. //body += "\r\n";
  1044. //body += " " + NowDate;
  1045. string body = "<html><body><table border='0'>";
  1046. body += "<tr><td>" + F_RealName + ":</td></tr>";
  1047. body += "<tr><td> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 您好!有来自派纳SRM的新发布的询价单号:" + RFQCODE + "待报价 ,请登陆SRM系统进行作业与获取更多信息!</td></tr>";
  1048. body += "<tr><td> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;入口网址:<a> http://srm.panawincn.com:8089 </a>查看相关信息! </td></tr>";
  1049. body += "<tr><td> 顺颂商祺!</td></tr>";
  1050. body += "<tr><td> 派纳维森电气科技有限公司</td></tr>";
  1051. body += "<tr><td>" + NowDate + "</td></tr>";
  1052. body += "<tr><td> </td></tr>";
  1053. body += "<tr><td> </td></tr>";
  1054. body += "<tr><td> </td></tr>";
  1055. body += "<tr><td> </td></tr>";
  1056. body += "<tr><td> <strong>本信件(含附件资料)内容涉及本公司依法享有之各项知识产权(包括专利、商业秘密、著作权等),请务必遵守保密义务,本信件内容未经本公司同意下,请勿擅自公开、转载或以任何方式提供任何第三人,以免承担法律上相关责任。All the information contained in the present mail / document are tightly confidential and is intended only for the recipient named above. The information could be subject to ties of secrecy at the senses of the applicable laws.Access to this message by anyone else is prohibited.Whoever receives this mail / document not being the addressee, is advised that its possession, usage or reproduction are severely forbidden and may be illegal. </strong></td></tr>";
  1057. body += "</table> </body> </html>";
  1058. string StrConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  1059. if (!string.IsNullOrEmpty(TOAddress))
  1060. {
  1061. try
  1062. {
  1063. SendEmail(StrConn, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, p.ToString(), CCAddress, Subject, isBodyHtml, body);
  1064. }
  1065. catch (Exception ex)
  1066. {
  1067. throw new Exception("供应商:" + cVenCode + "邮件发送失败! \r\n" + ex.Message);
  1068. }
  1069. }
  1070. else
  1071. {
  1072. msg = "请先维护供应商:" + F_RealName + "邮箱!";
  1073. }
  1074. }
  1075. }
  1076. }
  1077. }
  1078. string sql = "update icsSORRFQ set STATUS='Publish' where RFQCODE in " + wheresql;
  1079. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1080. if (count > 0)
  1081. {
  1082. msg = "发布成功!";
  1083. }
  1084. else
  1085. {
  1086. msg = "发布失败!";
  1087. }
  1088. return msg;
  1089. }
  1090. public static void SendEmail(string ConnectionString, string SendHost, int SendPort, string SendDisplayName, string SendAddress, string SendPassword, string TOAddress, string CCAddress, string Subject, bool IsBodyHtml, string Body)
  1091. {
  1092. try
  1093. {
  1094. SmtpClient smtpClient = new SmtpClient
  1095. {
  1096. //EnableSsl = false,
  1097. UseDefaultCredentials = false,
  1098. Host = SendHost,
  1099. Port = SendPort,
  1100. Credentials = new NetworkCredential(SendAddress, SendPassword)
  1101. };
  1102. MailMessage mailMessage = new MailMessage
  1103. {
  1104. Subject = Subject,
  1105. SubjectEncoding = Encoding.GetEncoding("utf-8"),
  1106. BodyEncoding = Encoding.GetEncoding("utf-8"),
  1107. From = new MailAddress(SendAddress, SendDisplayName),
  1108. IsBodyHtml = IsBodyHtml,
  1109. Body = Body
  1110. };
  1111. string[] array = TOAddress.Split(new char[]
  1112. {
  1113. ','
  1114. });
  1115. string[] array2 = array;
  1116. for (int i = 0; i < array2.Length; i++)
  1117. {
  1118. string text = array2[i];
  1119. if (!string.IsNullOrEmpty(text))
  1120. {
  1121. mailMessage.To.Add(text);
  1122. }
  1123. }
  1124. string[] array3 = CCAddress.Split(new char[]
  1125. {
  1126. ','
  1127. });
  1128. array2 = array3;
  1129. for (int i = 0; i < array2.Length; i++)
  1130. {
  1131. string text2 = array2[i];
  1132. if (!string.IsNullOrEmpty(text2))
  1133. {
  1134. mailMessage.CC.Add(text2);
  1135. }
  1136. }
  1137. ServicePointManager.ServerCertificateValidationCallback = ((object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) => true);
  1138. smtpClient.Send(mailMessage);
  1139. // InsertData(ConnectionString, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, TOAddress, CCAddress, Subject, IsBodyHtml, Body, "1", null);
  1140. }
  1141. catch (Exception ex)
  1142. {
  1143. //InsertData(ConnectionString, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, TOAddress, CCAddress, Subject, IsBodyHtml, Body, "2", ex.Message);
  1144. throw;
  1145. }
  1146. }
  1147. public string Close(string json)
  1148. {
  1149. string wheresql = "(";
  1150. string[] id = json.Split(',');
  1151. for (int i = 0; i < id.Length; i++)
  1152. {
  1153. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  1154. }
  1155. wheresql = wheresql.Trim(',') + ")";
  1156. string sql = "update icsSORRFQ set STATUS='Close' where RFQCODE in " + wheresql;
  1157. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1158. if (count > 0)
  1159. {
  1160. return "关闭成功!";
  1161. }
  1162. else
  1163. {
  1164. return "关闭失败!";
  1165. }
  1166. }
  1167. public string delete(string json)
  1168. {
  1169. try
  1170. {
  1171. string wheresql = "(";
  1172. string[] id = json.Split(',');
  1173. for (int i = 0; i < id.Length; i++)
  1174. {
  1175. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  1176. }
  1177. wheresql = wheresql.Trim(',') + ")";
  1178. string sql = "delete from icsSORRFQ where RFQCODE in" + wheresql;
  1179. sql += " delete from ICSSORRFQ2VENDOR where RFQCODE in" + wheresql;
  1180. sql += " delete from ICSSORRFQ2NORMALITEM where RFQCODE in" + wheresql;
  1181. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1182. if (count > 0)
  1183. {
  1184. return "删除成功!";
  1185. }
  1186. else
  1187. {
  1188. return "删除失败!";
  1189. }
  1190. }
  1191. catch (Exception ex)
  1192. {
  1193. return ex.Message + " 删除失败!";
  1194. }
  1195. }
  1196. public DataTable GetRfqAndBJ(string rfqno)
  1197. {
  1198. //获取已报价的供应商
  1199. string sql1 = "select VENDORCODE from icsSORQUOTATION where rfqcode='" + rfqno + "' and STATUS='Publish'";
  1200. DataTable table = Repository().FindDataSetBySql(sql1).Tables[0];
  1201. string vendorcode = "";
  1202. string novendorcode = "";
  1203. List<string> hasbj = new List<string>();
  1204. List<string> bjyet = new List<string>();
  1205. List<string> hasbj2 = new List<string>();
  1206. List<string> bjyet2 = new List<string>();
  1207. foreach (DataRow row in table.Rows)
  1208. {
  1209. vendorcode += row["VENDORCODE"].ToString() + ",";
  1210. hasbj.Add(row["VENDORCODE"].ToString());
  1211. bjyet.Add(row["VENDORCODE"].ToString());
  1212. }
  1213. vendorcode = vendorcode.Trim(',');
  1214. string sql2 = "select a.VENDORCODE as VENDORCODE from icsSORRFQ2VENDOR a left join ICSSORQUOTATION b on a.RFQCODE=b.RFQCODE and a.VENDORCODE=b.VENDORCODE where a.rfqcode='" + rfqno + "' and (b.STATUS='New' or isnull(b.STATUS,'')='') ";
  1215. DataTable table1 = Repository().FindDataSetBySql(sql2).Tables[0];
  1216. foreach (DataRow row1 in table1.Rows)
  1217. {
  1218. //if (hasbj2.Contains(row1["VENDORCODE"].ToString())) {
  1219. // bjyet2.Remove(row1["VENDORCODE"].ToString());
  1220. //}
  1221. novendorcode += row1["VENDORCODE"].ToString() + ",";
  1222. hasbj2.Add(row1["VENDORCODE"].ToString());
  1223. bjyet2.Add(row1["VENDORCODE"].ToString());
  1224. }
  1225. novendorcode = novendorcode.Trim(',');
  1226. //
  1227. string sql = @"select companycode as 公司代码,COSTANALYSISTEMPLATE as 成本分析模板 ,CREATEDATE as 创建日期,CreateTime as 创建时间,CREATEUSER as 创建用户,HASCOSTDETAILS as 成本明细,ISINCLUDETAX as 是否含税,ITEMCLASSID as 物料分类代码,
  1228. b.itemcode as ,b.itemname as , b.ITEMTYPE AS ,a.invstd as ,logdate as ,logtime as ,LOGUSER as ,memo as ,PRINCINGITEMCODE as ,REFERPRICE as ,CURRENCY as ,REQUESTQUANTITY as ,RFQCODE as ,RFQITEMREFERCODE as ,Convert(varchar(10),startdate,120) as ,
  1229. unit as ,B.ID,b.workpoint,'" + vendorcode + @"' as ,'" + novendorcode + @"' AS from icsSORRFQ2NORMALITEM b
  1230. left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
  1231. where RFQCODE='" + rfqno + @"'
  1232. ";
  1233. DataTable table3 = Repository().FindDataSetBySql(sql).Tables[0];
  1234. return table3;
  1235. }
  1236. public DataTable GetRfqSup(string rfqno)
  1237. {
  1238. string sql = @"select icsSORRFQ2VENDOR.COMPANYCODE as 公司代码,icsSORRFQ2VENDOR.CREATEDATE as 创建日期,icsSORRFQ2VENDOR.CREATETIME as 创建时间,icsSORRFQ2VENDOR.CREATEUSER as 创建用户,CURRENCY as 供应商币别,
  1239. ISCLOSED as ,ISQUOTED as ,ISSHOWPRICE as ,locationcode as ,icsSORRFQ2VENDOR.logdate as ,
  1240. icsSORRFQ2VENDOR.logtime as ,icsSORRFQ2VENDOR.LOGUSER as ,paymentcondition as ,PRINCINGVENDORCODE,icsSORRFQ2VENDOR.RFQCODE as ,TAXRATE as ,
  1241. icsSORRFQ2VENDOR.VENDORCODE as ,VenName as ,VENDORTYPE as ,VENPERSON AS ,venhand as ,icsSORRFQ2VENDOR.CauseOff AS ,icsSORRFQ2VENDOR.ID,icsSORRFQ2VENDOR.workpoint,c.QUOTATIONCODE as FROM icsSORRFQ2VENDOR
  1242. left join icsvendor on ICSVendor.vencode=icsSORRFQ2VENDOR.VENDORCODE and ICSVendor.WorkPoint=icsSORRFQ2VENDOR.WorkPoint
  1243. left join icsSORQUOTATION c on c.vendorcode=icsSORRFQ2VENDOR.VENDORCODE and c.rfqcode=icsSORRFQ2VENDOR.RFQCODE and c.WorkPoint=icsSORRFQ2VENDOR.WorkPoint
  1244. where icsSORRFQ2VENDOR.RFQCODE='" + rfqno + @"'
  1245. ";
  1246. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  1247. return table;
  1248. }
  1249. public DataTable GetRfqSup(string rfqno, string invcode, string workpoint, string queryJson, ref Pagination jqgridparam)
  1250. {
  1251. var Jobject = queryJson.ToJObject();
  1252. string sql = @"select icsSORRFQ2VENDOR.COMPANYCODE as 公司代码,icsSORRFQ2VENDOR.CREATEDATE as 创建日期,icsSORRFQ2VENDOR.CREATETIME as 创建时间,icsSORRFQ2VENDOR.CREATEUSER as 创建用户,icsSORRFQ2VENDOR.CURRENCY as 供应商币别,
  1253. ISCLOSED as ,ISQUOTED as ,ISSHOWPRICE as ,locationcode as ,icsSORRFQ2VENDOR.logdate as ,
  1254. icsSORRFQ2VENDOR.logtime as ,icsSORRFQ2VENDOR.LOGUSER as ,paymentcondition as ,PRINCINGVENDORCODE,icsSORRFQ2VENDOR.RFQCODE as ,TAXRATE as ,
  1255. icsSORRFQ2VENDOR.VENDORCODE as ,cVenName as ,VENDORTYPE as ,CVENPERSON AS ,cvenhand as ,isnull(d.VENDORREJECTREASON,'') AS ,icsSORRFQ2VENDOR.workpoint,c.QUOTATIONCODE as ,D.QUOPRICE AS ,
  1256. CASE D.QUOSTATUS
  1257. WHEN 'Pending' THEN ''
  1258. WHEN 'InitApprove' THEN ''
  1259. WHEN 'InitReject' THEN ''
  1260. WHEN 'PricingAppraising' THEN ''
  1261. WHEN 'PricingApprove' THEN ''
  1262. WHEN 'PricingReject' THEN ''
  1263. WHEN 'RFCancel' THEN ''
  1264. WHEN 'VendorCheck' THEN ''
  1265. end as ,
  1266. CASE D.QUOSTATUS
  1267. WHEN 'Pending' THEN ''
  1268. WHEN 'InitApprove' THEN ''
  1269. WHEN 'InitReject' THEN ''
  1270. WHEN 'PricingAppraising' THEN ''
  1271. WHEN 'PricingApprove' THEN ''
  1272. WHEN 'PricingReject' THEN ''
  1273. WHEN 'RFCancel' THEN ''
  1274. WHEN 'VendorCheck' THEN ''
  1275. end as Hidden,
  1276. d.QUOBUYERPRICE AS ,
  1277. COSTDETAILSREFERCODE AS ,
  1278. e.RFQITEMREFERCODE as ,
  1279. d.VENDORMEMO as ,e.ITEMCODE,e.ITEMNAME,d.ADDITION1 as PricingRemark
  1280. FROM icsSORRFQ2VENDOR
  1281. left join icsvendor on ICSVendor.cvencode=icsSORRFQ2VENDOR.VENDORCODE
  1282. left join icsSORQUOTATION c on c.vendorcode=icsSORRFQ2VENDOR.VENDORCODE and c.rfqcode=icsSORRFQ2VENDOR.RFQCODE
  1283. left join icsSORQUODETAILNORMAL d on d.QUOTATIONCODE=c.QUOTATIONCODE
  1284. left join icsSORRFQ2NORMALITEM e on e.RFQCODE=icsSORRFQ2VENDOR.RFQCODE and d.itemcode=e.itemcode
  1285. where icsSORRFQ2VENDOR.RFQCODE='" + rfqno + @"'AND ISNULL(c.QUOTATIONCODE,'')<>'' ";
  1286. List<DbParameter> parameter = new List<DbParameter>();
  1287. if (!string.IsNullOrEmpty(Jobject["InvCode"].ToString()))
  1288. {
  1289. sql += " and icsSORRFQ2VENDOR.VENDORCODE like '%" + Jobject["InvCode"].ToString() + "%' ";
  1290. }
  1291. if (!string.IsNullOrEmpty(Jobject["InvName"].ToString()))
  1292. {
  1293. sql += " and cVenName like '%" + Jobject["InvName"].ToString() + "%' ";
  1294. }
  1295. if (!string.IsNullOrEmpty(Jobject["ItemCode"].ToString()))
  1296. {
  1297. sql += " and e.ITEMCODE like '%" + Jobject["ItemCode"].ToString() + "%' ";
  1298. }
  1299. if (!string.IsNullOrEmpty(Jobject["ItemName"].ToString()))
  1300. {
  1301. sql += " and e.ITEMNAME like '%" + Jobject["ItemName"].ToString() + "%' ";
  1302. }
  1303. if (!string.IsNullOrWhiteSpace(workpoint))
  1304. {
  1305. sql += " and e.WorkPoint=" + workpoint + "";
  1306. }
  1307. //sql += " Order by e.ITEMCODE";
  1308. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1309. }
  1310. public string SaveSCprice(string json)
  1311. {
  1312. try
  1313. {
  1314. var jobject = JArray.Parse(json);
  1315. string result = "";
  1316. for (int i = 0; i < jobject.Count; i++)
  1317. {
  1318. decimal price = Convert.ToDecimal(jobject[i]["协商价格"]);
  1319. string sql = "update icsSORQUODETAILNORMAL set QUOBUYERPRICE=" + price + " where QUOTATIONCODE='" + jobject[i]["最新报价单号"] + "' and ITEMCODE='" + jobject[i]["Invcode"] + "' ";
  1320. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1321. if (count <= 0)
  1322. result = "保存失败";
  1323. else
  1324. result = "保存成功";
  1325. }
  1326. return result;
  1327. }
  1328. catch (Exception ex)
  1329. {
  1330. return ex.Message;
  1331. }
  1332. }
  1333. /// <summary>
  1334. /// 定价通过
  1335. /// </summary>
  1336. /// <param name="json"></param>
  1337. /// <returns></returns>
  1338. ///
  1339. public string AgreeCS(string json)
  1340. {
  1341. string ERPOpen = ConfigurationManager.ConnectionStrings["ERPOpen"].ConnectionString;
  1342. DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
  1343. string msg = "";
  1344. try
  1345. {
  1346. string GGUID = Guid.NewGuid().ToString();
  1347. var jobject = JArray.Parse(json);
  1348. bool IsInput;
  1349. string MessAge = string.Empty;
  1350. for (int i = 0; i < jobject.Count; i++)
  1351. {
  1352. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  1353. ////string[] resultss = (string[])jobject[i]["ZBVendorCode"]//企业信息
  1354. //string[] resultss = (string[])VendorCode;
  1355. //var jobjects = JArray.Parse(jobject[i]["ZBVendorCode"].ToString());
  1356. for (int s = 0; s < resultss.Length; s++)
  1357. {
  1358. string Vendor = resultss[s].ToString();
  1359. string sql = "";
  1360. sql = @"SELECT ITEMCODE,ITEMNAME,UNIT,1 AS bTaxCost,1 AS iSupplyType,'人民币' cExch_Name,a.WorkPoint,'' AS dEnableDate,'' AS dDisableDate
  1361. ,a.QUOTATIONCODE,b.VENDORCODE FROM icsSORQUODETAILNORMAL a
  1362. LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1363. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1364. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1365. DataTable dt = Repository().FindTableBySql(sql.ToString());
  1366. sql = @"SELECT 0 AS iLowerLimit, REQUESTQUANTITY AS iUpperLimit, QUOPRICE as iTaxUnitPrice ,b.VENDORMEMO AS iTaxRate,ROUND(ROUND( QUOPRICE,2)/(1+(b.VENDORMEMO/CAST(100 AS float))),2) AS iUnitPrice,a.WorkPoint,a.QUOTATIONCODE,b.VENDORCODE FROM icsSORQUODETAILNORMAL a
  1367. LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1368. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1369. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1370. DataTable dtD = Repository().FindTableBySql(sql.ToString());
  1371. List<ICSSSSROCS> asnlist = new List<ICSSSSROCS>();
  1372. for (int k = 0; k < dt.Rows.Count; k++)
  1373. {
  1374. if (ERPOpen == "true")
  1375. {
  1376. ICSSSSROCS asn = new ICSSSSROCS();
  1377. asn.ID = GGUID;
  1378. asn.cInvCode = dt.Rows[k]["ITEMCODE"].ToString();
  1379. asn.cVenCode = dt.Rows[k]["VENDORCODE"].ToString();
  1380. asn.cComUnitCode = dt.Rows[k]["UNIT"].ToString();
  1381. //List.CompanyCode = EnCode;
  1382. asn.bTaxCost = Convert.ToInt32(dt.Rows[k]["bTaxCost"].ToString());
  1383. asn.iSupplyType = Convert.ToInt32(dt.Rows[k]["iSupplyType"].ToString());
  1384. asn.cExch_Name = dt.Rows[k]["cExch_Name"].ToString();
  1385. asn.WorkPoint = dt.Rows[k]["WorkPoint"].ToString();
  1386. asn.dEnableDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
  1387. asn.dDisableDate = dDisableDate;
  1388. DataRow[] drs = dtD.Select("QUOTATIONCODE='" + dt.Rows[k]["QUOTATIONCODE"].ToString() + "'");
  1389. for (int j = 0; j < drs.Length; j++)
  1390. {
  1391. CreateVendorInventoryPriceDetailEntity DetailList = new CreateVendorInventoryPriceDetailEntity();
  1392. DetailList.ID = GGUID;
  1393. DetailList.iLowerLimit = float.Parse(drs[j]["iLowerLimit"].ToString());
  1394. DetailList.iUpperLimit = float.Parse(drs[j]["iUpperLimit"].ToString());
  1395. DetailList.iUnitPrice = float.Parse(drs[j]["iUnitPrice"].ToString());
  1396. DetailList.iTaxRate = float.Parse(drs[j]["iTaxRate"].ToString());
  1397. DetailList.iTaxUnitPrice = float.Parse(drs[j]["iTaxUnitPrice"].ToString()); ;
  1398. DetailList.WorkPoint = drs[j]["WorkPoint"].ToString();
  1399. asn.list.Add(DetailList);
  1400. }
  1401. asnlist.Add(asn);
  1402. string input = JsonConvert.SerializeObject(asnlist);
  1403. string APIURL = ConfigurationManager.ConnectionStrings["XBJURL"].ConnectionString + "XBJInv_PriceByYL";
  1404. //string APIURL = "http://172.16.12.157:8100/api/XBJInv_Price";
  1405. //string APIURL = "http://localhost:19944//api/XBJInv_Price";
  1406. string result = HttpPost(APIURL, input);
  1407. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  1408. MessAge = Obj["Success"].ToString();
  1409. string Success = Obj["Message"].ToString();
  1410. if (MessAge.ToUpper() == "FALSE")
  1411. {
  1412. IsInput = false;
  1413. msg = Success;
  1414. }
  1415. else
  1416. {
  1417. IsInput = true;
  1418. sql = @"update a
  1419. set a.QUOSTATUS='PricingApprove'
  1420. from icsSORQUODETAILNORMAL a
  1421. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1422. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1423. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1424. sql += " UPDATE icsSORRFQ SET STATUS='PricingApprove' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  1425. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1426. if (count <= 0)
  1427. msg = "保存失败" + MessAge;
  1428. else
  1429. msg = "保存成功";
  1430. }
  1431. }
  1432. else
  1433. {
  1434. IsInput = true;
  1435. sql = @"update a
  1436. set a.QUOSTATUS='PricingApprove'
  1437. from icsSORQUODETAILNORMAL a
  1438. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1439. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1440. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1441. sql += " UPDATE icsSORRFQ SET STATUS='PricingApprove' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  1442. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1443. if (count <= 0)
  1444. msg = "保存失败" + MessAge;
  1445. else
  1446. msg = "保存成功";
  1447. }
  1448. }
  1449. }
  1450. }
  1451. }
  1452. catch (Exception ex)
  1453. {
  1454. return ex.Message;
  1455. }
  1456. return msg;
  1457. }
  1458. //public string AgreeCS(string json)
  1459. //{
  1460. // string ERPOpen = ConfigurationManager.ConnectionStrings["ERPOpen"].ConnectionString;
  1461. // DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
  1462. // string msg = "";
  1463. // try
  1464. // {
  1465. // string GGUID = Guid.NewGuid().ToString();
  1466. // var jobject = JArray.Parse(json);
  1467. // bool IsInput;
  1468. // string MessAge = string.Empty;
  1469. // int ivouchrowno = 1;
  1470. // for (int i = 0; i < jobject.Count; i++)
  1471. // {
  1472. // var resultss = jobject[i]["ZBVendorCode"].ToArray();
  1473. // string Vendors = resultss[0].ToString();
  1474. // ////string[] resultss = (string[])jobject[i]["ZBVendorCode"]//企业信息
  1475. // //string[] resultss = (string[])VendorCode;
  1476. // //var jobjects = JArray.Parse(jobject[i]["ZBVendorCode"].ToString());
  1477. // string sql = "";
  1478. // //sql = @"SELECT ITEMCODE,ITEMNAME,UNIT,,a.WorkPoint,'' AS dEnableDate,'' AS dDisableDate
  1479. // // ,a.QUOTATIONCODE,b.VENDORCODE FROM icsSORQUODETAILNORMAL a
  1480. // // LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1481. // // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1482. // // where b.RFQCODE='" + jobject[i]["rfqno"] + "' ";
  1483. // //DataTable dt = Repository().FindTableBySql(sql.ToString());
  1484. // sql = @"SELECT 0 AS iLowerLimit, REQUESTQUANTITY AS iUpperLimit, QUOPRICE as iTaxUnitPrice ,b.VENDORMEMO AS iTaxRate,ROUND(ROUND( QUOPRICE,2)/(1+(b.VENDORMEMO/CAST(100 AS float))),2) AS iUnitPrice,a.WorkPoint,a.QUOTATIONCODE,b.VENDORCODE,ITEMCODE,'人民币' cExch_Name,
  1485. // 1 AS bTaxCost,1 AS iSupplyType
  1486. // FROM icsSORQUODETAILNORMAL a
  1487. // LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1488. // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1489. // where b.RFQCODE='" + jobject[i]["rfqno"] + "' and c.VenName='" + Vendors + "'";
  1490. // DataTable dtD = Repository().FindTableBySql(sql.ToString());
  1491. // List<CreatePUPriceJustByYLEntity> asnlist = new List<CreatePUPriceJustByYLEntity>();
  1492. // log.Info("查询sql" + sql);
  1493. // if (ERPOpen == "true")
  1494. // {
  1495. // CreatePUPriceJustByYLEntity asn = new CreatePUPriceJustByYLEntity();
  1496. // asn.cmaker = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1497. // asn.cpersoncode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1498. // asn.cmainmemo = "";
  1499. // asn.cdepcode = "";
  1500. // //List.CompanyCode = EnCode;
  1501. // asn.bTaxCost = Convert.ToInt32(dtD.Rows[0]["bTaxCost"].ToString());
  1502. // asn.iSupplyType = Convert.ToInt32(dtD.Rows[0]["iSupplyType"].ToString());
  1503. // asn.WorkPoint = dtD.Rows[0]["WorkPoint"].ToString();
  1504. // for (int k = 0; k < dtD.Rows.Count; k++)
  1505. // {
  1506. // CreatePUPriceJustByYDetailsEntity DetailList = new CreatePUPriceJustByYDetailsEntity();
  1507. // DetailList.cvencode = dtD.Rows[k]["VENDORCODE"].ToString();
  1508. // DetailList.cinvcode = dtD.Rows[k]["ITEMCODE"].ToString();
  1509. // DetailList.dstartdate = DateTime.Now.ToString("yyyy-MM-dd");
  1510. // DetailList.fminquantity = float.Parse(dtD.Rows[k]["iLowerLimit"].ToString());
  1511. // DetailList.iUnitPrice = float.Parse(dtD.Rows[k]["iUnitPrice"].ToString());
  1512. // DetailList.iTaxRate = float.Parse(dtD.Rows[k]["iTaxRate"].ToString());
  1513. // DetailList.iTaxUnitPrice = float.Parse(dtD.Rows[k]["iTaxUnitPrice"].ToString()); ;
  1514. // DetailList.cexch_name = dtD.Rows[k]["cexch_name"].ToString();
  1515. // DetailList.ivouchrowno = ivouchrowno;
  1516. // ivouchrowno++;
  1517. // asn.list.Add(DetailList);
  1518. // }
  1519. // asnlist.Add(asn);
  1520. // string input = JsonConvert.SerializeObject(asnlist);
  1521. // log.Info("传入参数" + input);
  1522. // string APIURL = ConfigurationManager.ConnectionStrings["XBJURL"].ConnectionString + "PU_PriceJust";
  1523. // //string APIURL = "http://172.16.12.157:8100/api/PU_PriceJust";
  1524. // //string APIURL = "http://localhost:19944//api/PU_PriceJust";
  1525. // string result = HttpPost(APIURL, input);
  1526. // JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  1527. // log.Info("输出参数" + Obj);
  1528. // MessAge = Obj["Success"].ToString();
  1529. // string Success = Obj["Message"].ToString();
  1530. // if (MessAge.ToUpper() == "FALSE")
  1531. // {
  1532. // IsInput = false;
  1533. // msg = Success;
  1534. // }
  1535. // else
  1536. // {
  1537. // for (int s = 0; s < resultss.Length; s++)
  1538. // {
  1539. // string Vendor = resultss[s].ToString();
  1540. // IsInput = true;
  1541. // sql = @"update a
  1542. // set a.QUOSTATUS='PricingApprove'
  1543. // from icsSORQUODETAILNORMAL a
  1544. //left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1545. // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1546. // where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1547. // sql += " UPDATE icsSORRFQ SET STATUS='PricingApprove' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  1548. // int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1549. // if (count <= 0)
  1550. // msg = "保存失败" + MessAge;
  1551. // else
  1552. // msg = "保存成功";
  1553. // }
  1554. // }
  1555. // }
  1556. // else
  1557. // {
  1558. // for (int s = 0; s < resultss.Length; s++)
  1559. // {
  1560. // string Vendor = resultss[s].ToString();
  1561. // IsInput = true;
  1562. // sql = @"update a
  1563. // set a.QUOSTATUS='PricingApprove'
  1564. // from icsSORQUODETAILNORMAL a
  1565. //left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1566. // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1567. // where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1568. // sql += " UPDATE icsSORRFQ SET STATUS='PricingApprove' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  1569. // int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1570. // if (count <= 0)
  1571. // msg = "保存失败" + MessAge;
  1572. // else
  1573. // msg = "保存成功";
  1574. // }
  1575. // }
  1576. // }
  1577. // }
  1578. // catch (Exception ex)
  1579. // {
  1580. // log.Error(ex.Message);
  1581. // return ex.Message;
  1582. // }
  1583. // return msg;
  1584. //}
  1585. /// <summary>
  1586. /// 上传到OA
  1587. /// </summary>
  1588. /// <param name="json"></param>
  1589. /// <returns></returns>
  1590. public string AgreeByOA(string json)
  1591. {
  1592. var jobject = JArray.Parse(json);
  1593. string sql = "";
  1594. string sqls = "";
  1595. string msg = "";
  1596. try
  1597. {
  1598. #region 推送OA
  1599. string UserCodeOA = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1600. string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1601. sql = "select id from OA.dbo.org_member where code='" + UserCodeOA + "'";
  1602. log.Info("追加异常" + sql);
  1603. DataTable dtUserCodeOA = SqlHelper.GetDataTableBySql(sql);
  1604. if (dtUserCodeOA.Rows.Count <= 0)
  1605. {
  1606. log.Info(dtUserCodeOA.Rows.Count);
  1607. throw new Exception("发起账号OA系统中不存在!!");
  1608. }
  1609. DataTable dt = new DataTable();
  1610. var userInfo = new Dictionary<string, string>
  1611. {
  1612. {"userName", "ylzk-rest"},
  1613. {"password", "054d197d-73c2-4761-be58-a46efe6cd03f"},
  1614. {"loginName", UserCodeOA}
  1615. };
  1616. //var userInfo = new Dictionary<string, string>
  1617. // {
  1618. // {"userName", "ylzk-rest"},
  1619. // {"password", "054d197d-73c2-4761-be58-a46efe6cd03f"},
  1620. // {"loginName", "ylzk-rest"}
  1621. // };
  1622. // 序列化Dictionary为JSON字符串
  1623. string jsonString = JsonConvert.SerializeObject(userInfo, Formatting.Indented);
  1624. log.Info("获取Tocken传入参数:" + jsonString);
  1625. var reqInterNme = "https://oa.ylzk.com.cn:6443/seeyon/rest/token";
  1626. string responseStr = CertifiCationApp.HttpPost(reqInterNme, jsonString);
  1627. //var responseStr = httpGet(reqInterNme);
  1628. try
  1629. {
  1630. //JObject res = (JObject)JsonConvert.DeserializeObject(dtsql.Rows[0]["searchKey"].ToString());
  1631. JObject res = (JObject)JsonConvert.DeserializeObject(responseStr);
  1632. log.Info("输出Tocken参数:" + res);
  1633. string ID = res["id"].ToString();//获取Tockn
  1634. JObject resultbidUser = (JObject)JsonConvert.DeserializeObject(res["bindingUser"].ToString());
  1635. string id = resultbidUser["id"].ToString(); //用户ID
  1636. string departmentId = resultbidUser["departmentId"].ToString(); //部门ID
  1637. string postId = resultbidUser["postId"].ToString(); //岗位ID
  1638. //string Message = res["Message"].ToString();
  1639. if (!string.IsNullOrWhiteSpace(ID))
  1640. {
  1641. NFine.Domain._03_Entity.SRM.ICSSORRFQOA.datadetail dat = new NFine.Domain._03_Entity.SRM.ICSSORRFQOA.datadetail();
  1642. NFine.Domain._03_Entity.SRM.ICSSORRFQOA.datass dds = new NFine.Domain._03_Entity.SRM.ICSSORRFQOA.datass();
  1643. //string sqlFile = "SELECT Attachment1,Attachment2 FROM ICSPREVENDORProductionInspection Where TEMPVENDORCODE='" + TEMPVENDORCODE + "'and WorkPoint='" + WorkPoint + "'";
  1644. //DataTable dts = SqlHelper.GetDataTableBySql(sqlFile);
  1645. //string fileName = "" + dts.Rows[0]["Attachment1"].ToString() + ";" + dts.Rows[0]["Attachment2"].ToString();
  1646. //string[] PrintParas = fileName.Split(';');
  1647. int sort = 1;
  1648. string fileUrl = "";
  1649. ICSSORRFQOA da = new ICSSORRFQOA();
  1650. da.appName = "collaboration";
  1651. dat.templateCode = "gysbj";
  1652. dat.draft = "0";
  1653. dat.relateDoc = "";//(OA 公文附件 ID,默认为空,不使用)
  1654. dat.subject = "";//(OA 流程标题,默认为空,OA 端自动生成标题)
  1655. Domain._03_Entity.SRM.ICSSORRFQOA.formmain_0136 dm0021 = new Domain._03_Entity.SRM.ICSSORRFQOA.formmain_0136();
  1656. dm0021.field0001 = UserName;
  1657. dm0021.field0002 = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
  1658. dm0021.field0011 = jobject[0]["rfqno"].ToString();//询价单号
  1659. dds.formmain_0136 = dm0021;
  1660. dat.data = dds;
  1661. // sql = @"SELECT ROW_NUMBER() Over ( order by c.ITEMCODE desc ) As rowNum,c.ITEMCODE,c.ITEMNAME,f.InvStd,f.InvUnit
  1662. //,c.REQUESTQUANTITY,e.Remark,c.Material,c.PROCESS,c.SurfaceTreatment,c.Other,c.QUOPRICE
  1663. //,c.ADDITION1,d.VenName cVenName,b.VENDORCODE,ROUND(ROUND( QUOPRICE,2)/(1+(b.VENDORMEMO/CAST(100 AS float))),2) AS iUnitPrice,f.InvName
  1664. // FROM icsSORQUODETAILNORMAL c
  1665. // LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  1666. // LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  1667. // LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  1668. //left join ICSInventory f on c.ITEMCODE=f.InvCode and c.WorkPoint=f.WorkPoint
  1669. // WHERE b.RFQCODE='" + jobject[0]["rfqno"] + "'and d.VenName='" + Vendors + "'";
  1670. sql = @"SELECT ROW_NUMBER() Over ( order by c.ITEMCODE desc ) As rowNum,c.ITEMCODE,c.ITEMNAME,f.InvStd,f.InvUnit
  1671. ,c.REQUESTQUANTITY,e.Remark,c.Material,c.PROCESS,c.SurfaceTreatment,c.Other,c.QUOPRICE
  1672. ,c.ADDITION1,d.VenName cVenName,b.VENDORCODE,ROUND(ROUND( QUOPRICE,2)/(1+(b.VENDORMEMO/CAST(100 AS float))),2) AS iUnitPrice,c.RFQCODE,g.VenName AS djvencode,f.InvName,CAST(c.REQUESTQUANTITY * c.QUOPRICE AS DECIMAL(10, 4)) as field0021
  1673. ,h.SCQUOPRICE as field0026
  1674. FROM icsSORQUODETAILNORMAL c
  1675. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  1676. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  1677. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  1678. left join ICSInventory f on c.ITEMCODE=f.InvCode and c.WorkPoint=f.WorkPoint
  1679. LEFT JOIN ( SELECT a.ITEMCODE,
  1680. STUFF((
  1681. SELECT DISTINCT ', ' + d2.VenName
  1682. FROM icsSORQUODETAILNORMAL a2
  1683. LEFT JOIN icsSORQUOTATION b2 ON a2.QUOTATIONCODE = b2.QUOTATIONCODE AND b2.WorkPoint = a2.WorkPoint
  1684. LEFT JOIN dbo.ICSVendor d2 ON b2.VENDORCODE = d2.VenCode AND b2.WorkPoint = d2.WorkPoint
  1685. WHERE a2.ITEMCODE = a.ITEMCODE AND a2.QUOSTATUS = 'PricingApproveByOA'
  1686. and a2.RFQCODE='" + jobject[0]["rfqno"] + @"'
  1687. FOR XML PATH(''), TYPE
  1688. ).value('.', 'NVARCHAR(MAX)'), 1, 2, '') AS VenName,
  1689. a.RFQCODE
  1690. FROM icsSORQUODETAILNORMAL a
  1691. WHERE a.QUOSTATUS = 'PricingApproveByOA'
  1692. GROUP BY a.ITEMCODE, a.RFQCODE)g ON c.RFQCODE=g.RFQCODE AND c.ITEMCODE=g.ITEMCODE
  1693. LEFT JOIN (SELECT
  1694. *
  1695. FROM (
  1696. SELECT
  1697. DISTINCT
  1698. ROW_NUMBER() OVER(PARTITION BY b.VENDORCODE,c.ITEMCODE ORDER BY a.CreateTime ASC) AS num,
  1699. d.VenName AS SupplierCode,
  1700. a.Price as SCQUOPRICE,
  1701. a.CreateTime as LOGDATE,
  1702. b.RFQCODE,
  1703. c.ITEMCODE
  1704. FROM
  1705. icsSORQUOTATION b
  1706. LEFT JOIN icsSORRFQ2VENDOR e ON b.RFQCODE=e.RFQCODE AND b.WorkPoint=e.WorkPoint AND b.VENDORCODE=e.VENDORCODE
  1707. LEFT JOIN icsSORQUODETAILNORMAL c ON c.RFQCODE=e.RFQCODE AND e.WorkPoint=c.WorkPoint AND c.QUOTATIONCODE=b.QUOTATIONCODE
  1708. LEFT JOIN dbo.ICSQuoteHistory a ON a.QuotationID=c.ID AND a.WorkPoint=c.WorkPoint
  1709. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  1710. WHERE
  1711. c.RFQCODE='" + jobject[0]["rfqno"] + @"'
  1712. ) AS subquery
  1713. ) h ON g.RFQCODE=h.RFQCODE AND d.VenName=h.SupplierCode and g.ITEMCODE=h.ITEMCODE and h.num='1'
  1714. WHERE c.RFQCODE='" + jobject[0]["rfqno"] + "'";
  1715. DataTable dtD = Repository().FindTableBySql(sql.ToString());
  1716. for (int k = 0; k < dtD.Rows.Count; k++)
  1717. {
  1718. List<NFine.Domain._03_Entity.SRM.ICSSORRFQOA.formson_0137> formson_0137 = new List<NFine.Domain._03_Entity.SRM.ICSSORRFQOA.formson_0137>();
  1719. Domain._03_Entity.SRM.ICSSORRFQOA.formson_0137 dm0022 = new Domain._03_Entity.SRM.ICSSORRFQOA.formson_0137();
  1720. dm0022.field0003 = dtD.Rows[k]["cVenName"].ToString();
  1721. dm0022.field0004 = dtD.Rows[k]["VENDORCODE"].ToString();
  1722. dm0022.field0005 = dtD.Rows[k]["InvName"].ToString();
  1723. dm0022.field0006 = dtD.Rows[k]["InvStd"].ToString();
  1724. dm0022.field0007 = Convert.ToDecimal(dtD.Rows[k]["QUOPRICE"].ToString());
  1725. dm0022.field0008 = Convert.ToDecimal(dtD.Rows[k]["iUnitPrice"].ToString());
  1726. dm0022.field0009 = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
  1727. dm0022.field0012 = Convert.ToDecimal(dtD.Rows[k]["rowNum"].ToString());
  1728. dm0022.field0013 = dtD.Rows[k]["ITEMCODE"].ToString();
  1729. dm0022.field0014 = dtD.Rows[k]["InvUnit"].ToString();
  1730. dm0022.field0015 = Convert.ToDecimal(dtD.Rows[k]["REQUESTQUANTITY"].ToString());
  1731. dm0022.field0016 = Convert.ToDecimal(dtD.Rows[k]["Material"].ToString());
  1732. dm0022.field0017 = Convert.ToDecimal(dtD.Rows[k]["PROCESS"].ToString());
  1733. dm0022.field0018 = Convert.ToDecimal(dtD.Rows[k]["SurfaceTreatment"].ToString());
  1734. dm0022.field0019 = Convert.ToDecimal(dtD.Rows[k]["Other"].ToString());
  1735. dm0022.field0020 = Convert.ToDecimal(dtD.Rows[k]["QUOPRICE"].ToString());
  1736. dm0022.field0021 = Convert.ToDecimal(dtD.Rows[k]["field0021"].ToString());
  1737. dm0022.field0022 = dtD.Rows[k]["ADDITION1"].ToString();
  1738. dm0022.field0024 = dtD.Rows[k]["djvencode"].ToString();
  1739. dm0022.field0026 = (dtD.Rows[k]["field0026"].ToString() == "" ? 0 : Convert.ToDecimal(dtD.Rows[k]["field0026"].ToString()));
  1740. dds.formson_0137.Add(dm0022);
  1741. }
  1742. da.data = dat;
  1743. string input = JsonConvert.SerializeObject(da);
  1744. log.Info("传入参数" + input);
  1745. //}
  1746. string APIURLBid = "https://oa.ylzk.com.cn:6443/seeyon/rest/bpm/process/start?token=" + ID;
  1747. string resultBid = CertifiCationApp.HttpPost(APIURLBid, input);
  1748. JObject resBId = (JObject)JsonConvert.DeserializeObject(resultBid);
  1749. log.Info("输出参数" + resBId);
  1750. string Code = resBId["code"].ToString();//获取Tockn
  1751. if (Code == "0")
  1752. {
  1753. // 获取 app_bussiness_data 字段的值
  1754. string appBussinessDataJson = resBId["data"]["app_bussiness_data"].ToString();
  1755. // 解析 app_bussiness_data 的 JSON 数据
  1756. JObject appBussinessDataObject = JObject.Parse(appBussinessDataJson);
  1757. // 提取 affairId 和 summaryId 的值
  1758. string affairId = appBussinessDataObject["affairId"].ToString();
  1759. string summaryId = appBussinessDataObject["summaryId"].ToString();
  1760. for (int i = 0; i < jobject.Count; i++)
  1761. {
  1762. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  1763. for (int s = 0; s < resultss.Length; s++)
  1764. {
  1765. string Vendors = resultss[s].ToString();
  1766. //string Vendors = resultss[0].ToString();
  1767. sql += @"update a
  1768. set a.QUOSTATUS='PricingApproveByOA'
  1769. from icsSORQUODETAILNORMAL a
  1770. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1771. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1772. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendors + "'";
  1773. sql += " UPDATE icsSORRFQ SET STATUS='PricingApproveByOA',ADDITION1='" + affairId + "',ADDITION2=" + summaryId + " where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  1774. }
  1775. }
  1776. log.Info("修改状态sql:" + sql);
  1777. SqlHelper.CmdExecuteNonQueryLi(sql);
  1778. }
  1779. else
  1780. {
  1781. for (int i = 0; i < jobject.Count; i++)
  1782. {
  1783. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  1784. for (int s = 0; s < resultss.Length; s++)
  1785. {
  1786. string Vendors = resultss[s].ToString();
  1787. //string Vendors = resultss[0].ToString();
  1788. sqls += @"update a
  1789. set a.QUOSTATUS='Publish'
  1790. from icsSORQUODETAILNORMAL a
  1791. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1792. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1793. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendors + "'";
  1794. sqls += " UPDATE icsSORRFQ SET STATUS='Publish' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  1795. }
  1796. }
  1797. SqlHelper.CmdExecuteNonQueryLi(sqls);
  1798. msg = "OA上传OA失败!";
  1799. }
  1800. }
  1801. }
  1802. catch (Exception ex)
  1803. {
  1804. for (int i = 0; i < jobject.Count; i++)
  1805. {
  1806. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  1807. for (int s = 0; s < resultss.Length; s++)
  1808. {
  1809. string Vendors = resultss[s].ToString();
  1810. //string Vendors = resultss[0].ToString();
  1811. sqls += @"update a
  1812. set a.QUOSTATUS='Publish'
  1813. from icsSORQUODETAILNORMAL a
  1814. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1815. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1816. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendors + "'";
  1817. sqls += " UPDATE icsSORRFQ SET STATUS='Publish' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  1818. }
  1819. }
  1820. SqlHelper.CmdExecuteNonQueryLi(sqls);
  1821. log.Error(ex.Message);
  1822. msg = ex.Message;
  1823. }
  1824. #endregion
  1825. }
  1826. catch (Exception ex)
  1827. {
  1828. msg = "报错失败!" + ex.Message;
  1829. }
  1830. return msg;
  1831. }
  1832. /// <summary>
  1833. /// 上传到OA
  1834. /// </summary>
  1835. /// <param name="json"></param>
  1836. /// <returns></returns>
  1837. public string CleanAgreeByOA(string json)
  1838. {
  1839. var jobject = JArray.Parse(json);
  1840. string sql = "";
  1841. string sqls = "";
  1842. string msg = "";
  1843. try
  1844. {
  1845. #region 推送OA
  1846. string UserCodeOA = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1847. string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1848. sql = "select id from OA.dbo.org_member where code='" + UserCodeOA + "'";
  1849. log.Info("追加异常" + sql);
  1850. DataTable dtUserCodeOA = SqlHelper.GetDataTableBySql(sql);
  1851. if (dtUserCodeOA.Rows.Count <= 0)
  1852. {
  1853. log.Info(dtUserCodeOA.Rows.Count);
  1854. throw new Exception("发起账号OA系统中不存在!!");
  1855. }
  1856. DataTable dt = new DataTable();
  1857. var userInfo = new Dictionary<string, string>
  1858. {
  1859. {"userName", "ylzk-rest"},
  1860. {"password", "054d197d-73c2-4761-be58-a46efe6cd03f"},
  1861. {"loginName", UserCodeOA}
  1862. };
  1863. //var userInfo = new Dictionary<string, string>
  1864. // {
  1865. // {"userName", "ylzk-rest"},
  1866. // {"password", "054d197d-73c2-4761-be58-a46efe6cd03f"},
  1867. // {"loginName", "ylzk-rest"}
  1868. // };
  1869. // 序列化Dictionary为JSON字符串
  1870. string jsonString = JsonConvert.SerializeObject(userInfo, Formatting.Indented);
  1871. log.Info("获取Tocken传入参数:" + jsonString);
  1872. var reqInterNme = "https://oa.ylzk.com.cn:6443/seeyon/rest/token";
  1873. string responseStr = CertifiCationApp.HttpPost(reqInterNme, jsonString);
  1874. //var responseStr = httpGet(reqInterNme);
  1875. try
  1876. {
  1877. //JObject res = (JObject)JsonConvert.DeserializeObject(dtsql.Rows[0]["searchKey"].ToString());
  1878. JObject res = (JObject)JsonConvert.DeserializeObject(responseStr);
  1879. log.Info("输出Tocken参数:" + res);
  1880. string ID = res["id"].ToString();//获取Tockn
  1881. JObject resultbidUser = (JObject)JsonConvert.DeserializeObject(res["bindingUser"].ToString());
  1882. string id = resultbidUser["id"].ToString(); //用户ID
  1883. string departmentId = resultbidUser["departmentId"].ToString(); //部门ID
  1884. string postId = resultbidUser["postId"].ToString(); //岗位ID
  1885. //string Message = res["Message"].ToString();
  1886. if (!string.IsNullOrWhiteSpace(ID))
  1887. {
  1888. var cancelInfo = new Dictionary<string, string>
  1889. {
  1890. {"affairId", jobject[0]["ADDITION1"].ToString()},
  1891. {"summaryId",jobject[0]["ADDITION2"].ToString()},
  1892. {"loginName", UserCodeOA}
  1893. };
  1894. // 序列化Dictionary为JSON字符串
  1895. string canceljsonString = JsonConvert.SerializeObject(cancelInfo, Formatting.Indented);
  1896. log.Info("传入参数" + canceljsonString);
  1897. //}
  1898. string APIURLBid = "https://oa.ylzk.com.cn:6443/seeyon/rest/affair/cancel?token=" + ID;
  1899. string resultBid = CertifiCationApp.HttpPost(APIURLBid, canceljsonString);
  1900. log.Info("输出参数" + resultBid);
  1901. if (resultBid == "true")
  1902. {
  1903. for (int i = 0; i < jobject.Count; i++)
  1904. {
  1905. sqls += @"update a
  1906. set a.QUOSTATUS='Publish'
  1907. from icsSORQUODETAILNORMAL a
  1908. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1909. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1910. where b.RFQCODE='" + jobject[i]["RFQCODE"] + "'";
  1911. sqls += " UPDATE icsSORRFQ SET STATUS='Publish' where RFQCODE='" + jobject[i]["RFQCODE"] + "'";
  1912. }
  1913. SqlHelper.CmdExecuteNonQueryLi(sqls);
  1914. }
  1915. }
  1916. }
  1917. catch (Exception ex)
  1918. {
  1919. for (int i = 0; i < jobject.Count; i++)
  1920. {
  1921. sqls += @"update a
  1922. set a.QUOSTATUS='Publish'
  1923. from icsSORQUODETAILNORMAL a
  1924. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1925. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1926. where b.RFQCODE='" + jobject[i]["RFQCODE"] + "'";
  1927. sqls += " UPDATE icsSORRFQ SET STATUS='Publish' where RFQCODE='" + jobject[i]["RFQCODE"] + "'";
  1928. }
  1929. SqlHelper.CmdExecuteNonQueryLi(sqls);
  1930. log.Error(ex.Message);
  1931. msg = ex.Message;
  1932. }
  1933. #endregion
  1934. }
  1935. catch (Exception ex)
  1936. {
  1937. msg = "报错失败!" + ex.Message;
  1938. }
  1939. return msg;
  1940. }
  1941. public static string HttpPost(string url, string body)
  1942. {
  1943. try
  1944. {
  1945. Encoding encoding = Encoding.UTF8;
  1946. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  1947. request.Method = "POST";
  1948. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  1949. request.ContentType = "application/json; charset=utf-8";
  1950. byte[] buffer = encoding.GetBytes(body);
  1951. request.ContentLength = buffer.Length;
  1952. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  1953. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  1954. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  1955. {
  1956. return reader.ReadToEnd();
  1957. }
  1958. }
  1959. catch (WebException ex)
  1960. {
  1961. throw new Exception(ex.Message);
  1962. }
  1963. }
  1964. public string RejectCS(string json)
  1965. {
  1966. try
  1967. {
  1968. var jobject = JArray.Parse(json);
  1969. string result = "";
  1970. for (int i = 0; i < jobject.Count; i++)
  1971. {
  1972. string sql = "update icsSORQUODETAILNORMAL set QUOSTATUS='PricingReject' where QUOTATIONCODE='" + jobject[i]["最新报价单号"] + "' and ITEMCODE='" + jobject[i]["Invcode"] + "'";
  1973. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1974. if (count <= 0)
  1975. result = "保存失败";
  1976. else
  1977. result = "保存成功";
  1978. }
  1979. return result;
  1980. }
  1981. catch (Exception ex)
  1982. {
  1983. return ex.Message;
  1984. }
  1985. }
  1986. public String CreateBJ(string json)
  1987. {
  1988. try
  1989. {
  1990. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1991. WorkPoint = WorkPoint.Replace("'", "");
  1992. var jobject = JArray.Parse(json);
  1993. string Code = GetSercodeBJ(WorkPoint);
  1994. string result = "";
  1995. for (int i = 0; i < jobject.Count; i++)
  1996. {
  1997. string sql = "update icsSORQUODETAILNORMAL set COMPARECODE='" + Code + "',QUOSTATUS='PricingAppraising' where QUOTATIONCODE='" + jobject[i]["最新报价单号"] + "' and ITEMCODE='" + jobject[i]["Invcode"] + "'";
  1998. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1999. if (count <= 0)
  2000. result = "保存失败";
  2001. else
  2002. result = "保存成功";
  2003. }
  2004. return result;
  2005. }
  2006. catch (Exception ex)
  2007. {
  2008. return ex.Message;
  2009. }
  2010. }
  2011. public string GetSercodeBJ(string workpoint)
  2012. {
  2013. string datetime = DateTime.Now.ToString("yyyyMMdd");
  2014. SqlParameter[] para = { new SqlParameter("@WorkPoint", workpoint), new SqlParameter("@TbName", "ICSSORQUODETAILNORMAL"), new SqlParameter("@CodeCol", "COMPARECODE"), new SqlParameter("@Pre", "CPE" + datetime), new SqlParameter("@NumLen", 3) };
  2015. DataTable table = Repository().FindTableByProc("Addins_GetSerialCode", para);
  2016. return table.Rows[0][0].ToString();
  2017. }
  2018. public DataTable GetInvType()
  2019. {
  2020. string sql = "select F_ItemName from Sys_SRM_Itemsdetail where F_ItemId='488c96cb-49a5-4ea5-9d12-5a21b4db1d82'";
  2021. DataTable table = Repository().FindTableBySql(sql);
  2022. return table;
  2023. }
  2024. public DataTable GetCurrencty()
  2025. {
  2026. string sql = "SELECT * from Sys_SRM_ItemsDetail where F_ItemId in (select F_Id from Sys_SRM_Items where F_enCode='base_currency')";
  2027. DataTable table = Repository().FindTableBySql(sql);
  2028. return table;
  2029. }
  2030. public int CloseRFQPrice(string VenCode, string RFQNO, string ReturnRemark)
  2031. {
  2032. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2033. string sql = string.Empty;
  2034. sql = @"UPDATE ICSSORRFQ2VENDOR SET ISCLOSED = '是',CauseOff='{0}' WHERE RFQCODE ='{1}' and VENDORCODE='{2}'";
  2035. sql = string.Format(sql, ReturnRemark, RFQNO, VenCode);
  2036. return SqlHelper.ExecuteNonQuery(sql);
  2037. }
  2038. /// <summary>
  2039. /// 获取动态列
  2040. /// </summary>
  2041. /// <param name="rfqcode"></param>
  2042. /// <param name="workpoint"></param>
  2043. /// <returns></returns>
  2044. public DataTable SelectSORRFQColumnName(string rfqcode, string workpoint)
  2045. {
  2046. string sql = @"declare @sql varchar(8000)
  2047. SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,Remark
  2048. into #Temp
  2049. FROM icsSORQUODETAILNORMAL c
  2050. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2051. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  2052. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2053. WHERE c.RFQCODE='{0}' and c.WorkPoint='{1}'
  2054. select distinct cVenName as ColCaption,cVenName as ColFiledName from #Temp
  2055. drop table #Temp";
  2056. sql = string.Format(sql, rfqcode, workpoint);
  2057. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2058. return dt;
  2059. }
  2060. /// <summary>
  2061. /// 查询
  2062. /// </summary>
  2063. /// <param name="rfqcode"></param>
  2064. /// <param name="workpoint"></param>
  2065. /// <param name="jqgridparam"></param>
  2066. /// <returns></returns>
  2067. public DataTable GetListSORRFQGridJsonTOZSUM(string rfqcode, string workpoint, ref Pagination jqgridparam)
  2068. {
  2069. string msg = string.Empty;
  2070. DataTable dt = new DataTable();
  2071. //var queryParam = queryJson.ToJObject();
  2072. List<DbParameter> parameter = new List<DbParameter>();
  2073. string sql = @" declare @sql varchar(8000)
  2074. SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.cVenName,c.REQUESTQUANTITY
  2075. into #TempSORRFQ
  2076. FROM icsSORQUODETAILNORMAL c
  2077. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2078. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.cVenCode AND b.WorkPoint=d.WorkPoint
  2079. WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
  2080. select @sql=isnull(@sql+',','')+' ['+cVenName+']'
  2081. from(select distinct cVenName from #TempSORRFQ)as a
  2082. set @sql='SELECT STUFF((select'','' + cVenName from (SELECT DISTINCT cVenName FROM #TempSORRFQ ) DD for xml path('''')),1,1,'''') as IsTou,*
  2083. FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
  2084. exec(@sql)";
  2085. sql = string.Format(sql, rfqcode, workpoint);
  2086. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTempSORRFQ(sql.ToString(), " " + "#TempSORRFQ" + " ", " drop table #TempSORRFQ", parameter.ToArray(), ref jqgridparam);
  2087. return dtr;
  2088. }
  2089. public DataTable GetSubGridJsonCourseInfoSORRFQ(string rfqcode, string workpoint, string ITEMCODE, ref Pagination jqgridparam)
  2090. {
  2091. string sql = @" SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,c.WorkPoint,b.VENDORCODE,c.ADDITION1
  2092. ,Material,PROCESS,SurfaceTreatment,Other,c.AccountPeriod
  2093. FROM icsSORQUODETAILNORMAL c
  2094. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2095. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2096. WHERE c.RFQCODE='{0}' AND c.ITEMCODE='{1}'AND c.WorkPoint='{2}' ";
  2097. sql = string.Format(sql, rfqcode, ITEMCODE, workpoint);
  2098. return Repository().FindTablePageBySql(sql.ToString(), ref jqgridparam);
  2099. }
  2100. public DataTable SORRFQHistoryInfo(string rfqcode, string workpoint, string ITEMCODE, string VENDORCODE, ref Pagination jqgridparam)
  2101. {
  2102. DataTable dt = new DataTable();
  2103. List<DbParameter> parameter = new List<DbParameter>();
  2104. string sql = @" SELECT c.ITEMCODE,c.ITEMNAME,a.Price as QUOPRICE,d.VenName cVenName,c.WorkPoint,b.VENDORCODE,c.LOGUSER,a.CreateTime as LOGDATE FROM icsSORQUOTATION b
  2105. LEFT JOIN icsSORRFQ2VENDOR e ON b.RFQCODE=e.RFQCODE AND b.WorkPoint=e.WorkPoint AND b.VENDORCODE=e.VENDORCODE
  2106. LEFT JOIN icsSORQUODETAILNORMAL c ON c.RFQCODE=e.RFQCODE AND e.WorkPoint=c.WorkPoint AND c.QUOTATIONCODE=b.QUOTATIONCODE
  2107. LEFT JOIN dbo.ICSQuoteHistory a ON a.QuotationID=c.ID AND a.WorkPoint=c.WorkPoint
  2108. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2109. WHERE c.RFQCODE='{0}' AND c.workpoint='{1}'
  2110. AND c.ITEMCODE = '{2}'and b.VENDORCODE='{3}'";
  2111. sql = string.Format(sql, rfqcode, workpoint, ITEMCODE, VENDORCODE);
  2112. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2113. }
  2114. public DataTable SORRFQCourseHistoryInfoCahrs(string rfqcode, string workpoint, string ITEMCODE)
  2115. {
  2116. string sql = @" SELECT
  2117. DISTINCT
  2118. ROW_NUMBER() OVER(PARTITION BY b.VENDORCODE ORDER BY a.CreateTime ASC) AS num,d.VenName AS SupplierCode, a.Price as QUOPRICE,a.CreateTime as LOGDATE
  2119. FROM icsSORQUOTATION b
  2120. LEFT JOIN icsSORRFQ2VENDOR e ON b.RFQCODE=e.RFQCODE AND b.WorkPoint=e.WorkPoint AND b.VENDORCODE=e.VENDORCODE
  2121. LEFT JOIN icsSORQUODETAILNORMAL c ON c.RFQCODE=e.RFQCODE AND e.WorkPoint=c.WorkPoint AND c.QUOTATIONCODE=b.QUOTATIONCODE
  2122. LEFT JOIN dbo.ICSQuoteHistory a ON a.QuotationID=c.ID AND a.WorkPoint=c.WorkPoint
  2123. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2124. WHERE c.RFQCODE='{0}' AND c.workpoint='{1}' AND c.ITEMCODE ='{2}' ORDER BY a.CreateTime ASC ";
  2125. sql = string.Format(sql, rfqcode, workpoint, ITEMCODE);
  2126. return Repository().FindTableBySql(sql.ToString());
  2127. }
  2128. public DataTable GetMinPice(string RFQCODE, string ITEMCODE)
  2129. {
  2130. DataTable dt = new DataTable();
  2131. string sql = @"select min(QUOPRICE) as QUOPRICE from ICSSORQUODETAILNORMAL
  2132. WHERE 1=1
  2133. and RFQCODE='" + RFQCODE + "' and ITEMCODE='" + ITEMCODE + "'";
  2134. return Repository().FindTableBySql(sql.ToString());
  2135. }
  2136. public DataTable GetPOListExport(string rfqcode, string workpoint, ref Pagination jqgridparam)
  2137. {
  2138. List<DbParameter> parameter = new List<DbParameter>();
  2139. string sql = @" declare @sql varchar(8000)
  2140. SELECT c.ITEMCODE AS ,c.ITEMNAME AS ,CAST(c.QUOPRICE AS DECIMAL(18,4)) as QUOPRICE,d.cVenName,CAST(c.REQUESTQUANTITY AS DECIMAL(18,2)) AS
  2141. into #TempSORRFQ
  2142. FROM icsSORQUODETAILNORMAL c
  2143. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2144. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.cVenCode AND b.WorkPoint=d.WorkPoint
  2145. WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
  2146. select @sql=isnull(@sql+',','')+' ['+cVenName+']'
  2147. from(select distinct cVenName from #TempSORRFQ)as a
  2148. set @sql='SELECT *
  2149. FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
  2150. exec(@sql)";
  2151. sql = string.Format(sql, rfqcode, workpoint);
  2152. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTempSORRFQbyChan(sql.ToString(), " " + "#TempSORRFQ" + " ", " drop table #TempSORRFQ", parameter.ToArray(), ref jqgridparam);
  2153. return dtr;
  2154. }
  2155. public DataTable GetPOListExport(string rfqno, string workpoint)
  2156. {
  2157. string sql = @"select
  2158. e.ITEMCODE as ,
  2159. e.ITEMNAME as ,
  2160. icsSORRFQ2VENDOR.VENDORCODE as ,
  2161. VenName as ,
  2162. CAST(D.QUOPRICE AS DECIMAL(18,4)) AS ,
  2163. d.ADDITION1 AS ,
  2164. e.REQUESTQUANTITY AS ,
  2165. f.InvStd AS ,
  2166. d.material as ,
  2167. d.PROCESS as ,
  2168. d.SurfaceTreatment as ,
  2169. d.Other as
  2170. FROM icsSORRFQ2VENDOR
  2171. left join icsvendor on ICSVendor.vencode=icsSORRFQ2VENDOR.VENDORCODE
  2172. left join icsSORQUOTATION c on c.vendorcode=icsSORRFQ2VENDOR.VENDORCODE and c.rfqcode=icsSORRFQ2VENDOR.RFQCODE
  2173. left join icsSORQUODETAILNORMAL d on d.QUOTATIONCODE=c.QUOTATIONCODE
  2174. left join icsSORRFQ2NORMALITEM e on e.RFQCODE=icsSORRFQ2VENDOR.RFQCODE and d.itemcode=e.itemcode
  2175. LEFT JOIN dbo.ICSInventory f ON e.ITEMCODE=f.InvCode AND e.WorkPoint=f.WorkPoint
  2176. where icsSORRFQ2VENDOR.RFQCODE='" + rfqno + @"'AND ISNULL(c.QUOTATIONCODE,'')<>'' order by e.ITEMCODE desc";
  2177. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2178. return dt;
  2179. }
  2180. /// <summary>
  2181. /// 获取供应商-生效价格
  2182. /// </summary>
  2183. /// <param name="rfqno"></param>
  2184. /// <param name="workpoint"></param>
  2185. /// <returns></returns>
  2186. public DataTable GettPerson(string rfqno, string workpoint)
  2187. {
  2188. string sql = @"SELECT distinct d.VenName cVenName, d.VenName as SupplierCode
  2189. FROM icsSORQUODETAILNORMAL c
  2190. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2191. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  2192. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2193. where c.RFQCODE ='{0}'and c.WorkPoint='{1}'
  2194. ";
  2195. sql = string.Format(sql, rfqno, workpoint);
  2196. DataTable table = SqlHelper.GetDataTableBySql(sql);
  2197. return table;
  2198. }
  2199. /// <summary>
  2200. /// 查询
  2201. /// </summary>
  2202. /// <param name="rfqcode"></param>
  2203. /// <param name="workpoint"></param>
  2204. /// <param name="jqgridparam"></param>
  2205. /// <returns></returns>
  2206. public DataTable GetListSORRFQ(string rfqno, string workpoint, ref Pagination jqgridparam)
  2207. {
  2208. string msg = string.Empty;
  2209. DataTable dt = new DataTable();
  2210. //var queryParam = queryJson.ToJObject();
  2211. List<DbParameter> parameter = new List<DbParameter>();
  2212. string sql = @" declare @sql varchar(8000)
  2213. SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,c.REQUESTQUANTITY,e.Remark
  2214. into #TempSORRFQ
  2215. FROM icsSORQUODETAILNORMAL c
  2216. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2217. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  2218. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2219. WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
  2220. select @sql=isnull(@sql+',','')+' ['+cVenName+']'
  2221. from(select distinct cVenName from #TempSORRFQ)as a
  2222. set @sql='SELECT STUFF((select'','' + cVenName from (SELECT DISTINCT cVenName FROM #TempSORRFQ ) DD for xml path('''')),1,1,'''') as IsTou,*
  2223. FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
  2224. exec(@sql)";
  2225. sql = string.Format(sql, rfqno, workpoint);
  2226. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTempSORRFQ(sql.ToString(), " " + "#TempSORRFQ" + " ", " drop table #TempSORRFQ", parameter.ToArray(), ref jqgridparam);
  2227. Dictionary<string, decimal> dic = new Dictionary<string, decimal>();
  2228. foreach (DataRow dr in dtr.Rows)
  2229. {
  2230. foreach (DataColumn col in dtr.Columns)
  2231. {
  2232. if (col.Caption == "ITEMCODE" || col.Caption == "ZBVendor" || col.Caption == "ITEMNAME" || col.Caption == "cVenName" || col.Caption == "QUOPRICE" || col.Caption == "IsTou" || col.Caption == "REQUESTQUANTITY" || col.Caption == "Remark")
  2233. continue;
  2234. if (dic.Keys.Contains(col.Caption))
  2235. dic[col.Caption] += Convert.ToDecimal(Convert.ToDecimal(string.IsNullOrWhiteSpace(dr[col.Caption].ToString()) ? 0 : dr[col.Caption]) * Convert.ToDecimal(dr["REQUESTQUANTITY"]));
  2236. else
  2237. {
  2238. dic.Add(col.Caption, Convert.ToDecimal(Convert.ToDecimal(string.IsNullOrWhiteSpace(dr[col.Caption].ToString()) ? 0 : dr[col.Caption]) * Convert.ToDecimal(dr["REQUESTQUANTITY"])));
  2239. }
  2240. }
  2241. }
  2242. if (!string.IsNullOrWhiteSpace(msg))
  2243. {
  2244. throw new Exception(msg);
  2245. }
  2246. DataRow drNew = dtr.NewRow();
  2247. string name = "";
  2248. decimal qty = decimal.MaxValue;
  2249. foreach (var item in dic)
  2250. {
  2251. drNew[item.Key] = item.Value;
  2252. if (Convert.ToDecimal(item.Value) < qty && Convert.ToDecimal(item.Value) > 0)
  2253. {
  2254. qty = Convert.ToDecimal(item.Value);
  2255. name = item.Key;
  2256. }
  2257. }
  2258. DataColumn dataColumn = new DataColumn("ZBVendor", typeof(string));
  2259. dataColumn.DefaultValue = name; //为列设置默认值
  2260. dtr.Columns.Add(dataColumn);
  2261. dtr.Rows.Add(drNew);
  2262. return dtr;
  2263. }
  2264. /// <summary>
  2265. /// 查询
  2266. /// </summary>
  2267. /// <param name="rfqcode"></param>
  2268. /// <param name="workpoint"></param>
  2269. /// <param name="jqgridparam"></param>
  2270. /// <returns></returns>
  2271. public DataTable GetListSORRFQByDJ(string rfqno, string workpoint, ref Pagination jqgridparam)
  2272. {
  2273. string msg = string.Empty;
  2274. DataTable dt = new DataTable();
  2275. //var queryParam = queryJson.ToJObject();
  2276. List<DbParameter> parameter = new List<DbParameter>();
  2277. string sql = @" declare @sql varchar(8000)
  2278. SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,c.REQUESTQUANTITY,e.Remark,'' AS ZBVendor
  2279. ,f.InvStd
  2280. into #TempSORRFQ
  2281. FROM icsSORQUODETAILNORMAL c
  2282. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2283. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  2284. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2285. LEFT JOIN dbo.ICSInventory f ON e.ITEMCODE=f.InvCode AND e.WorkPoint=f.WorkPoint
  2286. WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
  2287. select @sql=isnull(@sql+',','')+' ['+cVenName+']'
  2288. from(select distinct cVenName from #TempSORRFQ)as a
  2289. set @sql='SELECT STUFF((select'','' + cVenName from (SELECT DISTINCT cVenName FROM #TempSORRFQ ) DD for xml path('''')),1,1,'''') as IsTou,*
  2290. FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
  2291. exec(@sql)";
  2292. sql = string.Format(sql, rfqno, workpoint);
  2293. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTempSORRFQ(sql.ToString(), " " + "#TempSORRFQ" + " ", " drop table #TempSORRFQ", parameter.ToArray(), ref jqgridparam);
  2294. string name = "";
  2295. foreach (DataRow dr in dtr.Rows)
  2296. {
  2297. decimal qty = decimal.MaxValue;
  2298. foreach (DataColumn col in dtr.Columns)
  2299. {
  2300. if (col.Caption == "ITEMCODE" || col.Caption == "ZBVendor" || col.Caption == "ITEMNAME" || col.Caption == "cVenName" || col.Caption == "QUOPRICE" || col.Caption == "IsTou" || col.Caption == "REQUESTQUANTITY" || col.Caption == "Remark" || col.Caption == "InvStd")
  2301. continue;
  2302. if (Convert.ToDecimal(string.IsNullOrWhiteSpace(dr[col.Caption].ToString()) ? 0 : dr[col.Caption]) < qty && Convert.ToDecimal(string.IsNullOrWhiteSpace(dr[col.Caption].ToString()) ? 0 : dr[col.Caption]) > 0)
  2303. {
  2304. qty = Convert.ToDecimal(dr[col.Caption]);
  2305. name = col.Caption;
  2306. }
  2307. }
  2308. dr["ZBVendor"] = name;
  2309. }
  2310. //if (!string.IsNullOrWhiteSpace(msg))
  2311. //{
  2312. // throw new Exception(msg);
  2313. //}
  2314. //DataRow drNew = dtr.NewRow();
  2315. //string name = "";
  2316. //decimal qty = decimal.MaxValue;
  2317. //foreach (var item in dic)
  2318. //{
  2319. // drNew[item.Key] = item.Value;
  2320. // if (Convert.ToDecimal(item.Value) < qty && Convert.ToDecimal(item.Value) > 0)
  2321. // {
  2322. // qty = Convert.ToDecimal(item.Value);
  2323. // name = item.Key;
  2324. // }
  2325. //}
  2326. //DataColumn dataColumn = new DataColumn("ZBVendor", typeof(string));
  2327. //dataColumn.DefaultValue = name; //为列设置默认值
  2328. //dtr.Columns.Add(dataColumn);
  2329. //dtr.Rows.Add(drNew);
  2330. return dtr;
  2331. }
  2332. public DataTable GetSORRVenDorFile(string rfqcode)
  2333. {
  2334. //string Vendor = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
  2335. DataTable dt = new DataTable();
  2336. string sql = @"SELECT Filename FROM ICSSORRFQ WHERE RFQCODE='{0}'";
  2337. sql = string.Format(sql, rfqcode);
  2338. dt = SqlHelper.GetDataTableBySql(sql);
  2339. return dt;
  2340. }
  2341. /// <summary>
  2342. /// 查询
  2343. /// </summary>
  2344. /// <param name="rfqcode"></param>
  2345. /// <param name="workpoint"></param>
  2346. /// <param name="jqgridparam"></param>
  2347. /// <returns></returns>
  2348. public DataTable GetListSORRFQbyRemark(string rfqno, string workpoint)
  2349. {
  2350. string msg = string.Empty;
  2351. DataTable dt = new DataTable();
  2352. //var queryParam = queryJson.ToJObject();
  2353. List<DbParameter> parameter = new List<DbParameter>();
  2354. string sql = @" declare @sql varchar(8000)
  2355. SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,c.REQUESTQUANTITY,e.Remark
  2356. into #TempSORRFQ
  2357. FROM icsSORQUODETAILNORMAL c
  2358. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2359. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  2360. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2361. WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
  2362. select @sql=isnull(@sql+',','')+' ['+cVenName+']'
  2363. from(select distinct cVenName from #TempSORRFQ)as a
  2364. set @sql='SELECT STUFF((select'','' + cVenName from (SELECT DISTINCT cVenName FROM #TempSORRFQ ) DD for xml path('''')),1,1,'''') as IsTou,*
  2365. FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
  2366. exec(@sql) drop table #TempSORRFQ ";
  2367. sql = string.Format(sql, rfqno, workpoint);
  2368. DataTable dtr = SqlHelper.GetDataTableBySql(sql.ToString());
  2369. return dtr;
  2370. }
  2371. /// <summary>
  2372. /// 获取采购订单信息
  2373. /// </summary>
  2374. /// <param name="rfqcode"></param>
  2375. /// <returns></returns>
  2376. public DataTable GetItemDocByPO(string queryJson, ref Pagination jqgridparam, string WorkPoint)
  2377. {
  2378. string ParentId = "";
  2379. var queryParam = queryJson.ToJObject();
  2380. List<DbParameter> parameter = new List<DbParameter>();
  2381. string sql = string.Empty;
  2382. if (!string.IsNullOrWhiteSpace(queryJson))
  2383. {
  2384. if (queryParam["status"].ToString() == "1")
  2385. {
  2386. sql = @"SELECT DISTINCT
  2387. a.id,
  2388. a.POCode,
  2389. a.Sequence,
  2390. b.InvCode,
  2391. a.Quantity,
  2392. a.CreateDateTime,
  2393. b.InvName,
  2394. b.InvStd,
  2395. a.PlanArriveDate,
  2396. b.InvUnit,
  2397. a.EATTRIBUTE13,
  2398. a.EATTRIBUTE14
  2399. FROM
  2400. dbo.ICSPurchaseOrder a
  2401. LEFT JOIN dbo.ICSInventory b ON a.InvCode = b.InvCode AND a.WorkPoint = b.WorkPoint
  2402. LEFT JOIN dbo.ICSWareHouseLotInfoLog c ON a.POCode = c.TransCode AND a.Sequence = c.TransSequence
  2403. WHERE
  2404. a.STATUS = '2'
  2405. AND EXISTS (
  2406. SELECT 1
  2407. FROM dbo.ICSWareHouseLotInfoLog c2
  2408. WHERE c2.TransCode = a.POCode AND c2.TransSequence = a.Sequence AND c2.Quantity = a.Quantity
  2409. ) ";
  2410. }
  2411. else if (queryParam["status"].ToString() == "2")
  2412. {
  2413. sql = @"SELECT DISTINCT
  2414. a.id,
  2415. a.POCode,
  2416. a.Sequence,
  2417. b.InvCode,
  2418. a.Quantity,
  2419. a.CreateDateTime,
  2420. b.InvName,
  2421. b.InvStd,
  2422. a.PlanArriveDate,
  2423. b.InvUnit,
  2424. a.EATTRIBUTE13,
  2425. a.EATTRIBUTE14
  2426. FROM
  2427. dbo.ICSPurchaseOrder a
  2428. LEFT JOIN dbo.ICSInventory b ON a.InvCode = b.InvCode AND a.WorkPoint = b.WorkPoint
  2429. LEFT JOIN dbo.ICSWareHouseLotInfoLog c ON a.POCode = c.TransCode AND a.Sequence = c.TransSequence
  2430. WHERE
  2431. a.STATUS = '2'
  2432. AND NOT EXISTS (
  2433. SELECT 1
  2434. FROM dbo.ICSWareHouseLotInfoLog c2
  2435. WHERE c2.TransCode = a.POCode
  2436. AND c2.TransSequence = a.Sequence
  2437. AND c2.Quantity = a.Quantity --
  2438. )";
  2439. }
  2440. else
  2441. {
  2442. sql = @"SELECT DISTINCT a.id,
  2443. a.POCode,
  2444. a.Sequence,
  2445. b.InvCode,
  2446. a.Quantity,
  2447. a.CreateDateTime,
  2448. b.InvName,
  2449. b.InvStd,
  2450. b.InvUnit,
  2451. PlanArriveDate,
  2452. a.EATTRIBUTE13,
  2453. a.EATTRIBUTE14
  2454. FROM dbo.ICSPurchaseOrder a
  2455. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  2456. Where 1=1 and a.STATUS='2'";
  2457. }
  2458. if (!string.IsNullOrWhiteSpace(queryParam["cPOID"].ToString()))
  2459. {
  2460. sql += " and a.POCode like '%" + queryParam["cPOID"].ToString() + "%' ";
  2461. }
  2462. if (!string.IsNullOrWhiteSpace(queryParam["BegiondDate"].ToString()))
  2463. {
  2464. sql += " and a.CreateDateTime >= '" + queryParam["BegiondDate"].ToString() + "' ";
  2465. }
  2466. if (!string.IsNullOrWhiteSpace(queryParam["EnddDate"].ToString()))
  2467. {
  2468. sql += " and a.CreateDateTime <= '" + queryParam["EnddDate"].ToString() + "' ";
  2469. }
  2470. if (!string.IsNullOrWhiteSpace(queryParam["cInvCode"].ToString()))
  2471. {
  2472. sql += " and b.InvCode ='" + queryParam["cInvCode"].ToString() + "' ";
  2473. }
  2474. if (!string.IsNullOrWhiteSpace(queryParam["cInvName"].ToString()))
  2475. {
  2476. sql += " and b.InvName ='" + queryParam["cInvName"].ToString() + "' ";
  2477. }
  2478. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  2479. //{
  2480. // sql += " and posrm.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  2481. //}
  2482. ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  2483. }
  2484. if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  2485. {
  2486. return SqlHelper.FindTablePageBySql_OtherTemp(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  2487. }
  2488. else
  2489. {
  2490. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2491. }
  2492. }
  2493. /// <summary>
  2494. /// 获取采购订单信息
  2495. /// </summary>
  2496. /// <param name="rfqcode"></param>
  2497. /// <returns></returns>
  2498. public DataTable GetRFByPU(string queryJson, ref Pagination jqgridparam, string WorkPoint)
  2499. {
  2500. var queryParam = queryJson.ToJObject();
  2501. List<DbParameter> parameter = new List<DbParameter>();
  2502. string sql = string.Empty;
  2503. //string Vendor = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
  2504. sql = @"SELECT a.F_ItemName,a.F_Description FROM Sys_SRM_ItemsDetail a
  2505. LEFT JOIN Sys_SRM_Items b ON a.F_ItemId = b.F_Id
  2506. WHERE b.F_EnCode = 'ERP001' and a.F_EnabledMark='1' and a.F_ItemCode='" + WorkPoint + "'";
  2507. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2508. if (dt.Rows.Count > 0)
  2509. {
  2510. sql = @" select pu_AppHead.cCode,pu_AppBody.ivouchrowno,pu_AppBody.cInvCode,Inv.cInvName,Inv.cInvStd,
  2511. Umit.cComUnitName as INVUOM ,pu_AppBody.fQuantity,pu_AppHead.dDate,pu_AppBody.dRequirDate
  2512. ,pu_AppBody.dArriveDate,pu_AppBody.cbMemo,''as Source,pu_AppBody.cpersonnameexec
  2513. into #Temp
  2514. From {0}.dbo.pu_AppHead with(nolock)
  2515. inner join {0}.dbo.pu_AppBody with(nolock) on pu_AppHead.id=pu_AppBody.id
  2516. left join (select irequiretrackstyle as extend_b_cinvcode_v_inventory_irequiretrackstyle,bproductbill as extend_b_cinvcode_v_inventory_bproductbill,cinvcode as keyextend_b_cinvcode_v_inventory_cinvcode
  2517. from {0}.dbo.v_inventory) extend_b_cinvcode_v_inventory on keyextend_b_cinvcode_v_inventory_cinvcode=pu_appbody.cinvcode
  2518. LEFT JOIN {0}.dbo.Inventory Inv ON pu_AppBody.cInvCode=Inv.cInvCode
  2519. LEFT JOIN {0}.dbo.ComputationUnit Umit ON Inv.cComUnitCode = Umit.cComunitCode
  2520. Where 1=1
  2521. And ( 1=1 And (cVoucherState = N'') And (cAppAdvanceCondic = N'0')
  2522. ) and isnull(cbcloser,N'')=N''
  2523. ";
  2524. }
  2525. if (!string.IsNullOrWhiteSpace(queryParam["cCode"].ToString()))
  2526. {
  2527. sql += " and pu_AppHead.cCode like '%" + queryParam["cCode"].ToString() + "%' ";
  2528. }
  2529. if (!string.IsNullOrWhiteSpace(queryParam["BegiondDate"].ToString()))
  2530. {
  2531. sql += " and pu_AppHead.dDate >= '" + queryParam["BegiondDate"].ToString() + "' ";
  2532. }
  2533. if (!string.IsNullOrWhiteSpace(queryParam["EnddDate"].ToString()))
  2534. {
  2535. sql += " and pu_AppHead.dDate <= '" + queryParam["EnddDate"].ToString() + "' ";
  2536. }
  2537. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  2538. {
  2539. sql += " and pu_AppBody.cInvCode ='" + queryParam["InvCode"].ToString() + "' ";
  2540. }
  2541. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  2542. {
  2543. sql += " and Inv.cInvName ='" + queryParam["InvName"].ToString() + "' ";
  2544. }
  2545. if (!string.IsNullOrWhiteSpace(queryParam["cpersonnameexec"].ToString()))
  2546. {
  2547. sql += " and pu_AppBody.cpersonnameexec like '%" + queryParam["cpersonnameexec"].ToString() + "%' ";
  2548. }
  2549. sql = string.Format(sql, dt.Rows[0]["F_Description"].ToString());
  2550. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTemp4(sql.ToString(), " " + "#Temp" + " ", " drop table #Temp", parameter.ToArray(), ref jqgridparam);
  2551. return dtr;
  2552. //return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2553. }
  2554. /// <summary>
  2555. /// 获取供应商列表-询报价
  2556. /// </summary>
  2557. /// <returns></returns>
  2558. public DataTable GetVendor(string rfqno, string workpoint)
  2559. {
  2560. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2561. string sql = @"select '' as F_VenCode,'' as cVenName
  2562. union all
  2563. SELECT distinct a.VENDORCODE as F_VenCode,c.VenName as cVenName from ICSSORQUOTATION a
  2564. left join ICSSORQUODETAILNORMAL b on a.QUOTATIONCODE=b.QUOTATIONCODE and a.WorkPoint=b.WorkPoint
  2565. LEFT JOIN dbo.ICSVendor c ON a.VENDORCODE=c.VenCode AND a.WorkPoint=c.WorkPoint
  2566. WHERE a.RFQCODE='" + rfqno + "' and a.WorkPoint='" + workpoint + "' ";
  2567. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2568. return dt;
  2569. }
  2570. /// <summary>
  2571. /// 退回
  2572. /// </summary>
  2573. /// <param name="POCodeRow"></param>
  2574. /// <param name="ArriveDate"></param>
  2575. /// <returns></returns>
  2576. public int WatchBJByDJBack(string rfqno, string Vendor, string workpoint)
  2577. {
  2578. int count = 0;
  2579. DataTable dt = new DataTable();
  2580. List<DbParameter> parameter = new List<DbParameter>();
  2581. string sql = string.Empty;
  2582. //keyValue = keyValue.Substring(1, keyValue.Length - 2);
  2583. //已改多站点
  2584. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  2585. string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  2586. sql += @" UPDATE b SET b.QUOSTATUS='Back' ,LOGUSER='" + UserCode + "'" +
  2587. ",LOGDATE='" + DateTime.Now.ToString("yyyy-MM-dd") + @"'
  2588. from ICSSORQUOTATION a
  2589. left join ICSSORQUODETAILNORMAL b on a.QUOTATIONCODE=b.QUOTATIONCODE and a.WorkPoint=b.WorkPoint
  2590. where a.RFQCODE ='" + rfqno + "'and a.VENDORCODE='" + Vendor + "' and a.WorkPoint='" + workpoint + "'";
  2591. StringBuilder Str = new StringBuilder(sql);
  2592. string MailOpen = ConfigurationManager.ConnectionStrings["MailOpen"].ConnectionString;
  2593. if (MailOpen == "true")
  2594. {
  2595. string SendHost = ConfigurationManager.ConnectionStrings["SendHost"].ConnectionString;
  2596. string StrSendPort = ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString;
  2597. int SendPort = 25;
  2598. if (!string.IsNullOrEmpty(StrSendPort))
  2599. SendPort = Convert.ToInt32(ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString);
  2600. string SendDisplayName = ConfigurationManager.ConnectionStrings["SendDisplayName"].ConnectionString;
  2601. string SendAddress = ConfigurationManager.ConnectionStrings["SendAddress"].ConnectionString;
  2602. string SendPassword = ConfigurationManager.ConnectionStrings["SendPassword"].ConnectionString;
  2603. string sqlEmail = @"SELECT a.VenCode,b.F_Email,a.VenName FROM dbo.ICSVendor a
  2604. LEFT JOIN dbo.Sys_SRM_User b ON a.VenCode=b.F_VenCode AND a.WorkPoint=b.F_Location
  2605. WHERE a.VenCode='" + Vendor + "'and a.WorkPoint='" + workpoint + "' ";
  2606. DataTable dtMail = SqlHelper.GetDataTableBySql(sqlEmail);
  2607. foreach (DataRow dr in dtMail.Rows)
  2608. {
  2609. string cVenCode = dr["VenCode"].ToString();
  2610. string TOAddress = dr["F_Email"].ToString();
  2611. string[] Partint = TOAddress.Split(';');
  2612. if (!string.IsNullOrEmpty(TOAddress))
  2613. {
  2614. foreach (var p in Partint)
  2615. {
  2616. string CCAddress = "";
  2617. string Subject = "有来自佑伦SRM平台信息";
  2618. bool isBodyHtml = false;
  2619. string F_RealName = dr["VenName"].ToString();
  2620. string NowDate = DateTime.Now.GetDateTimeFormats('D')[0].ToString();
  2621. string body = F_RealName + ":";
  2622. body += " \r\n\r\n\r\n 您有一个询价单号:" + rfqno + "对应的报价单已退回 ,请登录系统重新报价!";
  2623. body += "\r\n";
  2624. body += " 顺颂商祺!";
  2625. body += "\r\n";
  2626. body += " 佑伦真空设备科技有限公司";
  2627. body += "\r\n";
  2628. body += " " + NowDate;
  2629. string StrConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  2630. if (!string.IsNullOrEmpty(TOAddress))
  2631. {
  2632. try
  2633. {
  2634. SendEmail(StrConn, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, p.ToString(), CCAddress, Subject, isBodyHtml, body);
  2635. count = Repository().ExecuteBySql(Str);
  2636. }
  2637. catch (Exception ex)
  2638. {
  2639. throw new Exception("供应商:" + cVenCode + "邮件发送失败! \r\n" + ex.Message);
  2640. }
  2641. }
  2642. else
  2643. {
  2644. throw new Exception("请先维护供应商:" + F_RealName + "邮箱!");
  2645. }
  2646. }
  2647. }
  2648. }
  2649. }
  2650. else
  2651. {
  2652. count = Repository().ExecuteBySql(Str);
  2653. }
  2654. return count;
  2655. }
  2656. /// <summary>
  2657. /// 询价单子表查询
  2658. /// </summary>
  2659. /// <param name="queryJson"></param>
  2660. /// <param name="jqgridparam"></param>
  2661. /// <returns></returns>
  2662. public DataTable GetSubGridJson(string RFQCODE, ref Pagination jqgridparam, string WorkPoint)
  2663. {
  2664. DataTable dt = new DataTable();
  2665. List<DbParameter> parameter = new List<DbParameter>();
  2666. string sql = @"SELECT b.itemcode,b.itemname,b.ITEMTYPE,a.invstd,b.unit,REQUESTQUANTITY,memo FROM icsSORRFQ2NORMALITEM b
  2667. left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
  2668. where RFQCODE='{0}'";
  2669. sql = string.Format(sql, RFQCODE);
  2670. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2671. }
  2672. public string GetBidItemCode(string WorkPoint, string Vendor)
  2673. {
  2674. string BidItemCode = string.Empty;
  2675. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  2676. if (!string.IsNullOrEmpty(WorkPoint))
  2677. {
  2678. string Date = DateTime.Now.ToString("yy");
  2679. string Muoth = DateTime.Now.ToString("MM");
  2680. string Day = DateTime.Now.ToString("dd");
  2681. string Pre = "SRM" + WorkPoint;
  2682. BidItemCode = GetSerialCode(WorkPoint, "ICSBidDoc", "BidCode", Pre, 5);
  2683. }
  2684. if (!string.IsNullOrWhiteSpace(BidItemCode))
  2685. {
  2686. string sqlISHave = @"SELECT InvCode FROM ICSINVENTORY a
  2687. WHERE a.InvCode = '{0}'";
  2688. sqlISHave = string.Format(sqlISHave, BidItemCode);
  2689. DataTable dtIsHave = SqlHelper.GetDataTableBySql(sqlISHave);
  2690. if (dtIsHave.Rows.Count > 0)
  2691. {
  2692. throw new Exception("正式物料已存在!");
  2693. }
  2694. }
  2695. return BidItemCode;
  2696. }
  2697. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  2698. {
  2699. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  2700. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  2701. return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  2702. }
  2703. public DataTable ExportAll(string PruOrganize, string PruTeam, string RFQCode, string RFQName, string SupplierCode, string SupplierName, string InvCode, string InvName, string InvStd, string TimeFrom, string TimeTo, string ReleaseState)
  2704. {
  2705. string sql = @"select distinct
  2706. a.RFQCODE ,
  2707. RFQNAME ,
  2708. case a.STATUS
  2709. when 'Publish' then ''
  2710. when 'Examine' then ''
  2711. when 'HasExamine' THEN ''
  2712. WHEN 'New' THEN ''
  2713. when 'Close' then ''
  2714. when 'PricingApprove' then ''
  2715. when 'PricingApproveByOA' then 'OA待审核'
  2716. when 'PricingApproveByOASH' then 'OA已审核'
  2717. when 'PricingApproveByOABack' then 'OA审核拒绝'
  2718. end as ,
  2719. h.F_ItemName as ,
  2720. c.PURCHUGNAME as ,
  2721. A.LOGDATE ,
  2722. A.LOGUSER ,
  2723. A.workpoint
  2724. from icsSORRFQ A
  2725. left join BASE_SUPPLIER B ON B.SupplierCode = a.COMPANYCODE
  2726. left join ICSPurChug c on c.PURCHUGCODE = a.PURCHUGCODE
  2727. --left join ICSPURCHUGSON d on d.PURCHUGSONCODE = a.PURTeam
  2728. left join icsSORRFQ2NORMALITEM e on e.RFQCODE=a.RFQCODE
  2729. left join ICSINVENTORY f on f.INVCODE=e.ITEMCODE
  2730. left join icsSORQUOTATION g on g.RFQCODE=a.Rfqcode
  2731. left join Sys_SRM_ItemsDetail h on h.F_ItemCode=A.purteam
  2732. where 1=1 ";
  2733. if (!string.IsNullOrEmpty(PruOrganize))
  2734. {
  2735. sql += " and c.PURCHUGNAME like '%" + PruOrganize + "%' ";
  2736. }
  2737. if (!string.IsNullOrEmpty(PruTeam))
  2738. {
  2739. sql += " and h.F_ItemName like '%" + PruTeam + "%'";
  2740. }
  2741. if (!string.IsNullOrEmpty(RFQCode))
  2742. {
  2743. sql += " and a.RFQCode like '%" + RFQCode + "%'";
  2744. }
  2745. if (!string.IsNullOrEmpty(RFQName))
  2746. {
  2747. sql += " and a.RFQName like '%" + RFQName + "%'";
  2748. }
  2749. if (!string.IsNullOrEmpty(SupplierCode))
  2750. {
  2751. sql += " and B.SupplierCode like '%" + SupplierCode + "%'";
  2752. }
  2753. if (!string.IsNullOrEmpty(SupplierName))
  2754. {
  2755. sql += " and b.SupplierName like '%" + SupplierName + "%'";
  2756. }
  2757. if (!string.IsNullOrEmpty(InvCode))
  2758. {
  2759. sql += " and e.itemcode like '%" + InvCode + "%'";
  2760. }
  2761. if (!string.IsNullOrEmpty(InvName))
  2762. {
  2763. sql += " and e.itemname like '%" + InvName + "%'";
  2764. }
  2765. if (!string.IsNullOrEmpty(InvStd))
  2766. {
  2767. sql += " and f.InvStd like '%" + InvStd + "%'";
  2768. }
  2769. if (!string.IsNullOrEmpty(TimeFrom))
  2770. {
  2771. sql += " and a.BEGINDATE>='" + TimeFrom + "'";
  2772. }
  2773. if (!string.IsNullOrEmpty(TimeTo))
  2774. {
  2775. sql += " and a.BEGINDATE<='" + TimeTo + "'";
  2776. }
  2777. if (!string.IsNullOrEmpty(ReleaseState.Trim(',')) && ReleaseState.Trim(',') != "'Examine'" && ReleaseState.Trim(',') != "'HasExamine'")
  2778. {
  2779. sql += " and a.status in ('" + ReleaseState.TrimEnd('\'').TrimEnd(',') + "')";
  2780. }
  2781. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  2782. {
  2783. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  2784. }
  2785. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2786. return dt;
  2787. }
  2788. public string GetJsonVersion(string RFQCODE, string Version)
  2789. {
  2790. List<DbParameter> parameter = new List<DbParameter>();
  2791. // string sql = @"select
  2792. // a.RFQCODE+bb.ITEMCODE AS Costre, f.cVenCode,f.cVenName,F_MobilePhone,''税率,''账期,''货期,d.QUOPRICE 报价,''总报价,''总价,''价格降幅,''备注,''业务类型,bb.ITEMCODE,h.InvName
  2793. //INTO #TempA
  2794. // FROM dbo.ICSSORRFQ a
  2795. // LEFT JOIN dbo.icsSORRFQ2NORMALITEM bb ON a.RFQCODE=bb.RFQCODE AND a.workpoint=bb.WorkPoint
  2796. //LEFT JOIN dbo.ICSSORRFQ2VENDOR b ON a.RFQCODE=b.RFQCODE AND a.workpoint=b.WorkPoint
  2797. // LEFT JOIN icsSORQUOTATION c ON b.RFQCODE=c.RFQCODE AND b.VENDORCODE=c.VENDORCODE AND b.WorkPoint=c.WorkPoint
  2798. //LEFT JOIN icsSORQUODETAILNORMAL d ON d.QUOTATIONCODE=c.QUOTATIONCODE AND d.WorkPoint=c.WorkPoint AND bb.ItemCode=d.ItemCode AND a.RFQCODE=d.RFQCODE
  2799. //LEFT JOIN dbo.ICSVendor f ON b.VENDORCODE=f.cVenCode AND b.WorkPoint=f.WorkPoint
  2800. //LEFT JOIN dbo.Sys_SRM_User g ON f.cVenCode=g.F_VenCode AND d.WorkPoint=g.F_Location
  2801. //LEFT JOIN dbo.ICSInventory h ON bb.ITEMCODE=h.InvCode AND bb.WorkPoint=h.WorkPoint
  2802. //WHERE a.RFQCODE='" + RFQCODE + @"'
  2803. //SELECT distinct Costre, 业务类型,ITEMCODE as 料号,InvName as 料品名称 FROM #TempA
  2804. //SELECT Costre,cVenName as 供应商名称,F_MobilePhone as 联系人,''税率,''账期,''货期,报价,''总报价,''总价,''价格降幅,''备注 FROM #TempA ORDER BY cVenName,ITEMCODE
  2805. //DROP TABLE #TempA";
  2806. string sql = @"select
  2807. a.RFQCODE+bb.ITEMCODE AS Costre, f.VenCode,f.VenName,F_MobilePhone,c.VENDORMEMO AS , d.PlanDeliveryDate AS ,d.DeliveryDate AS ,d.QUOPRICE ,TotalPrice AS ,Bargaining AS ,TotalBargaining AS ,PriceReduction AS ,'',bb.ITEMCODE,h.InvName,f.VenPhone as ,f.VenLPerson as
  2808. INTO #TempA
  2809. FROM dbo.ICSSORRFQ a --
  2810. LEFT JOIN dbo.icsSORRFQ2NORMALITEM bb ON a.RFQCODE=bb.RFQCODE AND a.workpoint=bb.WorkPoint --
  2811. LEFT JOIN dbo.ICSSORRFQ2VENDOR b ON a.RFQCODE=b.RFQCODE AND a.workpoint=b.WorkPoint --
  2812. LEFT JOIN icsSORQUOTATION c ON b.RFQCODE=c.RFQCODE AND b.VENDORCODE=c.VENDORCODE AND b.WorkPoint=c.WorkPoint --
  2813. LEFT JOIN icsSORQUODETAILNORMAL_HISTORY d ON d.QUOTATIONCODE=c.QUOTATIONCODE AND d.WorkPoint=c.WorkPoint AND bb.ItemCode=d.ItemCode AND a.RFQCODE=d.RFQCODE --
  2814. LEFT JOIN dbo.ICSVendor f ON b.VENDORCODE=f.VenCode AND b.WorkPoint=f.WorkPoint
  2815. LEFT JOIN dbo.Sys_SRM_User g ON f.VenCode=g.F_VenCode AND d.WorkPoint=g.F_Location
  2816. LEFT JOIN dbo.ICSInventory h ON bb.ITEMCODE=h.InvCode AND bb.WorkPoint=h.WorkPoint
  2817. WHERE a.RFQCODE='" + RFQCODE + @"' and d.Version='" + Version + @"'
  2818. SELECT a.RFQCODE+bb.ITEMCODE AS Costre,'', bb.ITEMCODE,InvName,h.InvUnit AS ,bb.REQUESTQUANTITY AS ,bb.PlanFinishDate AS ,'' AS ,'' AS ,bb.ApprovedVendor AS ,bb.ApprovedPrice ,bb.ApprovedTotalPrice AS
  2819. INTO #TempB
  2820. FROM dbo.ICSSORRFQ a --
  2821. LEFT JOIN dbo.icsSORRFQ2NORMALITEM bb ON a.RFQCODE=bb.RFQCODE AND a.workpoint=bb.WorkPoint --
  2822. LEFT JOIN icsSORQUOTATION c ON bb.RFQCODE=c.RFQCODE AND bb.WorkPoint=c.WorkPoint --
  2823. LEFT JOIN icsSORQUODETAILNORMAL_HISTORY d ON d.QUOTATIONCODE=c.QUOTATIONCODE AND d.WorkPoint=c.WorkPoint AND bb.ItemCode=d.ItemCode AND a.RFQCODE=d.RFQCODE --
  2824. LEFT JOIN dbo.ICSInventory h ON bb.ITEMCODE=h.InvCode AND bb.WorkPoint=h.WorkPoint
  2825. WHERE a.RFQCODE='" + RFQCODE + @"' and d.Version='" + Version + @"'
  2826. SELECT distinct Costre, ,ITEMCODE as ,InvName as ,,,,,,,, FROM #TempB
  2827. SELECT Costre,VenName as ,, ,,,,,,,,, FROM #TempA ORDER BY VenName,ITEMCODE
  2828. DROP TABLE #TempA
  2829. DROP TABLE #TempB";
  2830. DataSet DSet = SqlHelper.GetDataSetBySql(sql);
  2831. string Inputstr = SqlHelper.DataSetToJson(DSet, "供应商信息", "Costre");
  2832. return Inputstr;
  2833. }
  2834. public string GetJson(string RFQCODE)
  2835. {
  2836. List<DbParameter> parameter = new List<DbParameter>();
  2837. // string sql = @"select
  2838. // a.RFQCODE+bb.ITEMCODE AS Costre, f.cVenCode,f.cVenName,F_MobilePhone,''税率,''账期,''货期,d.QUOPRICE 报价,''总报价,''总价,''价格降幅,''备注,''业务类型,bb.ITEMCODE,h.InvName
  2839. //INTO #TempA
  2840. // FROM dbo.ICSSORRFQ a
  2841. // LEFT JOIN dbo.icsSORRFQ2NORMALITEM bb ON a.RFQCODE=bb.RFQCODE AND a.workpoint=bb.WorkPoint
  2842. //LEFT JOIN dbo.ICSSORRFQ2VENDOR b ON a.RFQCODE=b.RFQCODE AND a.workpoint=b.WorkPoint
  2843. // LEFT JOIN icsSORQUOTATION c ON b.RFQCODE=c.RFQCODE AND b.VENDORCODE=c.VENDORCODE AND b.WorkPoint=c.WorkPoint
  2844. //LEFT JOIN icsSORQUODETAILNORMAL d ON d.QUOTATIONCODE=c.QUOTATIONCODE AND d.WorkPoint=c.WorkPoint AND bb.ItemCode=d.ItemCode AND a.RFQCODE=d.RFQCODE
  2845. //LEFT JOIN dbo.ICSVendor f ON b.VENDORCODE=f.cVenCode AND b.WorkPoint=f.WorkPoint
  2846. //LEFT JOIN dbo.Sys_SRM_User g ON f.cVenCode=g.F_VenCode AND d.WorkPoint=g.F_Location
  2847. //LEFT JOIN dbo.ICSInventory h ON bb.ITEMCODE=h.InvCode AND bb.WorkPoint=h.WorkPoint
  2848. //WHERE a.RFQCODE='" + RFQCODE + @"'
  2849. //SELECT distinct Costre, 业务类型,ITEMCODE as 料号,InvName as 料品名称 FROM #TempA
  2850. //SELECT Costre,cVenName as 供应商名称,F_MobilePhone as 联系人,''税率,''账期,''货期,报价,''总报价,''总价,''价格降幅,''备注 FROM #TempA ORDER BY cVenName,ITEMCODE
  2851. //DROP TABLE #TempA";
  2852. string sql = @"select
  2853. a.RFQCODE+bb.ITEMCODE AS Costre, f.VenCode cVenCode,f.VenName cVenName,F_MobilePhone,c.VENDORMEMO AS , d.PlanDeliveryDate AS ,d.DeliveryDate AS ,d.QUOPRICE ,TotalPrice AS ,Bargaining AS ,TotalBargaining AS ,PriceReduction AS ,'',bb.ITEMCODE,h.InvName,f.VenPhone as ,f.VenLPerson as
  2854. INTO #TempA
  2855. FROM dbo.ICSSORRFQ a --
  2856. LEFT JOIN dbo.icsSORRFQ2NORMALITEM bb ON a.RFQCODE=bb.RFQCODE AND a.workpoint=bb.WorkPoint --
  2857. LEFT JOIN dbo.ICSSORRFQ2VENDOR b ON a.RFQCODE=b.RFQCODE AND a.workpoint=b.WorkPoint --
  2858. LEFT JOIN icsSORQUOTATION c ON b.RFQCODE=c.RFQCODE AND b.VENDORCODE=c.VENDORCODE AND b.WorkPoint=c.WorkPoint --
  2859. LEFT JOIN icsSORQUODETAILNORMAL d ON d.QUOTATIONCODE=c.QUOTATIONCODE AND d.WorkPoint=c.WorkPoint AND bb.ItemCode=d.ItemCode AND a.RFQCODE=d.RFQCODE --
  2860. LEFT JOIN dbo.ICSVendor f ON b.VENDORCODE=f.VenCode AND b.WorkPoint=f.WorkPoint
  2861. LEFT JOIN dbo.Sys_SRM_User g ON f.VenCode=g.F_VenCode AND d.WorkPoint=g.F_Location
  2862. LEFT JOIN dbo.ICSInventory h ON bb.ITEMCODE=h.InvCode AND bb.WorkPoint=h.WorkPoint
  2863. WHERE a.RFQCODE='" + RFQCODE + @"'
  2864. SELECT a.RFQCODE+bb.ITEMCODE AS Costre,'', bb.ITEMCODE,InvName,'',h.InvUnit AS ,bb.REQUESTQUANTITY AS ,bb.PlanFinishDate AS ,'' AS ,'' AS ,bb.ApprovedVendor AS ,bb.ApprovedPrice ,bb.ApprovedTotalPrice AS
  2865. INTO #TempB
  2866. FROM dbo.ICSSORRFQ a --
  2867. LEFT JOIN dbo.icsSORRFQ2NORMALITEM bb ON a.RFQCODE=bb.RFQCODE AND a.workpoint=bb.WorkPoint --
  2868. LEFT JOIN icsSORQUOTATION c ON bb.RFQCODE=c.RFQCODE AND bb.WorkPoint=c.WorkPoint --
  2869. LEFT JOIN icsSORQUODETAILNORMAL d ON d.QUOTATIONCODE=c.QUOTATIONCODE AND d.WorkPoint=c.WorkPoint AND bb.ItemCode=d.ItemCode AND a.RFQCODE=d.RFQCODE --
  2870. LEFT JOIN dbo.ICSInventory h ON bb.ITEMCODE=h.InvCode AND bb.WorkPoint=h.WorkPoint
  2871. WHERE a.RFQCODE='" + RFQCODE + @"'
  2872. SELECT distinct Costre, ,ITEMCODE as ,InvName as ,,,,,,,,, FROM #TempB
  2873. SELECT Costre,cVenName as ,, ,,,,,,,,, FROM #TempA ORDER BY cVenName,ITEMCODE
  2874. DROP TABLE #TempA
  2875. DROP TABLE #TempB";
  2876. DataSet DSet = SqlHelper.GetDataSetBySql(sql);
  2877. string Inputstr = SqlHelper.DataSetToJson(DSet, "供应商信息", "Costre");
  2878. return Inputstr;
  2879. }
  2880. /// <summary>
  2881. /// 采购提交比价单
  2882. /// </summary>
  2883. /// <param name="json"></param>
  2884. /// <returns></returns>
  2885. public string CGAgree(string json, string result, string rfqno)
  2886. {
  2887. DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
  2888. string msg = "";
  2889. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  2890. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  2891. conn.Open();
  2892. SqlTransaction sqlTran = conn.BeginTransaction();
  2893. SqlCommand cmd = new SqlCommand();
  2894. cmd.Transaction = sqlTran;
  2895. cmd.Connection = conn;
  2896. try
  2897. {
  2898. string GGUID = Guid.NewGuid().ToString();
  2899. var jobject = JArray.Parse(json);
  2900. //List<CreatePriceList.UFIDAU9CustCustCreatePriceListSRVPriceDataData> comtextList = new List<CreatePriceList.UFIDAU9CustCustCreatePriceListSRVPriceDataData>();
  2901. string sql = "";
  2902. for (int i = 0; i < jobject.Count; i++)
  2903. {
  2904. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  2905. string updateicsSORQUODETAILNORMAL = @"update a
  2906. set a.QUOSTATUS='Pending',a.QUOPRICE='" + jobject[i]["PricingPrice"].ToString() + @"'
  2907. from icsSORQUODETAILNORMAL a
  2908. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  2909. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  2910. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + jobject[i]["ZBVendorCode"] + "'";
  2911. SqlCommandHelper.CmdExecuteNonQuery(updateicsSORQUODETAILNORMAL, cmd);
  2912. string updateicsSORRFQL = " UPDATE icsSORRFQ SET STATUS='Pending' where RFQCODE='" + jobject[i]["rfqno"] + "'";
  2913. SqlCommandHelper.CmdExecuteNonQuery(updateicsSORRFQL, cmd);
  2914. string updateicsSORRFQ2NORMALITEM = " UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "',ApprovedTotalPrice='" + jobject[i]["ApprovedTotalPrice"] + "',ApprovedPrice='" + jobject[i]["PricingPrice"].ToString() + "',ApprovedVendor='" + jobject[i]["ZBVendorCode"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  2915. SqlCommandHelper.CmdExecuteNonQuery(updateicsSORRFQ2NORMALITEM, cmd);
  2916. }
  2917. JArray res = (JArray)JsonConvert.DeserializeObject(result);
  2918. foreach (var item in res)
  2919. {
  2920. JObject jo = (JObject)item;
  2921. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["供应商议价数据"].ToString());
  2922. foreach (var detail in resdetail)
  2923. {
  2924. JObject det = (JObject)detail;
  2925. sql = @"update a
  2926. set a.QUOSTATUS='Pending',a.Bargaining='" + det[""].ToString() + @"'
  2927. ,a.TotalBargaining='" + det[""].ToString() + @"'
  2928. ,a.PriceReduction='" + det[""].ToString() + @"'
  2929. from icsSORQUODETAILNORMAL a
  2930. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  2931. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  2932. where b.RFQCODE='" + rfqno + "' and ITEMCODE='" + jo[""].ToString() + "' and c.VenName='" + det[""].ToString() + "'";
  2933. SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  2934. }
  2935. }
  2936. cmd.Transaction.Commit();
  2937. msg = "保存成功";
  2938. }
  2939. catch (Exception ex)
  2940. {
  2941. cmd.Transaction.Rollback();
  2942. msg = ex.Message;
  2943. }
  2944. finally
  2945. {
  2946. if (conn.State == ConnectionState.Open)
  2947. {
  2948. conn.Close();
  2949. }
  2950. conn.Dispose();
  2951. };
  2952. return msg;
  2953. }
  2954. public string BZAgree(string json, string Type)
  2955. {
  2956. DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
  2957. string msg = "";
  2958. try
  2959. {
  2960. string CREATETIME = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
  2961. string CREATEDATE = DateTime.Now.ToString("yyyy-MM-dd");
  2962. string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  2963. string GGUID = Guid.NewGuid().ToString();
  2964. var jobject = JArray.Parse(json);
  2965. //List<CreatePriceList.UFIDAU9CustCustCreatePriceListSRVPriceDataData> comtextList = new List<CreatePriceList.UFIDAU9CustCustCreatePriceListSRVPriceDataData>();
  2966. string currentMaxVersion = "";
  2967. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  2968. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  2969. conn.Open();
  2970. SqlTransaction sqlTran = conn.BeginTransaction();
  2971. SqlCommand cmd = new SqlCommand();
  2972. cmd.Transaction = sqlTran;
  2973. cmd.Connection = conn;
  2974. try
  2975. {
  2976. for (int i = 0; i < jobject.Count; i++)
  2977. {
  2978. string sql = @"SELECT 0 AS iLowerLimit, REQUESTQUANTITY AS iUpperLimit, QUOPRICE as iTaxUnitPrice ,b.VENDORMEMO AS iTaxRate,ROUND(ROUND( QUOPRICE,2)/(1+(b.VENDORMEMO/CAST(100 AS float))),2) AS iUnitPrice,a.WorkPoint,a.QUOTATIONCODE,b.VENDORCODE,ITEMCODE,'人民币' cExch_Name
  2979. ,a.Version
  2980. FROM icsSORQUODETAILNORMAL a
  2981. LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  2982. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  2983. LEFT JOIN ICSInventory d ON ITEMCODE=d.invCode
  2984. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + jobject[i]["ZBVendorCode"] + "'";
  2985. DataTable dtD = SqlCommandHelper.SQlReturnData(sql, cmd);
  2986. // 查询当前最大版本号
  2987. string maxVersionSql = @"SELECT ISNULL(MAX(Version), 'Revision.A/0') AS MaxVersion
  2988. FROM icsSORQUODETAILNORMAL a
  2989. LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  2990. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  2991. WHERE a.RFQCODE = '" + jobject[i]["rfqno"] + @"'
  2992. AND ITEMCODE = '" + jobject[i]["ITEMCODE"] + @"' ";
  2993. DataTable dtVersion = SqlCommandHelper.SQlReturnData(maxVersionSql, cmd);
  2994. currentMaxVersion = dtVersion.Rows[0]["MaxVersion"].ToString();
  2995. // 解析版本号并递增
  2996. int revisionNumber = 0;
  2997. if (!string.IsNullOrEmpty(currentMaxVersion) && currentMaxVersion.StartsWith("Revision.A/"))
  2998. {
  2999. string versionPart = currentMaxVersion.Split('/')[1];
  3000. if (int.TryParse(versionPart, out revisionNumber))
  3001. {
  3002. revisionNumber++;
  3003. }
  3004. }
  3005. string newVersion = "Revision.A/" + revisionNumber;
  3006. // 更新当前记录
  3007. string QUOSTATUS = "";
  3008. if (Type == "BZ")
  3009. {
  3010. QUOSTATUS = "BZPricingApprove";
  3011. }
  3012. else if (Type == "ZJL")
  3013. {
  3014. QUOSTATUS = "PricingApprove";
  3015. }
  3016. string updateSql = @"UPDATE a
  3017. SET a.QUOSTATUS='" + QUOSTATUS + @"',
  3018. a.QUOPRICE='" + jobject[i]["PricingPrice"].ToString() + @"',
  3019. a.Bargaining1='" + jobject[i]["Bargaining1"] + @"',
  3020. a.Bargaining2='" + jobject[i]["Bargaining2"] + @"',
  3021. a.Bargaining3='" + jobject[i]["Bargaining3"] + @"',
  3022. a.Version='" + newVersion + @"'
  3023. FROM icsSORQUODETAILNORMAL a
  3024. LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  3025. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  3026. WHERE b.RFQCODE='" + jobject[i]["rfqno"] + @"'
  3027. AND a.ITEMCODE='" + jobject[i]["ITEMCODE"] + @"'
  3028. AND c.VenName='" + jobject[i]["ZBVendorCode"] + @"'";
  3029. SqlCommandHelper.CmdExecuteNonQuery(updateSql, cmd);
  3030. // 更新RFQ状态和备注
  3031. string updateRfqSql = @"UPDATE icsSORRFQ SET STATUS='" + QUOSTATUS + @"' WHERE RFQCODE='" + jobject[i]["rfqno"] + @"'
  3032. UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + @"' WHERE RFQCODE='" + jobject[i]["rfqno"] + @"' AND ITEMCODE='" + jobject[i]["ITEMCODE"] + @"'";
  3033. SqlCommandHelper.CmdExecuteNonQuery(updateRfqSql, cmd);
  3034. log.Info("调接口开始");
  3035. if (Type == "ZJL")
  3036. {
  3037. //调用接口
  3038. }
  3039. }
  3040. // 保存当前记录到历史表
  3041. string insertHistorySql = @"INSERT INTO icsSORQUODETAILNORMAL_HISTORY
  3042. SELECT
  3043. ADDITION1,ADDITION2,BUYERMEMO,COMPANYCODE,COMPARECODE,COSTDETAILSREFERCODE,CURRENCY,CURRENTQUOINDICATOR,
  3044. ENDDATE,INITREJECTREASON,ISINCLUDETAX,ISSELECTED,ITEMCODE,ITEMNAME,ITEMTYPE,LOGDATE,LOGTIME,LOGUSER,
  3045. PRICINGREJECTREASON,QUOBUYERPRICE,QUOPRICE,QUOSTATUS,QUOTATIONCODE,QUOTEDATE,REFERPRICE,REQUESTQUANTITY,
  3046. RFQCODE,STARTDATE,TRANSPORTATIONTYPE,UNIT,VENDORMEMO,VENDORREJECTREASON,Model,WorkPoint,PURCHUGCODE,PPs,
  3047. PPstatus,'" + CREATETIME + "','" + CREATEDATE + "',XCPRICE,NEWID(),'" + UserName + @"',EATTRIBUTE11,EATTRIBUTE12,EATTRIBUTE13,EATTRIBUTE14,
  3048. EATTRIBUTE15,EATTRIBUTE16,EATTRIBUTE17,EATTRIBUTE18,EATTRIBUTE19,EATTRIBUTE20,EATTRIBUTE21,EATTRIBUTE22,
  3049. EATTRIBUTE23,EATTRIBUTE24,EATTRIBUTE25,EATTRIBUTE26,EATTRIBUTE27,EATTRIBUTE28,EATTRIBUTE29,EATTRIBUTE30
  3050. ,DeliveryDate,PlanDeliveryDate,TotalPrice,Bargaining,TotalBargaining,PriceReduction,BlankWeight,WeightUnitPrice,
  3051. RawMaterialPrice,ProcessingFee,OtherExpenses,ZJQUOPRICE,Freight,Bargaining1,Bargaining2,Bargaining3,'" + currentMaxVersion + @"'
  3052. FROM icsSORQUODETAILNORMAL a
  3053. WHERE a.RFQCODE='" + jobject[0]["rfqno"] + @"' ";
  3054. SqlCommandHelper.CmdExecuteNonQuery(insertHistorySql, cmd);
  3055. cmd.Transaction.Commit();
  3056. msg = "保存成功";
  3057. }
  3058. catch (Exception ex)
  3059. {
  3060. cmd.Transaction.Rollback();
  3061. throw new Exception(ex.Message);
  3062. }
  3063. finally
  3064. {
  3065. if (conn.State == ConnectionState.Open)
  3066. {
  3067. conn.Close();
  3068. }
  3069. conn.Dispose();
  3070. }
  3071. }
  3072. catch (Exception ex)
  3073. {
  3074. log.Error("传入参数异常: " + ex.Message);
  3075. msg = "系统异常: " + ex.Message;
  3076. }
  3077. return msg;
  3078. }
  3079. /// <summary>
  3080. /// 部长拒绝
  3081. /// </summary>
  3082. /// <param name="json"></param>
  3083. /// <returns></returns>
  3084. public string BackAgree(string json)
  3085. {
  3086. DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
  3087. string msg = "";
  3088. try
  3089. {
  3090. string GGUID = Guid.NewGuid().ToString();
  3091. var jobject = JArray.Parse(json);
  3092. string sql = "";
  3093. for (int i = 0; i < jobject.Count; i++)
  3094. {
  3095. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  3096. try
  3097. {
  3098. if (jobject[i]["PricingPrice"].ToString() == "")
  3099. {
  3100. sql = @"update a
  3101. set a.QUOSTATUS='Back'
  3102. from icsSORQUODETAILNORMAL a
  3103. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  3104. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  3105. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + jobject[i]["ZBVendorCode"] + "'";
  3106. }
  3107. else
  3108. {
  3109. sql = @"update a
  3110. set a.QUOSTATUS='Back',a.QUOPRICE='" + jobject[i]["PricingPrice"].ToString() + @"'
  3111. from icsSORQUODETAILNORMAL a
  3112. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  3113. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  3114. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + jobject[i]["ZBVendorCode"] + "'";
  3115. }
  3116. sql += " UPDATE icsSORRFQ SET STATUS='Back' where RFQCODE='" + jobject[i]["rfqno"] + "'" +
  3117. " UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  3118. }
  3119. catch (Exception ex)
  3120. {
  3121. msg = "异常信息:" + ex.Message;
  3122. };
  3123. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  3124. if (count <= 0)
  3125. msg = "保存失败";
  3126. else
  3127. {
  3128. msg = "保存成功";
  3129. }
  3130. }
  3131. }
  3132. catch (Exception ex)
  3133. {
  3134. log.Error("传入参数" + ex.Message);
  3135. return ex.Message;
  3136. }
  3137. return msg;
  3138. }
  3139. /// <summary>
  3140. /// 部长修改
  3141. /// </summary>
  3142. /// <param name="json"></param>
  3143. /// <returns></returns>
  3144. public string SaveAgree(string json)
  3145. {
  3146. DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
  3147. string msg = "";
  3148. try
  3149. {
  3150. string GGUID = Guid.NewGuid().ToString();
  3151. var jobject = JArray.Parse(json);
  3152. string sql = "";
  3153. for (int i = 0; i < jobject.Count; i++)
  3154. {
  3155. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  3156. try
  3157. {
  3158. // if (jobject[i]["PricingPrice"].ToString() == "")
  3159. // {
  3160. // sql = @"update a
  3161. // set a.QUOSTATUS='Back'
  3162. // from icsSORQUODETAILNORMAL a
  3163. //left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  3164. // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.cVenCode AND b.WorkPoint=c.WorkPoint
  3165. // where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.cVenName='" + jobject[i]["ZBVendorCode"] + "'";
  3166. // }
  3167. // else
  3168. // {
  3169. // sql = @"update a
  3170. // set a.QUOSTATUS='Back',a.QUOPRICE='" + jobject[i]["PricingPrice"].ToString() + @"'
  3171. // from icsSORQUODETAILNORMAL a
  3172. //left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  3173. // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.cVenCode AND b.WorkPoint=c.WorkPoint
  3174. // where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.cVenName='" + jobject[i]["ZBVendorCode"] + "'";
  3175. // }
  3176. sql += " UPDATE icsSORRFQ SET STATUS='Back' where RFQCODE='" + jobject[i]["rfqno"] + "'" +
  3177. " UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
  3178. }
  3179. catch (Exception ex)
  3180. {
  3181. msg = "异常信息:" + ex.Message;
  3182. };
  3183. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  3184. if (count <= 0)
  3185. msg = "保存失败";
  3186. else
  3187. {
  3188. msg = "保存成功";
  3189. }
  3190. }
  3191. }
  3192. catch (Exception ex)
  3193. {
  3194. log.Error("传入参数" + ex.Message);
  3195. return ex.Message;
  3196. }
  3197. return msg;
  3198. }
  3199. /// <summary>
  3200. /// 部长撤销审核
  3201. /// </summary>
  3202. /// <param name="json"></param>
  3203. /// <returns></returns>
  3204. public string BZUpdateBJD(string json)
  3205. {
  3206. try
  3207. {
  3208. string wheresql = "(";
  3209. string[] id = json.Split(',');
  3210. for (int i = 0; i < id.Length; i++)
  3211. {
  3212. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  3213. }
  3214. wheresql = wheresql.Trim(',') + ")";
  3215. string sql = "UPDATE icsSORRFQ SET STATUS='Pending' WHERE RFQCODE in" + wheresql;
  3216. sql += @" UPDATE icsSORQUODETAILNORMAL SET QUOSTATUS='Pending' WHERE RFQCODE in" + wheresql;
  3217. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  3218. if (count > 0)
  3219. {
  3220. return "撤回成功!";
  3221. }
  3222. else
  3223. {
  3224. return "撤回失败!";
  3225. }
  3226. }
  3227. catch (Exception ex)
  3228. {
  3229. return ex.Message + " 撤回失败!";
  3230. }
  3231. }
  3232. /// <summary>
  3233. /// 部长撤销审核
  3234. /// </summary>
  3235. /// <param name="json"></param>
  3236. /// <returns></returns>
  3237. public string CloseBJD(string json)
  3238. {
  3239. try
  3240. {
  3241. string wheresql = "(";
  3242. string[] id = json.Split(',');
  3243. for (int i = 0; i < id.Length; i++)
  3244. {
  3245. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  3246. }
  3247. wheresql = wheresql.Trim(',') + ")";
  3248. string sql = "UPDATE icsSORRFQ SET STATUS='End' WHERE RFQCODE in" + wheresql;
  3249. sql += @"update c set c.STATUS='End' from icsSORRFQ a
  3250. left join icsSORRFQ2NORMALITEM b on a.RFQCODE=b.RFQCODE and a.workpoint=b.WorkPoint
  3251. left join ICSSORRFQRequestFrom c on b.ADDITION2=c.RFQCODE and b.WorkPoint=c.workpoint
  3252. WHERE a.RFQCODE in" + wheresql;
  3253. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  3254. if (count > 0)
  3255. {
  3256. return "关闭成功!";
  3257. }
  3258. else
  3259. {
  3260. return "关闭失败!";
  3261. }
  3262. }
  3263. catch (Exception ex)
  3264. {
  3265. return ex.Message + " 关闭失败!";
  3266. }
  3267. }
  3268. public DataTable GetVersionList(string queryJson, ref Pagination jqgridparam)
  3269. {
  3270. DataTable dt = new DataTable();
  3271. var queryParam = queryJson.ToJObject();
  3272. List<DbParameter> parameter = new List<DbParameter>();
  3273. string sql = @" SELECT DISTINCT Version,CREATETIME,CREATEUSER FROM icsSORQUODETAILNORMAL_HISTORY WHERE 1=1 ";
  3274. if (!string.IsNullOrWhiteSpace(queryJson))
  3275. {
  3276. if (!string.IsNullOrWhiteSpace(queryParam["rfqno"].ToString()))
  3277. {
  3278. sql += " and RFQCODE in('" + queryParam["rfqno"].ToString().TrimEnd(',') + "') ";
  3279. }
  3280. }
  3281. sql += " ORDER BY Version; ";
  3282. return SqlHelper.GetDataTableBySql(sql);
  3283. }
  3284. public string SaveBZAgree(string result, string rfqno)
  3285. {
  3286. string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  3287. string CREATETIME = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
  3288. string CREATEDATE = DateTime.Now.ToString("yyyy-MM-dd");
  3289. DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
  3290. string msg = "";
  3291. string currentMaxVersion = "";
  3292. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  3293. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  3294. conn.Open();
  3295. SqlTransaction sqlTran = conn.BeginTransaction();
  3296. SqlCommand cmd = new SqlCommand();
  3297. cmd.Transaction = sqlTran;
  3298. cmd.Connection = conn;
  3299. try
  3300. {
  3301. JArray res = (JArray)JsonConvert.DeserializeObject(result);
  3302. foreach (var item in res)
  3303. {
  3304. JObject jo = (JObject)item;
  3305. // 查询当前最大版本号
  3306. string maxVersionSql = @"SELECT ISNULL(MAX(Version), 'Revision.A/0') AS MaxVersion
  3307. FROM icsSORQUODETAILNORMAL a
  3308. LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  3309. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  3310. WHERE a.RFQCODE = '" + rfqno + @"'
  3311. AND ITEMCODE = '" + jo[""].ToString() + @"' ";
  3312. DataTable dtVersion = SqlCommandHelper.SQlReturnData(maxVersionSql, cmd);
  3313. currentMaxVersion = dtVersion.Rows[0]["MaxVersion"].ToString();
  3314. // 解析版本号并递增
  3315. int revisionNumber = 0;
  3316. if (!string.IsNullOrEmpty(currentMaxVersion) && currentMaxVersion.StartsWith("Revision.A/"))
  3317. {
  3318. string versionPart = currentMaxVersion.Split('/')[1];
  3319. if (int.TryParse(versionPart, out revisionNumber))
  3320. {
  3321. revisionNumber++;
  3322. }
  3323. }
  3324. string newVersion = "Revision.A/" + revisionNumber;
  3325. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["供应商议价数据"].ToString());
  3326. foreach (var detail in resdetail)
  3327. {
  3328. JObject det = (JObject)detail;
  3329. string sql = @"update a
  3330. set a.QUOSTATUS='Pending',a.Bargaining='" + det[""].ToString() + @"'
  3331. ,a.TotalBargaining='" + det[""].ToString() + @"'
  3332. ,a.PriceReduction='" + det[""].ToString() + @"'
  3333. ,a.Version='" + newVersion + @"'
  3334. from icsSORQUODETAILNORMAL a
  3335. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  3336. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  3337. where b.RFQCODE='" + rfqno + "' and ITEMCODE='" + jo[""].ToString() + "' and c.VenName='" + det[""].ToString() + "'";
  3338. SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  3339. }
  3340. }
  3341. // 保存当前记录到历史表
  3342. string insertHistorySqlhis = @"INSERT INTO icsSORQUODETAILNORMAL_HISTORY
  3343. SELECT
  3344. ADDITION1,ADDITION2,BUYERMEMO,COMPANYCODE,COMPARECODE,COSTDETAILSREFERCODE,CURRENCY,CURRENTQUOINDICATOR,
  3345. ENDDATE,INITREJECTREASON,ISINCLUDETAX,ISSELECTED,ITEMCODE,ITEMNAME,ITEMTYPE,LOGDATE,LOGTIME,LOGUSER,
  3346. PRICINGREJECTREASON,QUOBUYERPRICE,QUOPRICE,QUOSTATUS,QUOTATIONCODE,QUOTEDATE,REFERPRICE,REQUESTQUANTITY,
  3347. RFQCODE,STARTDATE,TRANSPORTATIONTYPE,UNIT,VENDORMEMO,VENDORREJECTREASON,Model,WorkPoint,PURCHUGCODE,PPs,
  3348. PPstatus,'" + CREATETIME + "','" + CREATEDATE + "',XCPRICE,NEWID(),'" + UserName + @"',EATTRIBUTE11,EATTRIBUTE12,EATTRIBUTE13,EATTRIBUTE14,
  3349. EATTRIBUTE15,EATTRIBUTE16,EATTRIBUTE17,EATTRIBUTE18,EATTRIBUTE19,EATTRIBUTE20,EATTRIBUTE21,EATTRIBUTE22,
  3350. EATTRIBUTE23,EATTRIBUTE24,EATTRIBUTE25,EATTRIBUTE26,EATTRIBUTE27,EATTRIBUTE28,EATTRIBUTE29,EATTRIBUTE30
  3351. ,DeliveryDate,PlanDeliveryDate,TotalPrice,Bargaining,TotalBargaining,PriceReduction,BlankWeight,WeightUnitPrice,
  3352. RawMaterialPrice,ProcessingFee,OtherExpenses,ZJQUOPRICE,Freight,Bargaining1,Bargaining2,Bargaining3,'" + currentMaxVersion + @"'
  3353. FROM icsSORQUODETAILNORMAL a
  3354. WHERE a.RFQCODE='" + rfqno + @"' ";
  3355. SqlCommandHelper.CmdExecuteNonQuery(insertHistorySqlhis, cmd);
  3356. cmd.Transaction.Commit();
  3357. msg = "保存成功";
  3358. }
  3359. catch (Exception ex)
  3360. {
  3361. cmd.Transaction.Rollback();
  3362. msg = ex.Message;
  3363. }
  3364. finally
  3365. {
  3366. if (conn.State == ConnectionState.Open)
  3367. {
  3368. conn.Close();
  3369. }
  3370. conn.Dispose();
  3371. };
  3372. return msg;
  3373. }
  3374. public DataTable SecondSelectOfferByPN(string RFQCODE, string Json ,ref Pagination jqgridparam)
  3375. {
  3376. DataTable dt = new DataTable();
  3377. var queryParam = Json.ToJObject();
  3378. List<DbParameter> parameter = new List<DbParameter>();
  3379. string sql = @"select
  3380. b.ID as ID,
  3381. c.ID as EnquiryID,
  3382. b.ITEMCODE, b.ITEMNAME as INVNAME,
  3383. 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
  3384. ,b.QUOSTATUS,case when isnull(c.HASCOSTDETAILS,0)=0 then '否' else '是' end HASCOSTDETAILS
  3385. ,b.ADDITION1,b.EATTRIBUTE20 as UnitQUOPRICE,b.EATTRIBUTE21 as TaxAmount,b.EATTRIBUTE22 as Currency,b.EATTRIBUTE23 as MinPackQuantity,b.EATTRIBUTE24 as MOQ,b.EATTRIBUTE25 as VenFullName,b.EATTRIBUTE26 as Purchaser,b.EATTRIBUTE27 as Origin,b.EATTRIBUTE28 as DailyMetalPrices,b.EATTRIBUTE29 as ProcessingFee,c.ManuFacturer ,c.ManuFacturerInvCode
  3386. from ICSSORQUOTATION a
  3387. left join ICSSORQUODETAILNORMAL b on a.QUOTATIONCODE=b.QUOTATIONCODE and a.WorkPoint=b.WorkPoint
  3388. left join ICSSORRFQ2NORMALITEM c on b.RFQCODE=c.RFQCODE and b.ITEMCODE=c.ITEMCODE and a.WorkPoint=c.WorkPoint
  3389. left join ICSINVENTORY d on b.ITEMCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
  3390. LEFT JOIN dbo.ICSVendor e ON a.VENDORCODE=e.VenCode and a.workpoint=e.WorkPoint
  3391. where a.RFQCODE='{0}' ";
  3392. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  3393. //{
  3394. // //sql += " and f.cVenCode in (SELECT cVenCode FROM ICSVendor where cVenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
  3395. // sql += "and c.Vendorsing like '%" + NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode + "%'";
  3396. //}
  3397. if (!string.IsNullOrEmpty(queryParam["InvCode"].ToString()))
  3398. {
  3399. sql += " and b.ITEMCODE like '%" + queryParam["InvCode"].ToString() + "%' ";
  3400. }
  3401. if (!string.IsNullOrEmpty(queryParam["VenName"].ToString()))
  3402. {
  3403. sql += " and b.EATTRIBUTE25 like '%" + queryParam["VenName"].ToString() + "%'";
  3404. }
  3405. sql = string.Format(sql, RFQCODE);
  3406. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  3407. }
  3408. }
  3409. }