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.

2738 lines
148 KiB

4 days 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 'PricingApproveByOA' then 'OA待审核'
  106. when 'PricingApproveByOASH' then 'OA已审核'
  107. when 'PricingApproveByOABack' then 'OA审核拒绝'
  108. end as STATUS,
  109. case a.STATUS
  110. when 'Publish' then ''
  111. when 'Examine' then ''
  112. when 'HasExamine' THEN ''
  113. WHEN 'New' THEN ''
  114. when 'Close' then ''
  115. when 'PricingApprove' then ''
  116. when 'PricingApproveByOA' then 'OA待审核'
  117. when 'PricingApproveByOASH' then 'OA已审核'
  118. when 'PricingApproveByOABack' then 'OA审核拒绝'
  119. end as HIDDSTATUS,
  120. a.BEGINDATE,a.ENDDATE,a.CREATEUSER,a.CREATETIME,c.PURCHUGNAME,h.F_ItemName as PURTEAM,c.PURCHUGNAME as PURORG
  121. ,b.SupplierName as COMPANYNAME,A.LOGDATE,A.LOGUSER,A.workpoint
  122. ,a.ADDITION1
  123. ,a.ADDITION2
  124. from icsSORRFQ A
  125. left join BASE_SUPPLIER B ON B.SupplierCode = a.COMPANYCODE
  126. left join ICSPurChug c on c.PURCHUGCODE = a.PURCHUGCODE
  127. --left join ICSPURCHUGSON d on d.PURCHUGSONCODE = a.PURTeam
  128. left join icsSORRFQ2NORMALITEM e on e.RFQCODE=a.RFQCODE
  129. left join ICSINVENTORY f on f.INVCODE=e.ITEMCODE
  130. left join icsSORQUOTATION g on g.RFQCODE=a.Rfqcode
  131. left join Sys_SRM_ItemsDetail h on h.F_ItemCode=A.purteam
  132. where 1=1 " + sqlwhere;
  133. ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  134. if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  135. {
  136. return SqlHelper.FindTablePageBySql_OtherTempbyLOGUSER(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  137. }
  138. else
  139. {
  140. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  141. }
  142. }
  143. public DataTable GetPUROrganize(string workpoint)
  144. {
  145. string wheresql = "";
  146. if (!string.IsNullOrEmpty(workpoint))
  147. {
  148. wheresql += " and workpoint='" + workpoint + "'";
  149. }
  150. string sql = " select '' as purchugcode,''as purchugname from ICSPurChug Union select purchugcode,purchugname from ICSPurChug where 1=1 " + wheresql;
  151. return Repository().FindTableBySql(sql, null);
  152. }
  153. public DataTable GetPURTeam(string code)
  154. {
  155. string sql = @"select b.F_EnabledMark,b.F_ItemCode as purchugcode,b.F_ItemName as purchugname from [dbo].[Sys_SRM_Items] a
  156. LEFT JOIN [dbo].[Sys_SRM_ItemsDetail] b on a.F_Id=b.F_itemID";
  157. if (!string.IsNullOrEmpty(code))
  158. {
  159. sql += " where F_EnCode='" + code + "'";
  160. }
  161. return Repository().FindTableBySql(sql, null);
  162. }
  163. public DataRow GetRFQ(string Rfqcode)
  164. {
  165. string sql = @"select begindate,COSTANALYSISTEMPLATE,costtype,CONVERT(VARCHAR(10),
  166. createdate,120)AS createdate,createtime,createuser,ISUNIFYANALYSISTEMPLATE,
  167. logdate,logtime,loguser,poct,a.purchugcode,b.PURCHUGNAME,rfqname,status,
  168. purteam,a.workpoint,companycode,rfqcode,memo,a.FileName,a.HASCOSTDETAILS
  169. from ICSSORRFQ a
  170. LEFT JOIN dbo.ICSPurChug b ON a.PURCHUGCODE=b.PURCHUGCODE
  171. where rfqcode='" + Rfqcode + "'";
  172. DataTable table = Repository().FindTableBySql(sql, null);
  173. return table.Rows[0];
  174. }
  175. public string GetSercode(string workpoint)
  176. {
  177. string datetime = DateTime.Now.ToString("yyyyMMdd");
  178. SqlParameter[] para = { new SqlParameter("@WorkPoint", workpoint), new SqlParameter("@TbName", "ICSSORRFQ"), new SqlParameter("@CodeCol", "RFQCODE"), new SqlParameter("@Pre", "XJD" + datetime), new SqlParameter("@NumLen", 3) };
  179. DataTable table = Repository().FindTableByProc("Addins_GetSerialCode", para);
  180. return table.Rows[0][0].ToString();
  181. }
  182. public void updateS(string ID, string paymentcondition)
  183. {
  184. DataRow[] a = Supplier.Select("ID='" + ID + "'");
  185. foreach (var item in a)
  186. {
  187. item["供应商付款条件"] = paymentcondition;
  188. }
  189. //return "操作成功!";
  190. }
  191. public void updateiss(string ID, string isshowprice)
  192. {
  193. DataRow[] a = Supplier.Select("ID='" + ID + "'");
  194. foreach (var item in a)
  195. {
  196. item["是否显示参考价"] = isshowprice;
  197. }
  198. //return "操作成功!";
  199. }
  200. /// <summary>
  201. /// 新增询价单
  202. /// </summary>
  203. /// <param name="details"></param>
  204. public void AddRFQ(ICSSORRFQ details)
  205. {
  206. string sql = string.Empty;
  207. try
  208. {
  209. List<ICSSORRFQ2NORMALITEM> list_BD = JsonConvert.DeserializeObject<List<ICSSORRFQ2NORMALITEM>>(details.arrayBidDocBD);
  210. List<ICSSORRFQ2VENDOR> list_GYS = JsonConvert.DeserializeObject<List<ICSSORRFQ2VENDOR>>(details.arrayBidDocGYS);
  211. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  212. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  213. conn.Open();
  214. SqlTransaction sqlTran = conn.BeginTransaction();
  215. SqlCommand cmd = new SqlCommand();
  216. cmd.Transaction = sqlTran;
  217. cmd.Connection = conn;
  218. try
  219. {
  220. string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  221. string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  222. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  223. if (details.RFQstatus == "2")
  224. {
  225. sql = "select * from ICSSORRFQ where RFQCODE='" + details.RFQCODE + "' and WorkPoint='" + details.WorkPoint + "'";
  226. DataTable dt = SqlCommandHelper.SQlReturnData(sql, cmd);
  227. if (dt != null && dt.Rows.Count > 0)
  228. {
  229. throw new Exception("询价单已存在!");
  230. }
  231. }
  232. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ WHERE RFQCODE=@RFQCODE and WorkPoint=@workpoint)
  233. BEGIN
  234. INSERT INTO dbo.ICSSORRFQ(
  235. begindate,COSTANALYSISTEMPLATE,costtype,createdate,createtime,
  236. createuser,ISUNIFYANALYSISTEMPLATE,logdate,logtime,loguser,
  237. poct,purchugcode,rfqname,status,purteam,
  238. workpoint,companycode,rfqcode,memo,HASCOSTDETAILS,FileName
  239. )
  240. VALUES (@begindate,@COSTANALYSISTEMPLATE,@costtype,getdate(),getdate() ,
  241. @createuser,@ISUNIFYANALYSISTEMPLATE,getdate(),getdate(),@loguser,
  242. @poct,@purchugcode,@rfqname,@status,@purteam,
  243. @workpoint,@companycode,@rfqcode,@memo,@HASCOSTDETAILS,@FileName)
  244. END
  245. ELSE
  246. BEGIN
  247. UPDATE dbo.ICSSORRFQ SET
  248. begindate=@begindate ,
  249. COSTANALYSISTEMPLATE=@COSTANALYSISTEMPLATE ,
  250. costtype=@costtype,
  251. ISUNIFYANALYSISTEMPLATE=@ISUNIFYANALYSISTEMPLATE ,
  252. logdate=getdate() ,
  253. logtime=getdate() ,
  254. loguser=@loguser,
  255. purchugcode=@purchugcode ,
  256. rfqname=@rfqname ,
  257. purteam=@purteam,
  258. memo=@memo,
  259. HASCOSTDETAILS=@HASCOSTDETAILS,
  260. FileName=@FileName
  261. WHERE RFQCODE=@RFQCODE AND WorkPoint=@workpoint
  262. END";
  263. SqlParameter[] sp_Detail = {
  264. new SqlParameter("@begindate",details.BEGINDATE),
  265. new SqlParameter("@COSTANALYSISTEMPLATE",details.COSTANALYSISTEMPLATE),
  266. new SqlParameter("@costtype",details.COSTTYPE),
  267. new SqlParameter("@createuser",MuserName),
  268. new SqlParameter("@ISUNIFYANALYSISTEMPLATE",details.ISUNIFYANALYSISTEMPLATE),
  269. new SqlParameter("@loguser",MuserName),
  270. //new SqlParameter("@ZTBCount",details.ZTBCount),
  271. new SqlParameter("@poct",details.POCT),
  272. new SqlParameter("@purchugcode",details.PURCHUGCODE),
  273. new SqlParameter("@rfqname",details.RFQNAME),
  274. new SqlParameter("@status","New"),
  275. new SqlParameter("@PURTeam",details.PURTeam),
  276. new SqlParameter("@workpoint",details.WorkPoint),
  277. new SqlParameter("@companycode",details.WorkPoint),
  278. new SqlParameter("@rfqcode",details.RFQCODE),
  279. new SqlParameter("@memo",details.MEMO),
  280. new SqlParameter("@HASCOSTDETAILS",details.HASCOSTDETAILS),
  281. new SqlParameter("@FileName",details.FileName),
  282. //new SqlParameter("@ENDDATE",details.ENDDATE)
  283. };
  284. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
  285. #region 标的
  286. foreach (ICSSORRFQ2NORMALITEM BD in list_BD)
  287. {
  288. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ2NORMALITEM WHERE ID='" + BD.ID + @"' and WorkPoint='" + BD.WorkPoint + @"')
  289. BEGIN
  290. INSERT INTO dbo.ICSSORRFQ2NORMALITEM(
  291. COMPANYCODE,COSTANALYSISTEMPLATE,CREATEDATE,CREATETIME,CREATEUSER,
  292. HASCOSTDETAILS,ISINCLUDETAX,ITEMCLASSID,ITEMCODE,ITEMNAME,
  293. ITEMTYPE,LOGDATE,LOGTIME,LOGUSER,MEMO,
  294. PRINCINGITEMCODE,REFERPRICE,CURRENCY,REQUESTQUANTITY,RFQCODE,
  295. RFQITEMREFERCODE,UNIT,ID,workpoint,
  296. Requirements)
  297. VALUES (
  298. '" + details.WorkPoint + @"','" + BD.COSTANALYSISTEMPLATE + @"',getdate(),getdate(),'" + MuserName + @"',
  299. '" + BD.HASCOSTDETAILS + @"','" + BD.ISINCLUDETAX + @"','" + BD.ITEMCLASSID + @"','" + BD.ITEMCODE + @"','" + BD.ITEMNAME + @"',
  300. '" + BD.ITEMTYPE + @"',getdate(),getdate(),'" + MuserName + @"','" + BD.MEMO + @"',
  301. '" + BD.PRINCINGITEMCODE + @"', " + Convert.ToDecimal(BD.REFERPRICE) + @",'" + BD.CURRENCY + @"'," + Convert.ToDecimal(BD.REQUESTQUANTITY) + @",'" + details.RFQCODE + @"',
  302. '" + BD.RFQITEMREFERCODE + @"','" + BD.UNIT + @"',NewID(),'" + details.WorkPoint + @"',
  303. '" + BD.Requirements + @"'
  304. )
  305. END
  306. ELSE
  307. BEGIN
  308. UPDATE dbo.ICSSORRFQ2NORMALITEM SET
  309. MEMO='" + BD.MEMO + @"' ,
  310. Requirements='" + BD.Requirements + @"' ,
  311. REQUESTQUANTITY=" + Convert.ToDecimal(BD.REQUESTQUANTITY) + @",
  312. HASCOSTDETAILS='" + BD.HASCOSTDETAILS + @"' ,
  313. RFQITEMREFERCODE='" + BD.RFQITEMREFERCODE + @"' ,
  314. LOGDATE=getdate() ,
  315. LOGTIME=getdate(),
  316. LOGUSER='" + MuserName + @"'
  317. WHERE ID='" + BD.ID + @"' AND WorkPoint='" + BD.WorkPoint + @"'
  318. END
  319. ";
  320. SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  321. }
  322. #endregion
  323. #region 临时物料
  324. foreach (ICSSORRFQ2NORMALITEM BD in list_BD)
  325. {
  326. if (BD.Source == "手工")
  327. {
  328. sql = @"INSERT INTO dbo.ICSINVENTORY
  329. (
  330. ID
  331. ,INVCODE
  332. ,INVNAME
  333. ,INVUOM
  334. ,INVSTD
  335. ,INVTYPE
  336. ,INVCLASS
  337. ,INVEXPORTIMPORT
  338. ,MUSER
  339. ,MUSERName
  340. ,MTIME
  341. ,WorkPoint
  342. )
  343. VALUES (
  344. @ID
  345. ,@INVCODE
  346. ,@INVNAME
  347. ,@INVUOM
  348. ,@INVSTD
  349. ,@INVTYPE
  350. ,@INVCLASS
  351. ,@INVEXPORTIMPORT
  352. ,@MUSER
  353. ,@MUSERName
  354. ,Getdate()
  355. ,@WorkPoint
  356. )
  357. ";
  358. SqlParameter[] sp_INv = {
  359. new SqlParameter("@ID",BD.ID),
  360. new SqlParameter("@INVCODE",BD.ITEMCODE),
  361. new SqlParameter("@INVNAME",BD.ITEMNAME),
  362. new SqlParameter("@INVUOM",BD.UNIT),
  363. new SqlParameter("@INVSTD",BD.InvStd),
  364. new SqlParameter("@INVTYPE","生产类型"),
  365. new SqlParameter("@INVCLASS","生产类型"),
  366. new SqlParameter("@INVEXPORTIMPORT","生产类型"),
  367. new SqlParameter("@WorkPoint",details.WorkPoint),
  368. new SqlParameter("@MUSER",Muser),
  369. new SqlParameter("@MUSERName",MuserName),
  370. //new SqlParameter("@WorkPoint",BD.cCode)
  371. };
  372. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_INv, cmd);
  373. }
  374. }
  375. #endregion
  376. #region 供应商
  377. foreach (ICSSORRFQ2VENDOR GYS in list_GYS)
  378. {
  379. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ2VENDOR WHERE ID='" + GYS.ID + @"' and WorkPoint='" + GYS.WorkPoint + @"')
  380. BEGIN
  381. INSERT INTO dbo.ICSSORRFQ2VENDOR
  382. (COMPANYCODE,CREATEDATE,CREATETIME,CREATEUSER,CURRENCY,
  383. ISCLOSED,ISSHOWPRICE,LOCATIONCODE,LOGDATE,LOGTIME,
  384. LOGUSER,PAYMENTCONDITION,PRINCINGVENDORCODE,RFQCODE,TAXRATE
  385. ,VENDORCODE,VENDORTYPE,ADDITION1,ID,workpoint,addition2)
  386. VALUES
  387. ('" + details.WorkPoint + @"',getdate(),getdate(),'" + MuserName + @"','" + GYS.CURRENCY + @"',
  388. '" + GYS.ISCLOSED + @"','" + GYS.ISSHOWPRICE + @"','" + GYS.LOCATIONCODE + @"',getdate(),getdate(),
  389. '" + MuserName + @"','" + GYS.PAYMENTCONDITION + @"','" + GYS.PRINCINGVENDORCODE + @"','" + details.RFQCODE + @"','" + GYS.TAXRATE + @"'
  390. ,'" + GYS.VENDORCODE + @"','" + GYS.VENDORTYPE + @"','" + GYS.ADDITION1 + @"','" + GYS.ID + @"','" + details.WorkPoint + @"','" + details.ADDITION2 + @"')
  391. END
  392. ELSE
  393. BEGIN
  394. UPDATE dbo.ICSSORRFQ2VENDOR SET
  395. PAYMENTCONDITION='" + GYS.PAYMENTCONDITION + @"' ,
  396. ISSHOWPRICE='" + GYS.ISSHOWPRICE + @"',
  397. LOGDATE=getdate() ,
  398. LOGTIME=getdate(),
  399. LOGUSER='" + MuserName + @"'
  400. WHERE ID='" + GYS.ID + @"' AND WorkPoint='" + GYS.WorkPoint + @"'
  401. END
  402. ";
  403. SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  404. }
  405. #endregion
  406. cmd.Transaction.Commit();
  407. }
  408. catch (Exception ex)
  409. {
  410. cmd.Transaction.Rollback();
  411. throw new Exception(ex.Message);
  412. }
  413. finally
  414. {
  415. if (conn.State == ConnectionState.Open)
  416. {
  417. conn.Close();
  418. }
  419. conn.Dispose();
  420. }
  421. }
  422. catch (Exception ex)
  423. {
  424. throw new Exception(ex.Message);
  425. }
  426. }
  427. public void Upload(string filepath)
  428. {
  429. }
  430. public DataTable Getinv(string invcode, ref Pagination jqgridparam, string workpoint, string InvName)
  431. {
  432. List<DbParameter> parameter = new List<DbParameter>();
  433. DataTable table = new DataTable();
  434. string wherestr = "";
  435. if (!string.IsNullOrEmpty(invcode))
  436. {
  437. wherestr += " and invcode like '%" + invcode + "%'";
  438. }
  439. if (!string.IsNullOrEmpty(InvName))
  440. {
  441. wherestr += " and invname like '%" + InvName + "%'";
  442. }
  443. string sql = "select invcode,invname,invstd,InvUnit invuom,ClassName invclass from icsinventory where workpoint='" + workpoint + "'" + wherestr;
  444. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  445. }
  446. public string GetNewid()
  447. {
  448. string sql = "select newid() AS ID";
  449. return Repository().FindTableBySql(sql, null).Rows[0]["ID"].ToString();
  450. }
  451. public void AddinvtoTemp(string json)
  452. {
  453. var data = json.ToJObject();
  454. if (Invmes.Columns.Count <= 0)
  455. {
  456. Invmes.Columns.Add("公司代码", typeof(string));
  457. Invmes.Columns.Add("成本分析模板", typeof(string));
  458. Invmes.Columns.Add("创建日期", typeof(string));
  459. Invmes.Columns.Add("创建时间", typeof(string));
  460. Invmes.Columns.Add("创建用户", typeof(string));
  461. Invmes.Columns.Add("成本明细", typeof(string));
  462. Invmes.Columns.Add("是否含税", typeof(string));
  463. Invmes.Columns.Add("物料分类代码", typeof(string));
  464. Invmes.Columns.Add("物料代码", typeof(string));
  465. Invmes.Columns.Add("物料名称", typeof(string));
  466. Invmes.Columns.Add("物料类型", typeof(string));
  467. Invmes.Columns.Add("物料规格", typeof(string));
  468. Invmes.Columns.Add("更新日期", typeof(string));
  469. Invmes.Columns.Add("更新时间", typeof(string));
  470. Invmes.Columns.Add("更新用户", typeof(string));
  471. Invmes.Columns.Add("备注", typeof(string));
  472. Invmes.Columns.Add("定价物料编码", typeof(string));
  473. Invmes.Columns.Add("参考价格", typeof(string));
  474. Invmes.Columns.Add("币种", typeof(string));
  475. Invmes.Columns.Add("预计需求量", typeof(string));
  476. Invmes.Columns.Add("询价单编码", typeof(string));
  477. Invmes.Columns.Add("文件路径", typeof(string));
  478. Invmes.Columns.Add("有效期开始", typeof(string));
  479. Invmes.Columns.Add("单位", typeof(string));
  480. Invmes.Columns.Add("ID", typeof(string));
  481. Invmes.Columns.Add("workpoint", typeof(string));
  482. Invmes.Columns.Add("技术要求", typeof(string));
  483. }
  484. if (!String.IsNullOrEmpty(data["id"].ToString()))
  485. {
  486. UpdateInvRow(data["id"].ToString(), json);
  487. }
  488. else
  489. {
  490. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  491. DataRow newrow = Invmes.NewRow();
  492. newrow["公司代码"] = data["companycode"];
  493. newrow["成本分析模板"] = data["COSTANALYSISTEMPLATE"];
  494. newrow["创建日期"] = data["CREATEDATE"];
  495. newrow["创建时间"] = data["CreateTime"];
  496. newrow["创建用户"] = usercode;
  497. newrow["成本明细"] = data["HASCOSTDETAILS"];
  498. newrow["是否含税"] = data["ISINCLUDETAX"];
  499. newrow["物料分类代码"] = data["itemclass"];
  500. newrow["物料代码"] = data["itemcode"];
  501. newrow["物料名称"] = data["itemname"];
  502. newrow["物料类型"] = data["invtype"];
  503. newrow["物料规格"] = data["itemstd"];
  504. newrow["更新日期"] = data["logdate"];
  505. newrow["更新时间"] = data["logtime"];
  506. newrow["更新用户"] = usercode;
  507. newrow["备注"] = data["memo"];
  508. newrow["定价物料编码"] = data["PRINCINGITEMCODE"];
  509. newrow["参考价格"] = data["REFERPRICE"];
  510. newrow["币种"] = data["currency"];
  511. newrow["预计需求量"] = data["REQUESTQUANTITY"];
  512. newrow["询价单编码"] = data["RFQCODE"];
  513. newrow["文件路径"] = data["RFQITEMREFERCODE"];
  514. newrow["有效期开始"] = data["startdate"];
  515. newrow["单位"] = data["unit"];
  516. newrow["ID"] = GetNewid();
  517. newrow["workpoint"] = data["workpoint"];
  518. newrow["技术要求"] = data["Requirements"];
  519. Invmes.Rows.Add(newrow);
  520. }
  521. }
  522. /// <summary>
  523. /// 删除物料明细行
  524. /// </summary>
  525. /// <param name="json"></param>
  526. /// <returns></returns>
  527. public string DeleteInvTab(string keyValue)
  528. {
  529. string msg = string.Empty;
  530. try
  531. {
  532. //string wheresql = "(";
  533. ////string[] id = json.Split(',');
  534. ////for (int i = 0; i < id.Length; i++) {
  535. //// wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  536. ////}
  537. //wheresql = wheresql.Trim(',') + ")";
  538. string sql = "delete from icsSORRFQ2NORMALITEM where id in ('" + keyValue + "')";
  539. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  540. }
  541. catch (Exception ex)
  542. {
  543. msg = ex.Message + " 删除失败!";
  544. }
  545. return msg;
  546. }
  547. /// <summary>
  548. /// 清楚临时表
  549. /// </summary>
  550. public void ClearTempTab()
  551. {
  552. Invmes.Rows.Clear();
  553. Supplier.Rows.Clear();
  554. }
  555. public DataTable GetInvTable(string rfqno)
  556. {
  557. string sql = @"select companycode as 公司代码,COSTANALYSISTEMPLATE as 成本分析模板 ,CREATEDATE as 创建日期,
  558. CreateTime as ,CREATEUSER as ,HASCOSTDETAILS as ,ISINCLUDETAX as ,
  559. ITEMCLASSID as ,b.itemcode as ,b.itemname as ,
  560. CASE b.ITEMTYPE WHEN 'Real' then '' else '' end as ,a.invstd as ,
  561. logdate as ,logtime as ,LOGUSER as ,memo as ,PRINCINGITEMCODE as ,
  562. REFERPRICE as ,CURRENCY as ,REQUESTQUANTITY as ,RFQCODE as ,
  563. RFQITEMREFERCODE as ,startdate as ,Requirements as ,RFQITEMREFERCODE as HiddenFile,
  564. unit as ,B.ID,b.workpoint from icsSORRFQ2NORMALITEM b
  565. left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
  566. where RFQCODE='" + rfqno + @"'
  567. ";
  568. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  569. DataTable dtCloned = table.Clone();
  570. foreach (DataColumn col in dtCloned.Columns)
  571. {
  572. col.DataType = typeof(string);
  573. }
  574. foreach (DataRow row in table.Rows)
  575. {
  576. DataRow newrow = dtCloned.NewRow();
  577. foreach (DataColumn column in dtCloned.Columns)
  578. {
  579. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  580. }
  581. dtCloned.Rows.Add(newrow);
  582. }
  583. if (Invmes.Rows.Count > 0)
  584. {
  585. dtCloned.Merge(Invmes, false);
  586. }
  587. return dtCloned;
  588. }
  589. public DataRow GetInvRow(string id)
  590. {
  591. string sql = @"select companycode as 公司代码,COSTANALYSISTEMPLATE as 成本分析模板 ,CREATEDATE as 创建日期,CreateTime as 创建时间,CREATEUSER as 创建用户,HASCOSTDETAILS as 成本明细,ISINCLUDETAX as 是否含税,ITEMCLASSID as 物料分类代码,
  592. 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 ,
  593. unit as ,B.ID,b.workpoint from icsSORRFQ2NORMALITEM b
  594. left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
  595. where B.id='" + id + "'";
  596. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  597. if (table.Rows.Count <= 0)
  598. {
  599. return Invmes.Select("ID='" + id + "'").Single();
  600. }
  601. else
  602. {
  603. return table.Rows[0];
  604. }
  605. }
  606. public void UpdateInvRow(string id, string json)
  607. {
  608. var data = json.ToJObject();
  609. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  610. string sql = @"update icsSORRFQ2NORMALITEM set COSTANALYSISTEMPLATE='" + data["COSTANALYSISTEMPLATE"].ToString() + @"',
  611. HASCOSTDETAILS='" + data["HASCOSTDETAILS"].ToString() + @"',ISINCLUDETAX='" + data["ISINCLUDETAX"].ToString() + @"',itemcode='" + data["itemcode"].ToString() + @"',
  612. itemname='" + data["itemname"].ToString() + @"',ITEMTYPE='" + data["invtype"].ToString() + @"',logdate='" + data["logdate"].ToString() + "',logtime='" + data["logtime"].ToString() + @"',
  613. LOGUSER='" + usercode.ToString() + @",memo='" + data["memo"] + "',PRINCINGITEMCODE='" + data["PRINCINGITEMCODE"].ToString() + "',REQUESTQUANTITY='" + data["REQUESTQUANTITY"].ToString() + @"',
  614. RFQCODE='" + data["RFQCODE"].ToString() + "',RFQITEMREFERCODE='" + data["RFQITEMREFERCODE"].ToString() + "',STARTDATE='" + data["startdate"].ToString() + "',unit='" + data["unit"] + @"',CURRENCY='" + data["currency"].ToString() + @"',REFERPRICE='" + data["REFERPRICE"].ToString() + @"'
  615. WHERE ID='" + id + @"'
  616. ";
  617. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  618. if (count <= 0)
  619. {
  620. DataRow row = Invmes.Select("ID ='" + id + "'").Single();
  621. row["成本分析模板"] = data["COSTANALYSISTEMPLATE"];
  622. row["成本明细"] = data["HASCOSTDETAILS"];
  623. row["是否含税"] = data["ISINCLUDETAX"];
  624. row["物料分类代码"] = data["itemclass"];
  625. row["物料代码"] = data["itemcode"];
  626. row["物料名称"] = data["itemname"];
  627. row["物料类型"] = data["invtype"];
  628. row["物料规格"] = data["itemstd"];
  629. row["更新日期"] = data["logdate"];
  630. row["更新时间"] = data["logtime"];
  631. row["更新用户"] = usercode;
  632. row["备注"] = data["memo"];
  633. row["定价物料编码"] = data["PRINCINGITEMCODE"];
  634. row["预计需求量"] = data["REQUESTQUANTITY"];
  635. row["询价单编码"] = data["RFQCODE"];
  636. row["文件路径"] = data["RFQITEMREFERCODE"];
  637. row["有效期开始"] = data["startdate"];
  638. row["单位"] = data["unit"];
  639. }
  640. }
  641. public DataTable GetSup(string queryJson, ref Pagination jqgridparam)
  642. {
  643. string ParentId = "";
  644. var queryParam = queryJson.ToJObject();
  645. List<DbParameter> parameter = new List<DbParameter>();
  646. string sql = @"SELECT DISTINCT a.VenCode cvencode,a.VenName cvenname, VenExch_name as currency,a.VenPerson cvenperson, a.VenHand cvenhand,a.VenAddress cvenaddress,
  647. VenDisRate iVenTaxRate, VCName cVenType from ICSVendor a
  648. LEFT JOIN dbo.Sys_SRM_User b ON a.VenCode=b.F_VenCode AND a.WorkPoint=b.F_Location
  649. where 1=1 ";
  650. if (!string.IsNullOrWhiteSpace(queryParam["supcode"].ToString()))
  651. {
  652. sql += " and a.vencode like '%" + queryParam["supcode"].ToString() + "%'";
  653. }
  654. if (!string.IsNullOrWhiteSpace(queryParam["suppliername"].ToString()))
  655. {
  656. sql += " and a.venname like '%" + queryParam["suppliername"].ToString() + "%'";
  657. }
  658. if (!string.IsNullOrWhiteSpace(queryParam["WorkPoint"].ToString()))
  659. {
  660. sql += " and a.WorkPoint ='" + queryParam["WorkPoint"].ToString() + "'";
  661. }
  662. //if (!string.IsNullOrWhiteSpace(queryParam["Type"].ToString()))
  663. //{
  664. // if(queryParam["Type"].ToString()=="1"){
  665. // sql += " and LEN(VenRegCode)>14";
  666. // }
  667. //}
  668. if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
  669. {
  670. sql = SqlHelper.OrganizeByVendor_F_ParentId(sql, NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  671. }
  672. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  673. }
  674. public void AddSuptoTemp(string json)
  675. {
  676. JArray res = (JArray)JsonConvert.DeserializeObject(json.ToString());
  677. foreach (var item in res)
  678. {
  679. JObject data = (JObject)item;
  680. if (Supplier.Columns.Count <= 0)
  681. {
  682. Supplier.Columns.Add("公司代码", typeof(string));
  683. Supplier.Columns.Add("创建日期", typeof(string));
  684. Supplier.Columns.Add("创建时间", typeof(string));
  685. Supplier.Columns.Add("创建用户", typeof(string));
  686. Supplier.Columns.Add("供应商币别", typeof(string));
  687. Supplier.Columns.Add("是否关闭", typeof(string));
  688. Supplier.Columns.Add("是否所有物料已报价", typeof(string));
  689. Supplier.Columns.Add("是否显示参考价", typeof(string));
  690. Supplier.Columns.Add("供应商地点代码", typeof(string));
  691. Supplier.Columns.Add("更新日期", typeof(string));
  692. Supplier.Columns.Add("更新时间", typeof(string));
  693. Supplier.Columns.Add("更新用户", typeof(string));
  694. Supplier.Columns.Add("供应商付款条件", typeof(string));
  695. Supplier.Columns.Add("PRINCINGVENDORCODE", typeof(string));
  696. Supplier.Columns.Add("询价单编码", typeof(string));
  697. Supplier.Columns.Add("供应商税率", typeof(string));
  698. Supplier.Columns.Add("供应商代码", typeof(string));
  699. Supplier.Columns.Add("供应商名称", typeof(string));
  700. Supplier.Columns.Add("供应商类型", typeof(string));
  701. Supplier.Columns.Add("联系人", typeof(string));
  702. Supplier.Columns.Add("联系人电话", typeof(string));
  703. Supplier.Columns.Add("关闭原因", typeof(string));
  704. Supplier.Columns.Add("ID", typeof(string));
  705. Supplier.Columns.Add("workpoint", typeof(string));
  706. }
  707. if (!String.IsNullOrEmpty(data["id"].ToString()))
  708. {
  709. UpdateSupRow(data["id"].ToString(), json);
  710. }
  711. else
  712. {
  713. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  714. DataRow newrow = Supplier.NewRow();
  715. newrow["公司代码"] = data["companycode"];
  716. newrow["创建日期"] = data["createdate"];
  717. newrow["创建时间"] = data["createtime"];
  718. newrow["创建用户"] = usercode;
  719. newrow["供应商币别"] = data["currency"];
  720. newrow["是否关闭"] = data["isclosed"];
  721. newrow["是否所有物料已报价"] = data["isquoted"];
  722. newrow["是否显示参考价"] = data["isshowprice"];
  723. newrow["供应商地点代码"] = data["locationcode"];
  724. newrow["更新日期"] = data["logdate"];
  725. newrow["更新时间"] = data["logtime"];
  726. newrow["更新用户"] = usercode;
  727. newrow["供应商付款条件"] = data["paymentcondition"];
  728. newrow["PRINCINGVENDORCODE"] = data["PRINCINGVENDORCODE"];
  729. newrow["询价单编码"] = data["rfqcode"];
  730. newrow["供应商税率"] = data["rate"];
  731. newrow["供应商代码"] = data["code"];
  732. newrow["供应商名称"] = data["name"];
  733. newrow["供应商类型"] = data["type"];
  734. newrow["联系人"] = data["person"];
  735. newrow["联系人电话"] = data["phone"];
  736. newrow["关闭原因"] = data["closereason"];
  737. newrow["ID"] = GetNewid();
  738. newrow["workpoint"] = data["workpoint"];
  739. Supplier.Rows.Add(newrow);
  740. }
  741. }
  742. }
  743. public void UpdateSupRow(string id, string json)
  744. {
  745. var data = json.ToJObject();
  746. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  747. string sql = @"update icsSORRFQ2VENDOR set COMPANYCODE='" + data["companycode"].ToString() + @"',
  748. CURRENCY='" + data["currency"].ToString() + @"',ISCLOSED='" + data["isclosed"].ToString() + @"',ISQUOTED='" + data["isquoted"] + @"',
  749. ISSHOWPRICE='" + data["isshowprice"].ToString() + "',LOCATIONCODE='" + data["locationcode"].ToString() + "',LOGDATE='" + data["logdate"] + "',LOGTIME='" + data["logtime"].ToString() + "',LOGUSER='" + usercode + @"',
  750. 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() + @"'
  751. where id='" + id + "'";
  752. ;
  753. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  754. if (count <= 0)
  755. {
  756. DataRow newrow = Supplier.Select("ID ='" + id + "'").Single();
  757. newrow["公司代码"] = data["companycode"];
  758. newrow["供应商币别"] = data["currency"];
  759. newrow["是否关闭"] = data["isclosed"];
  760. newrow["是否所有物料已报价"] = data["isquoted"];
  761. newrow["是否显示参考价"] = data["isshowprice"];
  762. newrow["供应商地点代码"] = data["locationcode"];
  763. newrow["更新日期"] = data["logdate"];
  764. newrow["更新时间"] = data["logtime"];
  765. newrow["更新用户"] = usercode;
  766. newrow["供应商付款条件"] = data["paymentcondition"];
  767. newrow["PRINCINGVENDORCODE"] = data["PRINCINGVENDORCODE"];
  768. newrow["询价单编码"] = data["rfqcode"];
  769. newrow["供应商税率"] = data["rate"];
  770. newrow["供应商代码"] = data["code"];
  771. newrow["供应商名称"] = data["name"];
  772. newrow["供应商类型"] = data["type"];
  773. newrow["联系人"] = data["person"];
  774. newrow["联系人电话"] = data["phone"];
  775. newrow["关闭原因"] = data["closereason"];
  776. }
  777. }
  778. public DataTable GetSupTable(string rfqno)
  779. {
  780. string sql = @"select COMPANYCODE as 公司代码,CREATEDATE as 创建日期,CREATETIME as 创建时间,CREATEUSER as 创建用户,CURRENCY as 供应商币别,
  781. ISCLOSED as ,ISQUOTED as ,ISSHOWPRICE as ,locationcode as ,logdate as ,
  782. logtime as ,LOGUSER as ,paymentcondition as ,PRINCINGVENDORCODE,RFQCODE as ,TAXRATE as ,
  783. VENDORCODE as ,VenName as ,VENDORTYPE as ,VENPERSON AS ,venhand as ,ADDITION1 AS ,icsSORRFQ2VENDOR.ID,icsSORRFQ2VENDOR.workpoint
  784. FROM icsSORRFQ2VENDOR
  785. left join icsvendor on ICSVendor.vencode=icsSORRFQ2VENDOR.VENDORCODE AND icsSORRFQ2VENDOR.workpoint=icsvendor.workpoint
  786. where RFQCODE='" + rfqno + @"'
  787. ";
  788. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  789. DataTable dtCloned = table.Clone();
  790. foreach (DataColumn col in dtCloned.Columns)
  791. {
  792. col.DataType = typeof(string);
  793. }
  794. foreach (DataRow row in table.Rows)
  795. {
  796. DataRow newrow = dtCloned.NewRow();
  797. foreach (DataColumn column in dtCloned.Columns)
  798. {
  799. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  800. }
  801. dtCloned.Rows.Add(newrow);
  802. }
  803. if (Supplier.Rows.Count > 0)
  804. {
  805. dtCloned.Merge(Supplier, false);
  806. }
  807. return dtCloned;
  808. }
  809. public DataRow GetSuprow(string id)
  810. {
  811. string sql = @"select COMPANYCODE as 公司代码,CREATEDATE as 创建日期,CREATETIME as 创建时间,CREATEUSER as 创建用户,CURRENCY as 供应商币别,
  812. ISCLOSED as ,ISQUOTED as ,ISSHOWPRICE as ,locationcode as ,logdate as ,
  813. logtime as ,LOGUSER as ,paymentcondition as ,PRINCINGVENDORCODE,RFQCODE as ,TAXRATE as ,
  814. VENDORCODE as ,cVenName as ,VENDORTYPE as ,CVENPERSON AS ,cvenhand as ,ADDITION1 AS ,ID,icsSORRFQ2VENDOR.workpoint FROM icsSORRFQ2VENDOR
  815. left join icsvendor on ICSVendor.cvencode=icsSORRFQ2VENDOR.VENDORCODE
  816. where icsSORRFQ2VENDOR.id='" + id + @"';
  817. ";
  818. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  819. if (table.Rows.Count <= 0)
  820. {
  821. return Supplier.Select("ID='" + id + "'").Single();
  822. }
  823. else
  824. {
  825. return table.Rows[0];
  826. }
  827. }
  828. public string DeleteSupTab(string keyValue)
  829. {
  830. string msg = string.Empty;
  831. try
  832. {
  833. string sql = @"delete from icsSORRFQ2VENDOR where id in ('" + keyValue + "')";
  834. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  835. }
  836. catch (Exception ex)
  837. {
  838. msg = ex.Message + " 删除失败!";
  839. }
  840. return msg;
  841. }
  842. /// <summary>
  843. /// 发布询价
  844. /// </summary>
  845. /// <param name="json"></param>
  846. /// <returns></returns>
  847. public string Publish(string json)
  848. {
  849. string msg = string.Empty;
  850. string wheresql = "(";
  851. string[] id = json.Split(',');
  852. for (int i = 0; i < id.Length; i++)
  853. {
  854. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  855. }
  856. wheresql = wheresql.Trim(',') + ")";
  857. //发送邮件通知供应商
  858. string MailOpen = ConfigurationManager.ConnectionStrings["MailOpen"].ConnectionString;
  859. if (MailOpen == "true")
  860. {
  861. string SendHost = ConfigurationManager.ConnectionStrings["SendHost"].ConnectionString;
  862. string StrSendPort = ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString;
  863. int SendPort = 25;
  864. if (!string.IsNullOrEmpty(StrSendPort))
  865. SendPort = Convert.ToInt32(ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString);
  866. string SendDisplayName = ConfigurationManager.ConnectionStrings["SendDisplayName"].ConnectionString;
  867. string SendAddress = ConfigurationManager.ConnectionStrings["SendAddress"].ConnectionString;
  868. string SendPassword = ConfigurationManager.ConnectionStrings["SendPassword"].ConnectionString;
  869. string sqlEmail = @"SELECT F_EMail,VenDorCode,F_RealName,a.RFQCODE FROM icsSORRFQ2VENDOR a
  870. LEFT JOIN sys_SRM_User b ON a.VenDorCode=b.F_VenCode and a.workpoint=b.F_Location
  871. where RFQCODE in " + wheresql + "";
  872. DataTable dt = SqlHelper.GetDataTableBySql(sqlEmail);
  873. foreach (DataRow dr in dt.Rows)
  874. {
  875. string cVenCode = dr["VenDorCode"].ToString();
  876. string TOAddress = dr["F_Email"].ToString();
  877. string[] Partint = TOAddress.Split(';');
  878. if (!string.IsNullOrEmpty(TOAddress))
  879. {
  880. foreach (var p in Partint)
  881. {
  882. string CCAddress = "";
  883. string Subject = "有来自佑伦SRM平台新发布的询价信息";
  884. bool isBodyHtml = false;
  885. string F_RealName = dr["F_RealName"].ToString();
  886. //string StarTime = dr["StarTime"].ToString();
  887. //string EndTime = dr["EndTime"].ToString();
  888. string RFQCODE = dr["RFQCODE"].ToString();
  889. string NowDate = DateTime.Now.GetDateTimeFormats('D')[0].ToString();
  890. string body = F_RealName + ":";
  891. body += " \r\n\r\n\r\n 您有一个询价单号:" + RFQCODE + "待报价 ,请进行登录 SRM进行报价!";
  892. body += "\r\n";
  893. body += " 顺颂商祺!";
  894. body += "\r\n";
  895. body += " 佑伦真空设备科技有限公司";
  896. body += "\r\n";
  897. body += " " + NowDate;
  898. string StrConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  899. if (!string.IsNullOrEmpty(TOAddress))
  900. {
  901. try
  902. {
  903. SendEmail(StrConn, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, p.ToString(), CCAddress, Subject, isBodyHtml, body);
  904. }
  905. catch (Exception ex)
  906. {
  907. throw new Exception("供应商:" + cVenCode + "邮件发送失败! \r\n" + ex.Message);
  908. }
  909. }
  910. else
  911. {
  912. msg = "请先维护供应商:" + F_RealName + "邮箱!";
  913. }
  914. }
  915. }
  916. }
  917. }
  918. string sql = "update icsSORRFQ set STATUS='Publish' where RFQCODE in " + wheresql;
  919. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  920. if (count > 0)
  921. {
  922. msg = "发布成功!";
  923. }
  924. else
  925. {
  926. msg = "发布失败!";
  927. }
  928. return msg;
  929. }
  930. 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)
  931. {
  932. try
  933. {
  934. SmtpClient smtpClient = new SmtpClient
  935. {
  936. //EnableSsl = false,
  937. UseDefaultCredentials = false,
  938. Host = SendHost,
  939. Port = SendPort,
  940. Credentials = new NetworkCredential(SendAddress, SendPassword)
  941. };
  942. MailMessage mailMessage = new MailMessage
  943. {
  944. Subject = Subject,
  945. SubjectEncoding = Encoding.GetEncoding("utf-8"),
  946. BodyEncoding = Encoding.GetEncoding("utf-8"),
  947. From = new MailAddress(SendAddress, SendDisplayName),
  948. IsBodyHtml = IsBodyHtml,
  949. Body = Body
  950. };
  951. string[] array = TOAddress.Split(new char[]
  952. {
  953. ','
  954. });
  955. string[] array2 = array;
  956. for (int i = 0; i < array2.Length; i++)
  957. {
  958. string text = array2[i];
  959. if (!string.IsNullOrEmpty(text))
  960. {
  961. mailMessage.To.Add(text);
  962. }
  963. }
  964. string[] array3 = CCAddress.Split(new char[]
  965. {
  966. ','
  967. });
  968. array2 = array3;
  969. for (int i = 0; i < array2.Length; i++)
  970. {
  971. string text2 = array2[i];
  972. if (!string.IsNullOrEmpty(text2))
  973. {
  974. mailMessage.CC.Add(text2);
  975. }
  976. }
  977. ServicePointManager.ServerCertificateValidationCallback = ((object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) => true);
  978. smtpClient.Send(mailMessage);
  979. // InsertData(ConnectionString, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, TOAddress, CCAddress, Subject, IsBodyHtml, Body, "1", null);
  980. }
  981. catch (Exception ex)
  982. {
  983. //InsertData(ConnectionString, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, TOAddress, CCAddress, Subject, IsBodyHtml, Body, "2", ex.Message);
  984. throw;
  985. }
  986. }
  987. public string Close(string json)
  988. {
  989. string wheresql = "(";
  990. string[] id = json.Split(',');
  991. for (int i = 0; i < id.Length; i++)
  992. {
  993. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  994. }
  995. wheresql = wheresql.Trim(',') + ")";
  996. string sql = "update icsSORRFQ set STATUS='Close' where RFQCODE in " + wheresql;
  997. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  998. if (count > 0)
  999. {
  1000. return "关闭成功!";
  1001. }
  1002. else
  1003. {
  1004. return "关闭失败!";
  1005. }
  1006. }
  1007. public string delete(string json)
  1008. {
  1009. try
  1010. {
  1011. string wheresql = "(";
  1012. string[] id = json.Split(',');
  1013. for (int i = 0; i < id.Length; i++)
  1014. {
  1015. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  1016. }
  1017. wheresql = wheresql.Trim(',') + ")";
  1018. string sql = "delete from icsSORRFQ where RFQCODE in" + wheresql;
  1019. sql += " delete from ICSSORRFQ2VENDOR where RFQCODE in" + wheresql;
  1020. sql += " delete from ICSSORRFQ2NORMALITEM where RFQCODE in" + wheresql;
  1021. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1022. if (count > 0)
  1023. {
  1024. return "删除成功!";
  1025. }
  1026. else
  1027. {
  1028. return "删除失败!";
  1029. }
  1030. }
  1031. catch (Exception ex)
  1032. {
  1033. return ex.Message + " 删除失败!";
  1034. }
  1035. }
  1036. public DataTable GetRfqAndBJ(string rfqno)
  1037. {
  1038. //获取已报价的供应商
  1039. string sql1 = "select VENDORCODE from icsSORQUOTATION where rfqcode='" + rfqno + "' and STATUS='Publish'";
  1040. DataTable table = Repository().FindDataSetBySql(sql1).Tables[0];
  1041. string vendorcode = "";
  1042. string novendorcode = "";
  1043. List<string> hasbj = new List<string>();
  1044. List<string> bjyet = new List<string>();
  1045. List<string> hasbj2 = new List<string>();
  1046. List<string> bjyet2 = new List<string>();
  1047. foreach (DataRow row in table.Rows)
  1048. {
  1049. vendorcode += row["VENDORCODE"].ToString() + ",";
  1050. hasbj.Add(row["VENDORCODE"].ToString());
  1051. bjyet.Add(row["VENDORCODE"].ToString());
  1052. }
  1053. vendorcode = vendorcode.Trim(',');
  1054. 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,'')='') ";
  1055. DataTable table1 = Repository().FindDataSetBySql(sql2).Tables[0];
  1056. foreach (DataRow row1 in table1.Rows)
  1057. {
  1058. //if (hasbj2.Contains(row1["VENDORCODE"].ToString())) {
  1059. // bjyet2.Remove(row1["VENDORCODE"].ToString());
  1060. //}
  1061. novendorcode += row1["VENDORCODE"].ToString() + ",";
  1062. hasbj2.Add(row1["VENDORCODE"].ToString());
  1063. bjyet2.Add(row1["VENDORCODE"].ToString());
  1064. }
  1065. novendorcode = novendorcode.Trim(',');
  1066. //
  1067. string sql = @"select companycode as 公司代码,COSTANALYSISTEMPLATE as 成本分析模板 ,CREATEDATE as 创建日期,CreateTime as 创建时间,CREATEUSER as 创建用户,HASCOSTDETAILS as 成本明细,ISINCLUDETAX as 是否含税,ITEMCLASSID as 物料分类代码,
  1068. 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 ,
  1069. unit as ,B.ID,b.workpoint,'" + vendorcode + @"' as ,'" + novendorcode + @"' AS from icsSORRFQ2NORMALITEM b
  1070. left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
  1071. where RFQCODE='" + rfqno + @"'
  1072. ";
  1073. DataTable table3 = Repository().FindDataSetBySql(sql).Tables[0];
  1074. return table3;
  1075. }
  1076. public DataTable GetRfqSup(string rfqno)
  1077. {
  1078. string sql = @"select icsSORRFQ2VENDOR.COMPANYCODE as 公司代码,icsSORRFQ2VENDOR.CREATEDATE as 创建日期,icsSORRFQ2VENDOR.CREATETIME as 创建时间,icsSORRFQ2VENDOR.CREATEUSER as 创建用户,CURRENCY as 供应商币别,
  1079. ISCLOSED as ,ISQUOTED as ,ISSHOWPRICE as ,locationcode as ,icsSORRFQ2VENDOR.logdate as ,
  1080. icsSORRFQ2VENDOR.logtime as ,icsSORRFQ2VENDOR.LOGUSER as ,paymentcondition as ,PRINCINGVENDORCODE,icsSORRFQ2VENDOR.RFQCODE as ,TAXRATE as ,
  1081. icsSORRFQ2VENDOR.VENDORCODE as ,VenName as ,VENDORTYPE as ,VENPERSON AS ,venhand as ,icsSORRFQ2VENDOR.CauseOff AS ,icsSORRFQ2VENDOR.ID,icsSORRFQ2VENDOR.workpoint,c.QUOTATIONCODE as FROM icsSORRFQ2VENDOR
  1082. left join icsvendor on ICSVendor.vencode=icsSORRFQ2VENDOR.VENDORCODE and ICSVendor.WorkPoint=icsSORRFQ2VENDOR.WorkPoint
  1083. left join icsSORQUOTATION c on c.vendorcode=icsSORRFQ2VENDOR.VENDORCODE and c.rfqcode=icsSORRFQ2VENDOR.RFQCODE and c.WorkPoint=icsSORRFQ2VENDOR.WorkPoint
  1084. where icsSORRFQ2VENDOR.RFQCODE='" + rfqno + @"'
  1085. ";
  1086. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  1087. return table;
  1088. }
  1089. public DataTable GetRfqSup(string rfqno, string invcode, string workpoint, string queryJson, ref Pagination jqgridparam)
  1090. {
  1091. var Jobject = queryJson.ToJObject();
  1092. string sql = @"select icsSORRFQ2VENDOR.COMPANYCODE as 公司代码,icsSORRFQ2VENDOR.CREATEDATE as 创建日期,icsSORRFQ2VENDOR.CREATETIME as 创建时间,icsSORRFQ2VENDOR.CREATEUSER as 创建用户,icsSORRFQ2VENDOR.CURRENCY as 供应商币别,
  1093. ISCLOSED as ,ISQUOTED as ,ISSHOWPRICE as ,locationcode as ,icsSORRFQ2VENDOR.logdate as ,
  1094. icsSORRFQ2VENDOR.logtime as ,icsSORRFQ2VENDOR.LOGUSER as ,paymentcondition as ,PRINCINGVENDORCODE,icsSORRFQ2VENDOR.RFQCODE as ,TAXRATE as ,
  1095. icsSORRFQ2VENDOR.VENDORCODE as ,cVenName as ,VENDORTYPE as ,CVENPERSON AS ,cvenhand as ,isnull(d.VENDORREJECTREASON,'') AS ,icsSORRFQ2VENDOR.workpoint,c.QUOTATIONCODE as ,D.QUOPRICE AS ,
  1096. CASE D.QUOSTATUS
  1097. WHEN 'Pending' THEN ''
  1098. WHEN 'InitApprove' THEN ''
  1099. WHEN 'InitReject' THEN ''
  1100. WHEN 'PricingAppraising' THEN ''
  1101. WHEN 'PricingApprove' THEN ''
  1102. WHEN 'PricingReject' THEN ''
  1103. WHEN 'RFCancel' THEN ''
  1104. WHEN 'VendorCheck' THEN ''
  1105. end as ,
  1106. CASE D.QUOSTATUS
  1107. WHEN 'Pending' THEN ''
  1108. WHEN 'InitApprove' THEN ''
  1109. WHEN 'InitReject' THEN ''
  1110. WHEN 'PricingAppraising' THEN ''
  1111. WHEN 'PricingApprove' THEN ''
  1112. WHEN 'PricingReject' THEN ''
  1113. WHEN 'RFCancel' THEN ''
  1114. WHEN 'VendorCheck' THEN ''
  1115. end as Hidden,
  1116. d.QUOBUYERPRICE AS ,
  1117. COSTDETAILSREFERCODE AS ,
  1118. e.RFQITEMREFERCODE as ,
  1119. d.VENDORMEMO as ,e.ITEMCODE,e.ITEMNAME,d.ADDITION1 as PricingRemark
  1120. FROM icsSORRFQ2VENDOR
  1121. left join icsvendor on ICSVendor.cvencode=icsSORRFQ2VENDOR.VENDORCODE
  1122. left join icsSORQUOTATION c on c.vendorcode=icsSORRFQ2VENDOR.VENDORCODE and c.rfqcode=icsSORRFQ2VENDOR.RFQCODE
  1123. left join icsSORQUODETAILNORMAL d on d.QUOTATIONCODE=c.QUOTATIONCODE
  1124. left join icsSORRFQ2NORMALITEM e on e.RFQCODE=icsSORRFQ2VENDOR.RFQCODE and d.itemcode=e.itemcode
  1125. where icsSORRFQ2VENDOR.RFQCODE='" + rfqno + @"'AND ISNULL(c.QUOTATIONCODE,'')<>'' ";
  1126. List<DbParameter> parameter = new List<DbParameter>();
  1127. if (!string.IsNullOrEmpty(Jobject["InvCode"].ToString()))
  1128. {
  1129. sql += " and icsSORRFQ2VENDOR.VENDORCODE like '%" + Jobject["InvCode"].ToString() + "%' ";
  1130. }
  1131. if (!string.IsNullOrEmpty(Jobject["InvName"].ToString()))
  1132. {
  1133. sql += " and cVenName like '%" + Jobject["InvName"].ToString() + "%' ";
  1134. }
  1135. if (!string.IsNullOrEmpty(Jobject["ItemCode"].ToString()))
  1136. {
  1137. sql += " and e.ITEMCODE like '%" + Jobject["ItemCode"].ToString() + "%' ";
  1138. }
  1139. if (!string.IsNullOrEmpty(Jobject["ItemName"].ToString()))
  1140. {
  1141. sql += " and e.ITEMNAME like '%" + Jobject["ItemName"].ToString() + "%' ";
  1142. }
  1143. if (!string.IsNullOrWhiteSpace(workpoint))
  1144. {
  1145. sql += " and e.WorkPoint=" + workpoint + "";
  1146. }
  1147. //sql += " Order by e.ITEMCODE";
  1148. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1149. }
  1150. public string SaveSCprice(string json)
  1151. {
  1152. try
  1153. {
  1154. var jobject = JArray.Parse(json);
  1155. string result = "";
  1156. for (int i = 0; i < jobject.Count; i++)
  1157. {
  1158. decimal price = Convert.ToDecimal(jobject[i]["协商价格"]);
  1159. string sql = "update icsSORQUODETAILNORMAL set QUOBUYERPRICE=" + price + " where QUOTATIONCODE='" + jobject[i]["最新报价单号"] + "' and ITEMCODE='" + jobject[i]["Invcode"] + "' ";
  1160. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1161. if (count <= 0)
  1162. result = "保存失败";
  1163. else
  1164. result = "保存成功";
  1165. }
  1166. return result;
  1167. }
  1168. catch (Exception ex)
  1169. {
  1170. return ex.Message;
  1171. }
  1172. }
  1173. /// <summary>
  1174. /// 定价通过
  1175. /// </summary>
  1176. /// <param name="json"></param>
  1177. /// <returns></returns>
  1178. ///
  1179. public string AgreeCS(string json)
  1180. {
  1181. string ERPOpen = ConfigurationManager.ConnectionStrings["ERPOpen"].ConnectionString;
  1182. DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
  1183. string msg = "";
  1184. try
  1185. {
  1186. string GGUID = Guid.NewGuid().ToString();
  1187. var jobject = JArray.Parse(json);
  1188. bool IsInput;
  1189. string MessAge = string.Empty;
  1190. for (int i = 0; i < jobject.Count; i++)
  1191. {
  1192. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  1193. ////string[] resultss = (string[])jobject[i]["ZBVendorCode"]//企业信息
  1194. //string[] resultss = (string[])VendorCode;
  1195. //var jobjects = JArray.Parse(jobject[i]["ZBVendorCode"].ToString());
  1196. for (int s = 0; s < resultss.Length; s++)
  1197. {
  1198. string Vendor = resultss[s].ToString();
  1199. string sql = "";
  1200. sql = @"SELECT ITEMCODE,ITEMNAME,UNIT,1 AS bTaxCost,1 AS iSupplyType,'人民币' cExch_Name,a.WorkPoint,'' AS dEnableDate,'' AS dDisableDate
  1201. ,a.QUOTATIONCODE,b.VENDORCODE FROM icsSORQUODETAILNORMAL a
  1202. LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1203. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1204. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1205. DataTable dt = Repository().FindTableBySql(sql.ToString());
  1206. 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
  1207. LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1208. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1209. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1210. DataTable dtD = Repository().FindTableBySql(sql.ToString());
  1211. List<ICSSSSROCS> asnlist = new List<ICSSSSROCS>();
  1212. for (int k = 0; k < dt.Rows.Count; k++)
  1213. {
  1214. if (ERPOpen == "true")
  1215. {
  1216. ICSSSSROCS asn = new ICSSSSROCS();
  1217. asn.ID = GGUID;
  1218. asn.cInvCode = dt.Rows[k]["ITEMCODE"].ToString();
  1219. asn.cVenCode = dt.Rows[k]["VENDORCODE"].ToString();
  1220. asn.cComUnitCode = dt.Rows[k]["UNIT"].ToString();
  1221. //List.CompanyCode = EnCode;
  1222. asn.bTaxCost = Convert.ToInt32(dt.Rows[k]["bTaxCost"].ToString());
  1223. asn.iSupplyType = Convert.ToInt32(dt.Rows[k]["iSupplyType"].ToString());
  1224. asn.cExch_Name = dt.Rows[k]["cExch_Name"].ToString();
  1225. asn.WorkPoint = dt.Rows[k]["WorkPoint"].ToString();
  1226. asn.dEnableDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
  1227. asn.dDisableDate = dDisableDate;
  1228. DataRow[] drs = dtD.Select("QUOTATIONCODE='" + dt.Rows[k]["QUOTATIONCODE"].ToString() + "'");
  1229. for (int j = 0; j < drs.Length; j++)
  1230. {
  1231. CreateVendorInventoryPriceDetailEntity DetailList = new CreateVendorInventoryPriceDetailEntity();
  1232. DetailList.ID = GGUID;
  1233. DetailList.iLowerLimit = float.Parse(drs[j]["iLowerLimit"].ToString());
  1234. DetailList.iUpperLimit = float.Parse(drs[j]["iUpperLimit"].ToString());
  1235. DetailList.iUnitPrice = float.Parse(drs[j]["iUnitPrice"].ToString());
  1236. DetailList.iTaxRate = float.Parse(drs[j]["iTaxRate"].ToString());
  1237. DetailList.iTaxUnitPrice = float.Parse(drs[j]["iTaxUnitPrice"].ToString()); ;
  1238. DetailList.WorkPoint = drs[j]["WorkPoint"].ToString();
  1239. asn.list.Add(DetailList);
  1240. }
  1241. asnlist.Add(asn);
  1242. string input = JsonConvert.SerializeObject(asnlist);
  1243. string APIURL = ConfigurationManager.ConnectionStrings["XBJURL"].ConnectionString + "XBJInv_PriceByYL";
  1244. //string APIURL = "http://172.16.12.157:8100/api/XBJInv_Price";
  1245. //string APIURL = "http://localhost:19944//api/XBJInv_Price";
  1246. string result = HttpPost(APIURL, input);
  1247. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  1248. MessAge = Obj["Success"].ToString();
  1249. string Success = Obj["Message"].ToString();
  1250. if (MessAge.ToUpper() == "FALSE")
  1251. {
  1252. IsInput = false;
  1253. msg = Success;
  1254. }
  1255. else
  1256. {
  1257. IsInput = true;
  1258. sql = @"update a
  1259. set a.QUOSTATUS='PricingApprove'
  1260. from icsSORQUODETAILNORMAL a
  1261. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1262. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1263. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1264. 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"] + "'";
  1265. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1266. if (count <= 0)
  1267. msg = "保存失败" + MessAge;
  1268. else
  1269. msg = "保存成功";
  1270. }
  1271. }
  1272. else
  1273. {
  1274. IsInput = true;
  1275. sql = @"update a
  1276. set a.QUOSTATUS='PricingApprove'
  1277. from icsSORQUODETAILNORMAL a
  1278. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1279. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1280. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1281. 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"] + "'";
  1282. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1283. if (count <= 0)
  1284. msg = "保存失败" + MessAge;
  1285. else
  1286. msg = "保存成功";
  1287. }
  1288. }
  1289. }
  1290. }
  1291. }
  1292. catch (Exception ex)
  1293. {
  1294. return ex.Message;
  1295. }
  1296. return msg;
  1297. }
  1298. //public string AgreeCS(string json)
  1299. //{
  1300. // string ERPOpen = ConfigurationManager.ConnectionStrings["ERPOpen"].ConnectionString;
  1301. // DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
  1302. // string msg = "";
  1303. // try
  1304. // {
  1305. // string GGUID = Guid.NewGuid().ToString();
  1306. // var jobject = JArray.Parse(json);
  1307. // bool IsInput;
  1308. // string MessAge = string.Empty;
  1309. // int ivouchrowno = 1;
  1310. // for (int i = 0; i < jobject.Count; i++)
  1311. // {
  1312. // var resultss = jobject[i]["ZBVendorCode"].ToArray();
  1313. // string Vendors = resultss[0].ToString();
  1314. // ////string[] resultss = (string[])jobject[i]["ZBVendorCode"]//企业信息
  1315. // //string[] resultss = (string[])VendorCode;
  1316. // //var jobjects = JArray.Parse(jobject[i]["ZBVendorCode"].ToString());
  1317. // string sql = "";
  1318. // //sql = @"SELECT ITEMCODE,ITEMNAME,UNIT,,a.WorkPoint,'' AS dEnableDate,'' AS dDisableDate
  1319. // // ,a.QUOTATIONCODE,b.VENDORCODE FROM icsSORQUODETAILNORMAL a
  1320. // // LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1321. // // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1322. // // where b.RFQCODE='" + jobject[i]["rfqno"] + "' ";
  1323. // //DataTable dt = Repository().FindTableBySql(sql.ToString());
  1324. // 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,
  1325. // 1 AS bTaxCost,1 AS iSupplyType
  1326. // FROM icsSORQUODETAILNORMAL a
  1327. // LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1328. // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1329. // where b.RFQCODE='" + jobject[i]["rfqno"] + "' and c.VenName='" + Vendors + "'";
  1330. // DataTable dtD = Repository().FindTableBySql(sql.ToString());
  1331. // List<CreatePUPriceJustByYLEntity> asnlist = new List<CreatePUPriceJustByYLEntity>();
  1332. // log.Info("查询sql" + sql);
  1333. // if (ERPOpen == "true")
  1334. // {
  1335. // CreatePUPriceJustByYLEntity asn = new CreatePUPriceJustByYLEntity();
  1336. // asn.cmaker = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1337. // asn.cpersoncode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1338. // asn.cmainmemo = "";
  1339. // asn.cdepcode = "";
  1340. // //List.CompanyCode = EnCode;
  1341. // asn.bTaxCost = Convert.ToInt32(dtD.Rows[0]["bTaxCost"].ToString());
  1342. // asn.iSupplyType = Convert.ToInt32(dtD.Rows[0]["iSupplyType"].ToString());
  1343. // asn.WorkPoint = dtD.Rows[0]["WorkPoint"].ToString();
  1344. // for (int k = 0; k < dtD.Rows.Count; k++)
  1345. // {
  1346. // CreatePUPriceJustByYDetailsEntity DetailList = new CreatePUPriceJustByYDetailsEntity();
  1347. // DetailList.cvencode = dtD.Rows[k]["VENDORCODE"].ToString();
  1348. // DetailList.cinvcode = dtD.Rows[k]["ITEMCODE"].ToString();
  1349. // DetailList.dstartdate = DateTime.Now.ToString("yyyy-MM-dd");
  1350. // DetailList.fminquantity = float.Parse(dtD.Rows[k]["iLowerLimit"].ToString());
  1351. // DetailList.iUnitPrice = float.Parse(dtD.Rows[k]["iUnitPrice"].ToString());
  1352. // DetailList.iTaxRate = float.Parse(dtD.Rows[k]["iTaxRate"].ToString());
  1353. // DetailList.iTaxUnitPrice = float.Parse(dtD.Rows[k]["iTaxUnitPrice"].ToString()); ;
  1354. // DetailList.cexch_name = dtD.Rows[k]["cexch_name"].ToString();
  1355. // DetailList.ivouchrowno = ivouchrowno;
  1356. // ivouchrowno++;
  1357. // asn.list.Add(DetailList);
  1358. // }
  1359. // asnlist.Add(asn);
  1360. // string input = JsonConvert.SerializeObject(asnlist);
  1361. // log.Info("传入参数" + input);
  1362. // string APIURL = ConfigurationManager.ConnectionStrings["XBJURL"].ConnectionString + "PU_PriceJust";
  1363. // //string APIURL = "http://172.16.12.157:8100/api/PU_PriceJust";
  1364. // //string APIURL = "http://localhost:19944//api/PU_PriceJust";
  1365. // string result = HttpPost(APIURL, input);
  1366. // JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  1367. // log.Info("输出参数" + Obj);
  1368. // MessAge = Obj["Success"].ToString();
  1369. // string Success = Obj["Message"].ToString();
  1370. // if (MessAge.ToUpper() == "FALSE")
  1371. // {
  1372. // IsInput = false;
  1373. // msg = Success;
  1374. // }
  1375. // else
  1376. // {
  1377. // for (int s = 0; s < resultss.Length; s++)
  1378. // {
  1379. // string Vendor = resultss[s].ToString();
  1380. // IsInput = true;
  1381. // sql = @"update a
  1382. // set a.QUOSTATUS='PricingApprove'
  1383. // from icsSORQUODETAILNORMAL a
  1384. //left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1385. // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1386. // where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1387. // 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"] + "'";
  1388. // int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1389. // if (count <= 0)
  1390. // msg = "保存失败" + MessAge;
  1391. // else
  1392. // msg = "保存成功";
  1393. // }
  1394. // }
  1395. // }
  1396. // else
  1397. // {
  1398. // for (int s = 0; s < resultss.Length; s++)
  1399. // {
  1400. // string Vendor = resultss[s].ToString();
  1401. // IsInput = true;
  1402. // sql = @"update a
  1403. // set a.QUOSTATUS='PricingApprove'
  1404. // from icsSORQUODETAILNORMAL a
  1405. //left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1406. // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1407. // where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1408. // 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"] + "'";
  1409. // int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1410. // if (count <= 0)
  1411. // msg = "保存失败" + MessAge;
  1412. // else
  1413. // msg = "保存成功";
  1414. // }
  1415. // }
  1416. // }
  1417. // }
  1418. // catch (Exception ex)
  1419. // {
  1420. // log.Error(ex.Message);
  1421. // return ex.Message;
  1422. // }
  1423. // return msg;
  1424. //}
  1425. /// <summary>
  1426. /// 上传到OA
  1427. /// </summary>
  1428. /// <param name="json"></param>
  1429. /// <returns></returns>
  1430. public string AgreeByOA(string json)
  1431. {
  1432. var jobject = JArray.Parse(json);
  1433. string sql = "";
  1434. string sqls = "";
  1435. string msg = "";
  1436. try
  1437. {
  1438. #region 推送OA
  1439. string UserCodeOA = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1440. string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1441. sql = "select id from OA.dbo.org_member where code='" + UserCodeOA + "'";
  1442. log.Info("追加异常" + sql);
  1443. DataTable dtUserCodeOA = SqlHelper.GetDataTableBySql(sql);
  1444. if (dtUserCodeOA.Rows.Count <= 0)
  1445. {
  1446. log.Info(dtUserCodeOA.Rows.Count);
  1447. throw new Exception("发起账号OA系统中不存在!!");
  1448. }
  1449. DataTable dt = new DataTable();
  1450. var userInfo = new Dictionary<string, string>
  1451. {
  1452. {"userName", "ylzk-rest"},
  1453. {"password", "054d197d-73c2-4761-be58-a46efe6cd03f"},
  1454. {"loginName", UserCodeOA}
  1455. };
  1456. //var userInfo = new Dictionary<string, string>
  1457. // {
  1458. // {"userName", "ylzk-rest"},
  1459. // {"password", "054d197d-73c2-4761-be58-a46efe6cd03f"},
  1460. // {"loginName", "ylzk-rest"}
  1461. // };
  1462. // 序列化Dictionary为JSON字符串
  1463. string jsonString = JsonConvert.SerializeObject(userInfo, Formatting.Indented);
  1464. log.Info("获取Tocken传入参数:" + jsonString);
  1465. var reqInterNme = "https://oa.ylzk.com.cn:6443/seeyon/rest/token";
  1466. string responseStr = CertifiCationApp.HttpPost(reqInterNme, jsonString);
  1467. //var responseStr = httpGet(reqInterNme);
  1468. try
  1469. {
  1470. //JObject res = (JObject)JsonConvert.DeserializeObject(dtsql.Rows[0]["searchKey"].ToString());
  1471. JObject res = (JObject)JsonConvert.DeserializeObject(responseStr);
  1472. log.Info("输出Tocken参数:" + res);
  1473. string ID = res["id"].ToString();//获取Tockn
  1474. JObject resultbidUser = (JObject)JsonConvert.DeserializeObject(res["bindingUser"].ToString());
  1475. string id = resultbidUser["id"].ToString(); //用户ID
  1476. string departmentId = resultbidUser["departmentId"].ToString(); //部门ID
  1477. string postId = resultbidUser["postId"].ToString(); //岗位ID
  1478. //string Message = res["Message"].ToString();
  1479. if (!string.IsNullOrWhiteSpace(ID))
  1480. {
  1481. NFine.Domain._03_Entity.SRM.ICSSORRFQOA.datadetail dat = new NFine.Domain._03_Entity.SRM.ICSSORRFQOA.datadetail();
  1482. NFine.Domain._03_Entity.SRM.ICSSORRFQOA.datass dds = new NFine.Domain._03_Entity.SRM.ICSSORRFQOA.datass();
  1483. //string sqlFile = "SELECT Attachment1,Attachment2 FROM ICSPREVENDORProductionInspection Where TEMPVENDORCODE='" + TEMPVENDORCODE + "'and WorkPoint='" + WorkPoint + "'";
  1484. //DataTable dts = SqlHelper.GetDataTableBySql(sqlFile);
  1485. //string fileName = "" + dts.Rows[0]["Attachment1"].ToString() + ";" + dts.Rows[0]["Attachment2"].ToString();
  1486. //string[] PrintParas = fileName.Split(';');
  1487. int sort = 1;
  1488. string fileUrl = "";
  1489. ICSSORRFQOA da = new ICSSORRFQOA();
  1490. da.appName = "collaboration";
  1491. dat.templateCode = "gysbj";
  1492. dat.draft = "0";
  1493. dat.relateDoc = "";//(OA 公文附件 ID,默认为空,不使用)
  1494. dat.subject = "";//(OA 流程标题,默认为空,OA 端自动生成标题)
  1495. Domain._03_Entity.SRM.ICSSORRFQOA.formmain_0136 dm0021 = new Domain._03_Entity.SRM.ICSSORRFQOA.formmain_0136();
  1496. dm0021.field0001 = UserName;
  1497. dm0021.field0002 = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
  1498. dm0021.field0011 = jobject[0]["rfqno"].ToString();//询价单号
  1499. dds.formmain_0136 = dm0021;
  1500. dat.data = dds;
  1501. // sql = @"SELECT ROW_NUMBER() Over ( order by c.ITEMCODE desc ) As rowNum,c.ITEMCODE,c.ITEMNAME,f.InvStd,f.InvUnit
  1502. //,c.REQUESTQUANTITY,e.Remark,c.Material,c.PROCESS,c.SurfaceTreatment,c.Other,c.QUOPRICE
  1503. //,c.ADDITION1,d.VenName cVenName,b.VENDORCODE,ROUND(ROUND( QUOPRICE,2)/(1+(b.VENDORMEMO/CAST(100 AS float))),2) AS iUnitPrice,f.InvName
  1504. // FROM icsSORQUODETAILNORMAL c
  1505. // LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  1506. // LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  1507. // LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  1508. //left join ICSInventory f on c.ITEMCODE=f.InvCode and c.WorkPoint=f.WorkPoint
  1509. // WHERE b.RFQCODE='" + jobject[0]["rfqno"] + "'and d.VenName='" + Vendors + "'";
  1510. sql = @"SELECT ROW_NUMBER() Over ( order by c.ITEMCODE desc ) As rowNum,c.ITEMCODE,c.ITEMNAME,f.InvStd,f.InvUnit
  1511. ,c.REQUESTQUANTITY,e.Remark,c.Material,c.PROCESS,c.SurfaceTreatment,c.Other,c.QUOPRICE
  1512. ,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
  1513. ,h.SCQUOPRICE as field0026
  1514. FROM icsSORQUODETAILNORMAL c
  1515. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  1516. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  1517. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  1518. left join ICSInventory f on c.ITEMCODE=f.InvCode and c.WorkPoint=f.WorkPoint
  1519. LEFT JOIN ( SELECT a.ITEMCODE,
  1520. STUFF((
  1521. SELECT DISTINCT ', ' + d2.VenName
  1522. FROM icsSORQUODETAILNORMAL a2
  1523. LEFT JOIN icsSORQUOTATION b2 ON a2.QUOTATIONCODE = b2.QUOTATIONCODE AND b2.WorkPoint = a2.WorkPoint
  1524. LEFT JOIN dbo.ICSVendor d2 ON b2.VENDORCODE = d2.VenCode AND b2.WorkPoint = d2.WorkPoint
  1525. WHERE a2.ITEMCODE = a.ITEMCODE AND a2.QUOSTATUS = 'PricingApproveByOA'
  1526. and a2.RFQCODE='" + jobject[0]["rfqno"] + @"'
  1527. FOR XML PATH(''), TYPE
  1528. ).value('.', 'NVARCHAR(MAX)'), 1, 2, '') AS VenName,
  1529. a.RFQCODE
  1530. FROM icsSORQUODETAILNORMAL a
  1531. WHERE a.QUOSTATUS = 'PricingApproveByOA'
  1532. GROUP BY a.ITEMCODE, a.RFQCODE)g ON c.RFQCODE=g.RFQCODE AND c.ITEMCODE=g.ITEMCODE
  1533. LEFT JOIN (SELECT
  1534. *
  1535. FROM (
  1536. SELECT
  1537. DISTINCT
  1538. ROW_NUMBER() OVER(PARTITION BY b.VENDORCODE,c.ITEMCODE ORDER BY a.CreateTime ASC) AS num,
  1539. d.VenName AS SupplierCode,
  1540. a.Price as SCQUOPRICE,
  1541. a.CreateTime as LOGDATE,
  1542. b.RFQCODE,
  1543. c.ITEMCODE
  1544. FROM
  1545. icsSORQUOTATION b
  1546. LEFT JOIN icsSORRFQ2VENDOR e ON b.RFQCODE=e.RFQCODE AND b.WorkPoint=e.WorkPoint AND b.VENDORCODE=e.VENDORCODE
  1547. LEFT JOIN icsSORQUODETAILNORMAL c ON c.RFQCODE=e.RFQCODE AND e.WorkPoint=c.WorkPoint AND c.QUOTATIONCODE=b.QUOTATIONCODE
  1548. LEFT JOIN dbo.ICSQuoteHistory a ON a.QuotationID=c.ID AND a.WorkPoint=c.WorkPoint
  1549. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  1550. WHERE
  1551. c.RFQCODE='" + jobject[0]["rfqno"] + @"'
  1552. ) AS subquery
  1553. ) h ON g.RFQCODE=h.RFQCODE AND d.VenName=h.SupplierCode and g.ITEMCODE=h.ITEMCODE and h.num='1'
  1554. WHERE c.RFQCODE='" + jobject[0]["rfqno"] + "'";
  1555. DataTable dtD = Repository().FindTableBySql(sql.ToString());
  1556. for (int k = 0; k < dtD.Rows.Count; k++)
  1557. {
  1558. List<NFine.Domain._03_Entity.SRM.ICSSORRFQOA.formson_0137> formson_0137 = new List<NFine.Domain._03_Entity.SRM.ICSSORRFQOA.formson_0137>();
  1559. Domain._03_Entity.SRM.ICSSORRFQOA.formson_0137 dm0022 = new Domain._03_Entity.SRM.ICSSORRFQOA.formson_0137();
  1560. dm0022.field0003 = dtD.Rows[k]["cVenName"].ToString();
  1561. dm0022.field0004 = dtD.Rows[k]["VENDORCODE"].ToString();
  1562. dm0022.field0005 = dtD.Rows[k]["InvName"].ToString();
  1563. dm0022.field0006 = dtD.Rows[k]["InvStd"].ToString();
  1564. dm0022.field0007 = Convert.ToDecimal(dtD.Rows[k]["QUOPRICE"].ToString());
  1565. dm0022.field0008 = Convert.ToDecimal(dtD.Rows[k]["iUnitPrice"].ToString());
  1566. dm0022.field0009 = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
  1567. dm0022.field0012 = Convert.ToDecimal(dtD.Rows[k]["rowNum"].ToString());
  1568. dm0022.field0013 = dtD.Rows[k]["ITEMCODE"].ToString();
  1569. dm0022.field0014 = dtD.Rows[k]["InvUnit"].ToString();
  1570. dm0022.field0015 = Convert.ToDecimal(dtD.Rows[k]["REQUESTQUANTITY"].ToString());
  1571. dm0022.field0016 = Convert.ToDecimal(dtD.Rows[k]["Material"].ToString());
  1572. dm0022.field0017 = Convert.ToDecimal(dtD.Rows[k]["PROCESS"].ToString());
  1573. dm0022.field0018 = Convert.ToDecimal(dtD.Rows[k]["SurfaceTreatment"].ToString());
  1574. dm0022.field0019 = Convert.ToDecimal(dtD.Rows[k]["Other"].ToString());
  1575. dm0022.field0020 = Convert.ToDecimal(dtD.Rows[k]["QUOPRICE"].ToString());
  1576. dm0022.field0021 = Convert.ToDecimal(dtD.Rows[k]["field0021"].ToString());
  1577. dm0022.field0022 = dtD.Rows[k]["ADDITION1"].ToString();
  1578. dm0022.field0024 = dtD.Rows[k]["djvencode"].ToString();
  1579. dm0022.field0026 = (dtD.Rows[k]["field0026"].ToString() == "" ? 0 : Convert.ToDecimal(dtD.Rows[k]["field0026"].ToString()));
  1580. dds.formson_0137.Add(dm0022);
  1581. }
  1582. da.data = dat;
  1583. string input = JsonConvert.SerializeObject(da);
  1584. log.Info("传入参数" + input);
  1585. //}
  1586. string APIURLBid = "https://oa.ylzk.com.cn:6443/seeyon/rest/bpm/process/start?token=" + ID;
  1587. string resultBid = CertifiCationApp.HttpPost(APIURLBid, input);
  1588. JObject resBId = (JObject)JsonConvert.DeserializeObject(resultBid);
  1589. log.Info("输出参数" + resBId);
  1590. string Code = resBId["code"].ToString();//获取Tockn
  1591. if (Code == "0")
  1592. {
  1593. // 获取 app_bussiness_data 字段的值
  1594. string appBussinessDataJson = resBId["data"]["app_bussiness_data"].ToString();
  1595. // 解析 app_bussiness_data 的 JSON 数据
  1596. JObject appBussinessDataObject = JObject.Parse(appBussinessDataJson);
  1597. // 提取 affairId 和 summaryId 的值
  1598. string affairId = appBussinessDataObject["affairId"].ToString();
  1599. string summaryId = appBussinessDataObject["summaryId"].ToString();
  1600. for (int i = 0; i < jobject.Count; i++)
  1601. {
  1602. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  1603. for (int s = 0; s < resultss.Length; s++)
  1604. {
  1605. string Vendors = resultss[s].ToString();
  1606. //string Vendors = resultss[0].ToString();
  1607. sql += @"update a
  1608. set a.QUOSTATUS='PricingApproveByOA'
  1609. from icsSORQUODETAILNORMAL a
  1610. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1611. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1612. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendors + "'";
  1613. 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"] + "'";
  1614. }
  1615. }
  1616. log.Info("修改状态sql:" + sql);
  1617. SqlHelper.CmdExecuteNonQueryLi(sql);
  1618. }
  1619. else
  1620. {
  1621. for (int i = 0; i < jobject.Count; i++)
  1622. {
  1623. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  1624. for (int s = 0; s < resultss.Length; s++)
  1625. {
  1626. string Vendors = resultss[s].ToString();
  1627. //string Vendors = resultss[0].ToString();
  1628. sqls += @"update a
  1629. set a.QUOSTATUS='Publish'
  1630. from icsSORQUODETAILNORMAL a
  1631. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1632. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1633. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendors + "'";
  1634. 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"] + "'";
  1635. }
  1636. }
  1637. SqlHelper.CmdExecuteNonQueryLi(sqls);
  1638. msg = "OA上传OA失败!";
  1639. }
  1640. }
  1641. }
  1642. catch (Exception ex)
  1643. {
  1644. for (int i = 0; i < jobject.Count; i++)
  1645. {
  1646. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  1647. for (int s = 0; s < resultss.Length; s++)
  1648. {
  1649. string Vendors = resultss[s].ToString();
  1650. //string Vendors = resultss[0].ToString();
  1651. sqls += @"update a
  1652. set a.QUOSTATUS='Publish'
  1653. from icsSORQUODETAILNORMAL a
  1654. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1655. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1656. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendors + "'";
  1657. 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"] + "'";
  1658. }
  1659. }
  1660. SqlHelper.CmdExecuteNonQueryLi(sqls);
  1661. log.Error(ex.Message);
  1662. msg = ex.Message;
  1663. }
  1664. #endregion
  1665. }
  1666. catch (Exception ex)
  1667. {
  1668. msg = "报错失败!" + ex.Message;
  1669. }
  1670. return msg;
  1671. }
  1672. /// <summary>
  1673. /// 上传到OA
  1674. /// </summary>
  1675. /// <param name="json"></param>
  1676. /// <returns></returns>
  1677. public string CleanAgreeByOA(string json)
  1678. {
  1679. var jobject = JArray.Parse(json);
  1680. string sql = "";
  1681. string sqls = "";
  1682. string msg = "";
  1683. try
  1684. {
  1685. #region 推送OA
  1686. string UserCodeOA = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1687. string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1688. sql = "select id from OA.dbo.org_member where code='" + UserCodeOA + "'";
  1689. log.Info("追加异常" + sql);
  1690. DataTable dtUserCodeOA = SqlHelper.GetDataTableBySql(sql);
  1691. if (dtUserCodeOA.Rows.Count <= 0)
  1692. {
  1693. log.Info(dtUserCodeOA.Rows.Count);
  1694. throw new Exception("发起账号OA系统中不存在!!");
  1695. }
  1696. DataTable dt = new DataTable();
  1697. var userInfo = new Dictionary<string, string>
  1698. {
  1699. {"userName", "ylzk-rest"},
  1700. {"password", "054d197d-73c2-4761-be58-a46efe6cd03f"},
  1701. {"loginName", UserCodeOA}
  1702. };
  1703. //var userInfo = new Dictionary<string, string>
  1704. // {
  1705. // {"userName", "ylzk-rest"},
  1706. // {"password", "054d197d-73c2-4761-be58-a46efe6cd03f"},
  1707. // {"loginName", "ylzk-rest"}
  1708. // };
  1709. // 序列化Dictionary为JSON字符串
  1710. string jsonString = JsonConvert.SerializeObject(userInfo, Formatting.Indented);
  1711. log.Info("获取Tocken传入参数:" + jsonString);
  1712. var reqInterNme = "https://oa.ylzk.com.cn:6443/seeyon/rest/token";
  1713. string responseStr = CertifiCationApp.HttpPost(reqInterNme, jsonString);
  1714. //var responseStr = httpGet(reqInterNme);
  1715. try
  1716. {
  1717. //JObject res = (JObject)JsonConvert.DeserializeObject(dtsql.Rows[0]["searchKey"].ToString());
  1718. JObject res = (JObject)JsonConvert.DeserializeObject(responseStr);
  1719. log.Info("输出Tocken参数:" + res);
  1720. string ID = res["id"].ToString();//获取Tockn
  1721. JObject resultbidUser = (JObject)JsonConvert.DeserializeObject(res["bindingUser"].ToString());
  1722. string id = resultbidUser["id"].ToString(); //用户ID
  1723. string departmentId = resultbidUser["departmentId"].ToString(); //部门ID
  1724. string postId = resultbidUser["postId"].ToString(); //岗位ID
  1725. //string Message = res["Message"].ToString();
  1726. if (!string.IsNullOrWhiteSpace(ID))
  1727. {
  1728. var cancelInfo = new Dictionary<string, string>
  1729. {
  1730. {"affairId", jobject[0]["ADDITION1"].ToString()},
  1731. {"summaryId",jobject[0]["ADDITION2"].ToString()},
  1732. {"loginName", UserCodeOA}
  1733. };
  1734. // 序列化Dictionary为JSON字符串
  1735. string canceljsonString = JsonConvert.SerializeObject(cancelInfo, Formatting.Indented);
  1736. log.Info("传入参数" + canceljsonString);
  1737. //}
  1738. string APIURLBid = "https://oa.ylzk.com.cn:6443/seeyon/rest/affair/cancel?token=" + ID;
  1739. string resultBid = CertifiCationApp.HttpPost(APIURLBid, canceljsonString);
  1740. log.Info("输出参数" + resultBid);
  1741. if (resultBid == "true")
  1742. {
  1743. for (int i = 0; i < jobject.Count; i++)
  1744. {
  1745. sqls += @"update a
  1746. set a.QUOSTATUS='Publish'
  1747. from icsSORQUODETAILNORMAL a
  1748. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1749. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1750. where b.RFQCODE='" + jobject[i]["RFQCODE"] + "'";
  1751. sqls += " UPDATE icsSORRFQ SET STATUS='Publish' where RFQCODE='" + jobject[i]["RFQCODE"] + "'";
  1752. }
  1753. SqlHelper.CmdExecuteNonQueryLi(sqls);
  1754. }
  1755. }
  1756. }
  1757. catch (Exception ex)
  1758. {
  1759. for (int i = 0; i < jobject.Count; i++)
  1760. {
  1761. sqls += @"update a
  1762. set a.QUOSTATUS='Publish'
  1763. from icsSORQUODETAILNORMAL a
  1764. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1765. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1766. where b.RFQCODE='" + jobject[i]["RFQCODE"] + "'";
  1767. sqls += " UPDATE icsSORRFQ SET STATUS='Publish' where RFQCODE='" + jobject[i]["RFQCODE"] + "'";
  1768. }
  1769. SqlHelper.CmdExecuteNonQueryLi(sqls);
  1770. log.Error(ex.Message);
  1771. msg = ex.Message;
  1772. }
  1773. #endregion
  1774. }
  1775. catch (Exception ex)
  1776. {
  1777. msg = "报错失败!" + ex.Message;
  1778. }
  1779. return msg;
  1780. }
  1781. public static string HttpPost(string url, string body)
  1782. {
  1783. try
  1784. {
  1785. Encoding encoding = Encoding.UTF8;
  1786. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  1787. request.Method = "POST";
  1788. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  1789. request.ContentType = "application/json; charset=utf-8";
  1790. byte[] buffer = encoding.GetBytes(body);
  1791. request.ContentLength = buffer.Length;
  1792. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  1793. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  1794. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  1795. {
  1796. return reader.ReadToEnd();
  1797. }
  1798. }
  1799. catch (WebException ex)
  1800. {
  1801. throw new Exception(ex.Message);
  1802. }
  1803. }
  1804. public string RejectCS(string json)
  1805. {
  1806. try
  1807. {
  1808. var jobject = JArray.Parse(json);
  1809. string result = "";
  1810. for (int i = 0; i < jobject.Count; i++)
  1811. {
  1812. string sql = "update icsSORQUODETAILNORMAL set QUOSTATUS='PricingReject' where QUOTATIONCODE='" + jobject[i]["最新报价单号"] + "' and ITEMCODE='" + jobject[i]["Invcode"] + "'";
  1813. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1814. if (count <= 0)
  1815. result = "保存失败";
  1816. else
  1817. result = "保存成功";
  1818. }
  1819. return result;
  1820. }
  1821. catch (Exception ex)
  1822. {
  1823. return ex.Message;
  1824. }
  1825. }
  1826. public String CreateBJ(string json)
  1827. {
  1828. try
  1829. {
  1830. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1831. WorkPoint = WorkPoint.Replace("'", "");
  1832. var jobject = JArray.Parse(json);
  1833. string Code = GetSercodeBJ(WorkPoint);
  1834. string result = "";
  1835. for (int i = 0; i < jobject.Count; i++)
  1836. {
  1837. string sql = "update icsSORQUODETAILNORMAL set COMPARECODE='" + Code + "',QUOSTATUS='PricingAppraising' where QUOTATIONCODE='" + jobject[i]["最新报价单号"] + "' and ITEMCODE='" + jobject[i]["Invcode"] + "'";
  1838. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1839. if (count <= 0)
  1840. result = "保存失败";
  1841. else
  1842. result = "保存成功";
  1843. }
  1844. return result;
  1845. }
  1846. catch (Exception ex)
  1847. {
  1848. return ex.Message;
  1849. }
  1850. }
  1851. public string GetSercodeBJ(string workpoint)
  1852. {
  1853. string datetime = DateTime.Now.ToString("yyyyMMdd");
  1854. SqlParameter[] para = { new SqlParameter("@WorkPoint", workpoint), new SqlParameter("@TbName", "ICSSORQUODETAILNORMAL"), new SqlParameter("@CodeCol", "COMPARECODE"), new SqlParameter("@Pre", "CPE" + datetime), new SqlParameter("@NumLen", 3) };
  1855. DataTable table = Repository().FindTableByProc("Addins_GetSerialCode", para);
  1856. return table.Rows[0][0].ToString();
  1857. }
  1858. public DataTable GetInvType()
  1859. {
  1860. string sql = "select F_ItemName from Sys_SRM_Itemsdetail where F_ItemId='488c96cb-49a5-4ea5-9d12-5a21b4db1d82'";
  1861. DataTable table = Repository().FindTableBySql(sql);
  1862. return table;
  1863. }
  1864. public DataTable GetCurrencty()
  1865. {
  1866. string sql = "SELECT * from Sys_SRM_ItemsDetail where F_ItemId in (select F_Id from Sys_SRM_Items where F_enCode='base_currency')";
  1867. DataTable table = Repository().FindTableBySql(sql);
  1868. return table;
  1869. }
  1870. public int CloseRFQPrice(string VenCode, string RFQNO, string ReturnRemark)
  1871. {
  1872. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1873. string sql = string.Empty;
  1874. sql = @"UPDATE ICSSORRFQ2VENDOR SET ISCLOSED = '是',CauseOff='{0}' WHERE RFQCODE ='{1}' and VENDORCODE='{2}'";
  1875. sql = string.Format(sql, ReturnRemark, RFQNO, VenCode);
  1876. return SqlHelper.ExecuteNonQuery(sql);
  1877. }
  1878. /// <summary>
  1879. /// 获取动态列
  1880. /// </summary>
  1881. /// <param name="rfqcode"></param>
  1882. /// <param name="workpoint"></param>
  1883. /// <returns></returns>
  1884. public DataTable SelectSORRFQColumnName(string rfqcode, string workpoint)
  1885. {
  1886. string sql = @"declare @sql varchar(8000)
  1887. SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,Remark
  1888. into #Temp
  1889. FROM icsSORQUODETAILNORMAL c
  1890. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  1891. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  1892. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  1893. WHERE c.RFQCODE='{0}' and c.WorkPoint='{1}'
  1894. select distinct cVenName as ColCaption,cVenName as ColFiledName from #Temp
  1895. drop table #Temp";
  1896. sql = string.Format(sql, rfqcode, workpoint);
  1897. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1898. return dt;
  1899. }
  1900. /// <summary>
  1901. /// 查询
  1902. /// </summary>
  1903. /// <param name="rfqcode"></param>
  1904. /// <param name="workpoint"></param>
  1905. /// <param name="jqgridparam"></param>
  1906. /// <returns></returns>
  1907. public DataTable GetListSORRFQGridJsonTOZSUM(string rfqcode, string workpoint, ref Pagination jqgridparam)
  1908. {
  1909. string msg = string.Empty;
  1910. DataTable dt = new DataTable();
  1911. //var queryParam = queryJson.ToJObject();
  1912. List<DbParameter> parameter = new List<DbParameter>();
  1913. string sql = @" declare @sql varchar(8000)
  1914. SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.cVenName,c.REQUESTQUANTITY
  1915. into #TempSORRFQ
  1916. FROM icsSORQUODETAILNORMAL c
  1917. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  1918. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.cVenCode AND b.WorkPoint=d.WorkPoint
  1919. WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
  1920. select @sql=isnull(@sql+',','')+' ['+cVenName+']'
  1921. from(select distinct cVenName from #TempSORRFQ)as a
  1922. set @sql='SELECT STUFF((select'','' + cVenName from (SELECT DISTINCT cVenName FROM #TempSORRFQ ) DD for xml path('''')),1,1,'''') as IsTou,*
  1923. FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
  1924. exec(@sql)";
  1925. sql = string.Format(sql, rfqcode, workpoint);
  1926. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTempSORRFQ(sql.ToString(), " " + "#TempSORRFQ" + " ", " drop table #TempSORRFQ", parameter.ToArray(), ref jqgridparam);
  1927. return dtr;
  1928. }
  1929. public DataTable GetSubGridJsonCourseInfoSORRFQ(string rfqcode, string workpoint, string ITEMCODE, ref Pagination jqgridparam)
  1930. {
  1931. string sql = @" SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,c.WorkPoint,b.VENDORCODE,c.ADDITION1
  1932. ,Material,PROCESS,SurfaceTreatment,Other,c.AccountPeriod
  1933. FROM icsSORQUODETAILNORMAL c
  1934. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  1935. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  1936. WHERE c.RFQCODE='{0}' AND c.ITEMCODE='{1}'AND c.WorkPoint='{2}' ";
  1937. sql = string.Format(sql, rfqcode, ITEMCODE, workpoint);
  1938. return Repository().FindTablePageBySql(sql.ToString(), ref jqgridparam);
  1939. }
  1940. public DataTable SORRFQHistoryInfo(string rfqcode, string workpoint, string ITEMCODE, string VENDORCODE, ref Pagination jqgridparam)
  1941. {
  1942. DataTable dt = new DataTable();
  1943. List<DbParameter> parameter = new List<DbParameter>();
  1944. 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
  1945. LEFT JOIN icsSORRFQ2VENDOR e ON b.RFQCODE=e.RFQCODE AND b.WorkPoint=e.WorkPoint AND b.VENDORCODE=e.VENDORCODE
  1946. LEFT JOIN icsSORQUODETAILNORMAL c ON c.RFQCODE=e.RFQCODE AND e.WorkPoint=c.WorkPoint AND c.QUOTATIONCODE=b.QUOTATIONCODE
  1947. LEFT JOIN dbo.ICSQuoteHistory a ON a.QuotationID=c.ID AND a.WorkPoint=c.WorkPoint
  1948. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  1949. WHERE c.RFQCODE='{0}' AND c.workpoint='{1}'
  1950. AND c.ITEMCODE = '{2}'and b.VENDORCODE='{3}'";
  1951. sql = string.Format(sql, rfqcode, workpoint, ITEMCODE, VENDORCODE);
  1952. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1953. }
  1954. public DataTable SORRFQCourseHistoryInfoCahrs(string rfqcode, string workpoint, string ITEMCODE)
  1955. {
  1956. string sql = @" SELECT
  1957. DISTINCT
  1958. 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
  1959. FROM icsSORQUOTATION b
  1960. LEFT JOIN icsSORRFQ2VENDOR e ON b.RFQCODE=e.RFQCODE AND b.WorkPoint=e.WorkPoint AND b.VENDORCODE=e.VENDORCODE
  1961. LEFT JOIN icsSORQUODETAILNORMAL c ON c.RFQCODE=e.RFQCODE AND e.WorkPoint=c.WorkPoint AND c.QUOTATIONCODE=b.QUOTATIONCODE
  1962. LEFT JOIN dbo.ICSQuoteHistory a ON a.QuotationID=c.ID AND a.WorkPoint=c.WorkPoint
  1963. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  1964. WHERE c.RFQCODE='{0}' AND c.workpoint='{1}' AND c.ITEMCODE ='{2}' ORDER BY a.CreateTime ASC ";
  1965. sql = string.Format(sql, rfqcode, workpoint, ITEMCODE);
  1966. return Repository().FindTableBySql(sql.ToString());
  1967. }
  1968. public DataTable GetMinPice(string RFQCODE, string ITEMCODE)
  1969. {
  1970. DataTable dt = new DataTable();
  1971. string sql = @"select min(QUOPRICE) as QUOPRICE from ICSSORQUODETAILNORMAL
  1972. WHERE 1=1
  1973. and RFQCODE='" + RFQCODE + "' and ITEMCODE='" + ITEMCODE + "'";
  1974. return Repository().FindTableBySql(sql.ToString());
  1975. }
  1976. public DataTable GetPOListExport(string rfqcode, string workpoint, ref Pagination jqgridparam)
  1977. {
  1978. List<DbParameter> parameter = new List<DbParameter>();
  1979. string sql = @" declare @sql varchar(8000)
  1980. 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
  1981. into #TempSORRFQ
  1982. FROM icsSORQUODETAILNORMAL c
  1983. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  1984. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.cVenCode AND b.WorkPoint=d.WorkPoint
  1985. WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
  1986. select @sql=isnull(@sql+',','')+' ['+cVenName+']'
  1987. from(select distinct cVenName from #TempSORRFQ)as a
  1988. set @sql='SELECT *
  1989. FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
  1990. exec(@sql)";
  1991. sql = string.Format(sql, rfqcode, workpoint);
  1992. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTempSORRFQbyChan(sql.ToString(), " " + "#TempSORRFQ" + " ", " drop table #TempSORRFQ", parameter.ToArray(), ref jqgridparam);
  1993. return dtr;
  1994. }
  1995. public DataTable GetPOListExport(string rfqno, string workpoint)
  1996. {
  1997. string sql = @"select
  1998. e.ITEMCODE as ,
  1999. e.ITEMNAME as ,
  2000. icsSORRFQ2VENDOR.VENDORCODE as ,
  2001. VenName as ,
  2002. CAST(D.QUOPRICE AS DECIMAL(18,4)) AS ,
  2003. d.ADDITION1 AS ,
  2004. e.REQUESTQUANTITY AS ,
  2005. f.InvStd AS ,
  2006. d.material as ,
  2007. d.PROCESS as ,
  2008. d.SurfaceTreatment as ,
  2009. d.Other as
  2010. FROM icsSORRFQ2VENDOR
  2011. left join icsvendor on ICSVendor.vencode=icsSORRFQ2VENDOR.VENDORCODE
  2012. left join icsSORQUOTATION c on c.vendorcode=icsSORRFQ2VENDOR.VENDORCODE and c.rfqcode=icsSORRFQ2VENDOR.RFQCODE
  2013. left join icsSORQUODETAILNORMAL d on d.QUOTATIONCODE=c.QUOTATIONCODE
  2014. left join icsSORRFQ2NORMALITEM e on e.RFQCODE=icsSORRFQ2VENDOR.RFQCODE and d.itemcode=e.itemcode
  2015. LEFT JOIN dbo.ICSInventory f ON e.ITEMCODE=f.InvCode AND e.WorkPoint=f.WorkPoint
  2016. where icsSORRFQ2VENDOR.RFQCODE='" + rfqno + @"'AND ISNULL(c.QUOTATIONCODE,'')<>'' order by e.ITEMCODE desc";
  2017. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2018. return dt;
  2019. }
  2020. /// <summary>
  2021. /// 获取供应商-生效价格
  2022. /// </summary>
  2023. /// <param name="rfqno"></param>
  2024. /// <param name="workpoint"></param>
  2025. /// <returns></returns>
  2026. public DataTable GettPerson(string rfqno, string workpoint)
  2027. {
  2028. string sql = @"SELECT distinct d.VenName cVenName, d.VenName as SupplierCode
  2029. FROM icsSORQUODETAILNORMAL c
  2030. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2031. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  2032. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2033. where c.RFQCODE ='{0}'and c.WorkPoint='{1}'
  2034. ";
  2035. sql = string.Format(sql, rfqno, workpoint);
  2036. DataTable table = SqlHelper.GetDataTableBySql(sql);
  2037. return table;
  2038. }
  2039. /// <summary>
  2040. /// 查询
  2041. /// </summary>
  2042. /// <param name="rfqcode"></param>
  2043. /// <param name="workpoint"></param>
  2044. /// <param name="jqgridparam"></param>
  2045. /// <returns></returns>
  2046. public DataTable GetListSORRFQ(string rfqno, string workpoint, ref Pagination jqgridparam)
  2047. {
  2048. string msg = string.Empty;
  2049. DataTable dt = new DataTable();
  2050. //var queryParam = queryJson.ToJObject();
  2051. List<DbParameter> parameter = new List<DbParameter>();
  2052. string sql = @" declare @sql varchar(8000)
  2053. SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,c.REQUESTQUANTITY,e.Remark
  2054. into #TempSORRFQ
  2055. FROM icsSORQUODETAILNORMAL c
  2056. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2057. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  2058. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2059. WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
  2060. select @sql=isnull(@sql+',','')+' ['+cVenName+']'
  2061. from(select distinct cVenName from #TempSORRFQ)as a
  2062. set @sql='SELECT STUFF((select'','' + cVenName from (SELECT DISTINCT cVenName FROM #TempSORRFQ ) DD for xml path('''')),1,1,'''') as IsTou,*
  2063. FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
  2064. exec(@sql)";
  2065. sql = string.Format(sql, rfqno, workpoint);
  2066. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTempSORRFQ(sql.ToString(), " " + "#TempSORRFQ" + " ", " drop table #TempSORRFQ", parameter.ToArray(), ref jqgridparam);
  2067. Dictionary<string, decimal> dic = new Dictionary<string, decimal>();
  2068. foreach (DataRow dr in dtr.Rows)
  2069. {
  2070. foreach (DataColumn col in dtr.Columns)
  2071. {
  2072. 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")
  2073. continue;
  2074. if (dic.Keys.Contains(col.Caption))
  2075. dic[col.Caption] += Convert.ToDecimal(Convert.ToDecimal(string.IsNullOrWhiteSpace(dr[col.Caption].ToString()) ? 0 : dr[col.Caption]) * Convert.ToDecimal(dr["REQUESTQUANTITY"]));
  2076. else
  2077. {
  2078. dic.Add(col.Caption, Convert.ToDecimal(Convert.ToDecimal(string.IsNullOrWhiteSpace(dr[col.Caption].ToString()) ? 0 : dr[col.Caption]) * Convert.ToDecimal(dr["REQUESTQUANTITY"])));
  2079. }
  2080. }
  2081. }
  2082. if (!string.IsNullOrWhiteSpace(msg))
  2083. {
  2084. throw new Exception(msg);
  2085. }
  2086. DataRow drNew = dtr.NewRow();
  2087. string name = "";
  2088. decimal qty = decimal.MaxValue;
  2089. foreach (var item in dic)
  2090. {
  2091. drNew[item.Key] = item.Value;
  2092. if (Convert.ToDecimal(item.Value) < qty && Convert.ToDecimal(item.Value) > 0)
  2093. {
  2094. qty = Convert.ToDecimal(item.Value);
  2095. name = item.Key;
  2096. }
  2097. }
  2098. DataColumn dataColumn = new DataColumn("ZBVendor", typeof(string));
  2099. dataColumn.DefaultValue = name; //为列设置默认值
  2100. dtr.Columns.Add(dataColumn);
  2101. dtr.Rows.Add(drNew);
  2102. return dtr;
  2103. }
  2104. /// <summary>
  2105. /// 查询
  2106. /// </summary>
  2107. /// <param name="rfqcode"></param>
  2108. /// <param name="workpoint"></param>
  2109. /// <param name="jqgridparam"></param>
  2110. /// <returns></returns>
  2111. public DataTable GetListSORRFQByDJ(string rfqno, string workpoint, ref Pagination jqgridparam)
  2112. {
  2113. string msg = string.Empty;
  2114. DataTable dt = new DataTable();
  2115. //var queryParam = queryJson.ToJObject();
  2116. List<DbParameter> parameter = new List<DbParameter>();
  2117. string sql = @" declare @sql varchar(8000)
  2118. SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,c.REQUESTQUANTITY,e.Remark,'' AS ZBVendor
  2119. ,f.InvStd
  2120. into #TempSORRFQ
  2121. FROM icsSORQUODETAILNORMAL c
  2122. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2123. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  2124. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2125. LEFT JOIN dbo.ICSInventory f ON e.ITEMCODE=f.InvCode AND e.WorkPoint=f.WorkPoint
  2126. WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
  2127. select @sql=isnull(@sql+',','')+' ['+cVenName+']'
  2128. from(select distinct cVenName from #TempSORRFQ)as a
  2129. set @sql='SELECT STUFF((select'','' + cVenName from (SELECT DISTINCT cVenName FROM #TempSORRFQ ) DD for xml path('''')),1,1,'''') as IsTou,*
  2130. FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
  2131. exec(@sql)";
  2132. sql = string.Format(sql, rfqno, workpoint);
  2133. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTempSORRFQ(sql.ToString(), " " + "#TempSORRFQ" + " ", " drop table #TempSORRFQ", parameter.ToArray(), ref jqgridparam);
  2134. string name = "";
  2135. foreach (DataRow dr in dtr.Rows)
  2136. {
  2137. decimal qty = decimal.MaxValue;
  2138. foreach (DataColumn col in dtr.Columns)
  2139. {
  2140. 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")
  2141. continue;
  2142. 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)
  2143. {
  2144. qty = Convert.ToDecimal(dr[col.Caption]);
  2145. name = col.Caption;
  2146. }
  2147. }
  2148. dr["ZBVendor"] = name;
  2149. }
  2150. //if (!string.IsNullOrWhiteSpace(msg))
  2151. //{
  2152. // throw new Exception(msg);
  2153. //}
  2154. //DataRow drNew = dtr.NewRow();
  2155. //string name = "";
  2156. //decimal qty = decimal.MaxValue;
  2157. //foreach (var item in dic)
  2158. //{
  2159. // drNew[item.Key] = item.Value;
  2160. // if (Convert.ToDecimal(item.Value) < qty && Convert.ToDecimal(item.Value) > 0)
  2161. // {
  2162. // qty = Convert.ToDecimal(item.Value);
  2163. // name = item.Key;
  2164. // }
  2165. //}
  2166. //DataColumn dataColumn = new DataColumn("ZBVendor", typeof(string));
  2167. //dataColumn.DefaultValue = name; //为列设置默认值
  2168. //dtr.Columns.Add(dataColumn);
  2169. //dtr.Rows.Add(drNew);
  2170. return dtr;
  2171. }
  2172. public DataTable GetSORRVenDorFile(string rfqcode)
  2173. {
  2174. //string Vendor = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
  2175. DataTable dt = new DataTable();
  2176. string sql = @"SELECT Filename FROM ICSSORRFQ WHERE RFQCODE='{0}'";
  2177. sql = string.Format(sql, rfqcode);
  2178. dt = SqlHelper.GetDataTableBySql(sql);
  2179. return dt;
  2180. }
  2181. /// <summary>
  2182. /// 查询
  2183. /// </summary>
  2184. /// <param name="rfqcode"></param>
  2185. /// <param name="workpoint"></param>
  2186. /// <param name="jqgridparam"></param>
  2187. /// <returns></returns>
  2188. public DataTable GetListSORRFQbyRemark(string rfqno, string workpoint)
  2189. {
  2190. string msg = string.Empty;
  2191. DataTable dt = new DataTable();
  2192. //var queryParam = queryJson.ToJObject();
  2193. List<DbParameter> parameter = new List<DbParameter>();
  2194. string sql = @" declare @sql varchar(8000)
  2195. SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,c.REQUESTQUANTITY,e.Remark
  2196. into #TempSORRFQ
  2197. FROM icsSORQUODETAILNORMAL c
  2198. LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
  2199. LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
  2200. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2201. WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
  2202. select @sql=isnull(@sql+',','')+' ['+cVenName+']'
  2203. from(select distinct cVenName from #TempSORRFQ)as a
  2204. set @sql='SELECT STUFF((select'','' + cVenName from (SELECT DISTINCT cVenName FROM #TempSORRFQ ) DD for xml path('''')),1,1,'''') as IsTou,*
  2205. FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
  2206. exec(@sql) drop table #TempSORRFQ ";
  2207. sql = string.Format(sql, rfqno, workpoint);
  2208. DataTable dtr = SqlHelper.GetDataTableBySql(sql.ToString());
  2209. return dtr;
  2210. }
  2211. /// <summary>
  2212. /// 获取采购订单信息
  2213. /// </summary>
  2214. /// <param name="rfqcode"></param>
  2215. /// <returns></returns>
  2216. public DataTable GetItemDocByPO(string queryJson, ref Pagination jqgridparam, string WorkPoint)
  2217. {
  2218. string ParentId = "";
  2219. var queryParam = queryJson.ToJObject();
  2220. List<DbParameter> parameter = new List<DbParameter>();
  2221. string sql = string.Empty;
  2222. if (!string.IsNullOrWhiteSpace(queryJson))
  2223. {
  2224. if (queryParam["status"].ToString() == "1")
  2225. {
  2226. sql = @"SELECT DISTINCT
  2227. a.id,
  2228. a.POCode,
  2229. a.Sequence,
  2230. b.InvCode,
  2231. a.Quantity,
  2232. a.CreateDateTime,
  2233. b.InvName,
  2234. b.InvStd,
  2235. a.PlanArriveDate,
  2236. b.InvUnit
  2237. FROM
  2238. dbo.ICSPurchaseOrder a
  2239. LEFT JOIN dbo.ICSInventory b ON a.InvCode = b.InvCode AND a.WorkPoint = b.WorkPoint
  2240. LEFT JOIN dbo.ICSWareHouseLotInfoLog c ON a.POCode = c.TransCode AND a.Sequence = c.TransSequence
  2241. WHERE
  2242. a.STATUS = '2'
  2243. AND EXISTS (
  2244. SELECT 1
  2245. FROM dbo.ICSWareHouseLotInfoLog c2
  2246. WHERE c2.TransCode = a.POCode AND c2.TransSequence = a.Sequence AND c2.Quantity = a.Quantity
  2247. ) ";
  2248. }
  2249. else if (queryParam["status"].ToString() == "2")
  2250. {
  2251. sql = @"SELECT DISTINCT
  2252. a.id,
  2253. a.POCode,
  2254. a.Sequence,
  2255. b.InvCode,
  2256. a.Quantity,
  2257. a.CreateDateTime,
  2258. b.InvName,
  2259. b.InvStd,
  2260. a.PlanArriveDate,
  2261. b.InvUnit
  2262. FROM
  2263. dbo.ICSPurchaseOrder a
  2264. LEFT JOIN dbo.ICSInventory b ON a.InvCode = b.InvCode AND a.WorkPoint = b.WorkPoint
  2265. LEFT JOIN dbo.ICSWareHouseLotInfoLog c ON a.POCode = c.TransCode AND a.Sequence = c.TransSequence
  2266. WHERE
  2267. a.STATUS = '2'
  2268. AND NOT EXISTS (
  2269. SELECT 1
  2270. FROM dbo.ICSWareHouseLotInfoLog c2
  2271. WHERE c2.TransCode = a.POCode
  2272. AND c2.TransSequence = a.Sequence
  2273. AND c2.Quantity = a.Quantity --
  2274. )";
  2275. }
  2276. else
  2277. {
  2278. sql = @"SELECT DISTINCT a.id,
  2279. a.POCode,
  2280. a.Sequence,
  2281. b.InvCode,
  2282. a.Quantity,
  2283. a.CreateDateTime,
  2284. b.InvName,
  2285. b.InvStd,
  2286. b.InvUnit,
  2287. PlanArriveDate
  2288. FROM dbo.ICSPurchaseOrder a
  2289. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  2290. Where 1=1 and a.STATUS='2'";
  2291. }
  2292. if (!string.IsNullOrWhiteSpace(queryParam["cPOID"].ToString()))
  2293. {
  2294. sql += " and a.POCode like '%" + queryParam["cPOID"].ToString() + "%' ";
  2295. }
  2296. if (!string.IsNullOrWhiteSpace(queryParam["BegiondDate"].ToString()))
  2297. {
  2298. sql += " and a.CreateDateTime >= '" + queryParam["BegiondDate"].ToString() + "' ";
  2299. }
  2300. if (!string.IsNullOrWhiteSpace(queryParam["EnddDate"].ToString()))
  2301. {
  2302. sql += " and a.CreateDateTime <= '" + queryParam["EnddDate"].ToString() + "' ";
  2303. }
  2304. if (!string.IsNullOrWhiteSpace(queryParam["cInvCode"].ToString()))
  2305. {
  2306. sql += " and b.InvCode ='" + queryParam["cInvCode"].ToString() + "' ";
  2307. }
  2308. if (!string.IsNullOrWhiteSpace(queryParam["cInvName"].ToString()))
  2309. {
  2310. sql += " and b.InvName ='" + queryParam["cInvName"].ToString() + "' ";
  2311. }
  2312. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  2313. //{
  2314. // sql += " and posrm.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  2315. //}
  2316. ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  2317. }
  2318. if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  2319. {
  2320. return SqlHelper.FindTablePageBySql_OtherTemp(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  2321. }
  2322. else
  2323. {
  2324. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2325. }
  2326. }
  2327. /// <summary>
  2328. /// 获取采购订单信息
  2329. /// </summary>
  2330. /// <param name="rfqcode"></param>
  2331. /// <returns></returns>
  2332. public DataTable GetRFByPU(string queryJson, ref Pagination jqgridparam, string WorkPoint)
  2333. {
  2334. var queryParam = queryJson.ToJObject();
  2335. List<DbParameter> parameter = new List<DbParameter>();
  2336. string sql = string.Empty;
  2337. //string Vendor = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
  2338. sql = @"SELECT a.F_ItemName,a.F_Description FROM Sys_SRM_ItemsDetail a
  2339. LEFT JOIN Sys_SRM_Items b ON a.F_ItemId = b.F_Id
  2340. WHERE b.F_EnCode = 'ERP001' and a.F_EnabledMark='1' and a.F_ItemCode='" + WorkPoint + "'";
  2341. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2342. if (dt.Rows.Count > 0)
  2343. {
  2344. sql = @" select pu_AppHead.cCode,pu_AppBody.ivouchrowno,pu_AppBody.cInvCode,Inv.cInvName,Inv.cInvStd,
  2345. Umit.cComUnitName as INVUOM ,pu_AppBody.fQuantity,pu_AppHead.dDate,pu_AppBody.dRequirDate
  2346. ,pu_AppBody.dArriveDate,pu_AppBody.cbMemo,''as Source,pu_AppBody.cpersonnameexec
  2347. into #Temp
  2348. From {0}.dbo.pu_AppHead with(nolock)
  2349. inner join {0}.dbo.pu_AppBody with(nolock) on pu_AppHead.id=pu_AppBody.id
  2350. 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
  2351. from {0}.dbo.v_inventory) extend_b_cinvcode_v_inventory on keyextend_b_cinvcode_v_inventory_cinvcode=pu_appbody.cinvcode
  2352. LEFT JOIN {0}.dbo.Inventory Inv ON pu_AppBody.cInvCode=Inv.cInvCode
  2353. LEFT JOIN {0}.dbo.ComputationUnit Umit ON Inv.cComUnitCode = Umit.cComunitCode
  2354. Where 1=1
  2355. And ( 1=1 And (cVoucherState = N'') And (cAppAdvanceCondic = N'0')
  2356. ) and isnull(cbcloser,N'')=N''
  2357. ";
  2358. }
  2359. if (!string.IsNullOrWhiteSpace(queryParam["cCode"].ToString()))
  2360. {
  2361. sql += " and pu_AppHead.cCode like '%" + queryParam["cCode"].ToString() + "%' ";
  2362. }
  2363. if (!string.IsNullOrWhiteSpace(queryParam["BegiondDate"].ToString()))
  2364. {
  2365. sql += " and pu_AppHead.dDate >= '" + queryParam["BegiondDate"].ToString() + "' ";
  2366. }
  2367. if (!string.IsNullOrWhiteSpace(queryParam["EnddDate"].ToString()))
  2368. {
  2369. sql += " and pu_AppHead.dDate <= '" + queryParam["EnddDate"].ToString() + "' ";
  2370. }
  2371. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  2372. {
  2373. sql += " and pu_AppBody.cInvCode ='" + queryParam["InvCode"].ToString() + "' ";
  2374. }
  2375. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  2376. {
  2377. sql += " and Inv.cInvName ='" + queryParam["InvName"].ToString() + "' ";
  2378. }
  2379. if (!string.IsNullOrWhiteSpace(queryParam["cpersonnameexec"].ToString()))
  2380. {
  2381. sql += " and pu_AppBody.cpersonnameexec like '%" + queryParam["cpersonnameexec"].ToString() + "%' ";
  2382. }
  2383. sql = string.Format(sql, dt.Rows[0]["F_Description"].ToString());
  2384. DataTable dtr = SqlHelper.FindTablePageBySql_OtherTemp4(sql.ToString(), " " + "#Temp" + " ", " drop table #Temp", parameter.ToArray(), ref jqgridparam);
  2385. return dtr;
  2386. //return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2387. }
  2388. /// <summary>
  2389. /// 获取供应商列表-询报价
  2390. /// </summary>
  2391. /// <returns></returns>
  2392. public DataTable GetVendor(string rfqno, string workpoint)
  2393. {
  2394. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2395. string sql = @"select '' as F_VenCode,'' as cVenName
  2396. union all
  2397. SELECT distinct a.VENDORCODE as F_VenCode,c.VenName as cVenName from ICSSORQUOTATION a
  2398. left join ICSSORQUODETAILNORMAL b on a.QUOTATIONCODE=b.QUOTATIONCODE and a.WorkPoint=b.WorkPoint
  2399. LEFT JOIN dbo.ICSVendor c ON a.VENDORCODE=c.VenCode AND a.WorkPoint=c.WorkPoint
  2400. WHERE a.RFQCODE='" + rfqno + "' and a.WorkPoint='" + workpoint + "' ";
  2401. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2402. return dt;
  2403. }
  2404. /// <summary>
  2405. /// 退回
  2406. /// </summary>
  2407. /// <param name="POCodeRow"></param>
  2408. /// <param name="ArriveDate"></param>
  2409. /// <returns></returns>
  2410. public int WatchBJByDJBack(string rfqno, string Vendor, string workpoint)
  2411. {
  2412. int count = 0;
  2413. DataTable dt = new DataTable();
  2414. List<DbParameter> parameter = new List<DbParameter>();
  2415. string sql = string.Empty;
  2416. //keyValue = keyValue.Substring(1, keyValue.Length - 2);
  2417. //已改多站点
  2418. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  2419. string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  2420. sql += @" UPDATE b SET b.QUOSTATUS='Back' ,LOGUSER='" + UserCode + "'" +
  2421. ",LOGDATE='" + DateTime.Now.ToString("yyyy-MM-dd") + @"'
  2422. from ICSSORQUOTATION a
  2423. left join ICSSORQUODETAILNORMAL b on a.QUOTATIONCODE=b.QUOTATIONCODE and a.WorkPoint=b.WorkPoint
  2424. where a.RFQCODE ='" + rfqno + "'and a.VENDORCODE='" + Vendor + "' and a.WorkPoint='" + workpoint + "'";
  2425. StringBuilder Str = new StringBuilder(sql);
  2426. string MailOpen = ConfigurationManager.ConnectionStrings["MailOpen"].ConnectionString;
  2427. if (MailOpen == "true")
  2428. {
  2429. string SendHost = ConfigurationManager.ConnectionStrings["SendHost"].ConnectionString;
  2430. string StrSendPort = ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString;
  2431. int SendPort = 25;
  2432. if (!string.IsNullOrEmpty(StrSendPort))
  2433. SendPort = Convert.ToInt32(ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString);
  2434. string SendDisplayName = ConfigurationManager.ConnectionStrings["SendDisplayName"].ConnectionString;
  2435. string SendAddress = ConfigurationManager.ConnectionStrings["SendAddress"].ConnectionString;
  2436. string SendPassword = ConfigurationManager.ConnectionStrings["SendPassword"].ConnectionString;
  2437. string sqlEmail = @"SELECT a.VenCode,b.F_Email,a.VenName FROM dbo.ICSVendor a
  2438. LEFT JOIN dbo.Sys_SRM_User b ON a.VenCode=b.F_VenCode AND a.WorkPoint=b.F_Location
  2439. WHERE a.VenCode='" + Vendor + "'and a.WorkPoint='" + workpoint + "' ";
  2440. DataTable dtMail = SqlHelper.GetDataTableBySql(sqlEmail);
  2441. foreach (DataRow dr in dtMail.Rows)
  2442. {
  2443. string cVenCode = dr["VenCode"].ToString();
  2444. string TOAddress = dr["F_Email"].ToString();
  2445. string[] Partint = TOAddress.Split(';');
  2446. if (!string.IsNullOrEmpty(TOAddress))
  2447. {
  2448. foreach (var p in Partint)
  2449. {
  2450. string CCAddress = "";
  2451. string Subject = "有来自佑伦SRM平台信息";
  2452. bool isBodyHtml = false;
  2453. string F_RealName = dr["VenName"].ToString();
  2454. string NowDate = DateTime.Now.GetDateTimeFormats('D')[0].ToString();
  2455. string body = F_RealName + ":";
  2456. body += " \r\n\r\n\r\n 您有一个询价单号:" + rfqno + "对应的报价单已退回 ,请登录系统重新报价!";
  2457. body += "\r\n";
  2458. body += " 顺颂商祺!";
  2459. body += "\r\n";
  2460. body += " 佑伦真空设备科技有限公司";
  2461. body += "\r\n";
  2462. body += " " + NowDate;
  2463. string StrConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  2464. if (!string.IsNullOrEmpty(TOAddress))
  2465. {
  2466. try
  2467. {
  2468. SendEmail(StrConn, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, p.ToString(), CCAddress, Subject, isBodyHtml, body);
  2469. count = Repository().ExecuteBySql(Str);
  2470. }
  2471. catch (Exception ex)
  2472. {
  2473. throw new Exception("供应商:" + cVenCode + "邮件发送失败! \r\n" + ex.Message);
  2474. }
  2475. }
  2476. else
  2477. {
  2478. throw new Exception("请先维护供应商:" + F_RealName + "邮箱!");
  2479. }
  2480. }
  2481. }
  2482. }
  2483. }
  2484. else
  2485. {
  2486. count = Repository().ExecuteBySql(Str);
  2487. }
  2488. return count;
  2489. }
  2490. /// <summary>
  2491. /// 询价单子表查询
  2492. /// </summary>
  2493. /// <param name="queryJson"></param>
  2494. /// <param name="jqgridparam"></param>
  2495. /// <returns></returns>
  2496. public DataTable GetSubGridJson(string RFQCODE, ref Pagination jqgridparam, string WorkPoint)
  2497. {
  2498. DataTable dt = new DataTable();
  2499. List<DbParameter> parameter = new List<DbParameter>();
  2500. string sql = @"SELECT b.itemcode,b.itemname,b.ITEMTYPE,a.invstd,b.unit,REQUESTQUANTITY,memo FROM icsSORRFQ2NORMALITEM b
  2501. left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
  2502. where RFQCODE='{0}'";
  2503. sql = string.Format(sql, RFQCODE);
  2504. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2505. }
  2506. public string GetBidItemCode(string WorkPoint, string Vendor)
  2507. {
  2508. string BidItemCode = string.Empty;
  2509. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  2510. if (!string.IsNullOrEmpty(WorkPoint))
  2511. {
  2512. string Date = DateTime.Now.ToString("yy");
  2513. string Muoth = DateTime.Now.ToString("MM");
  2514. string Day = DateTime.Now.ToString("dd");
  2515. string Pre = "SRM" + WorkPoint;
  2516. BidItemCode = GetSerialCode(WorkPoint, "ICSBidDoc", "BidCode", Pre, 5);
  2517. }
  2518. if (!string.IsNullOrWhiteSpace(BidItemCode))
  2519. {
  2520. string sqlISHave = @"SELECT InvCode FROM ICSINVENTORY a
  2521. WHERE a.InvCode = '{0}'";
  2522. sqlISHave = string.Format(sqlISHave, BidItemCode);
  2523. DataTable dtIsHave = SqlHelper.GetDataTableBySql(sqlISHave);
  2524. if (dtIsHave.Rows.Count > 0)
  2525. {
  2526. throw new Exception("正式物料已存在!");
  2527. }
  2528. }
  2529. return BidItemCode;
  2530. }
  2531. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  2532. {
  2533. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  2534. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  2535. return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  2536. }
  2537. }
  2538. }