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.

2747 lines
149 KiB

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