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.

2613 lines
143 KiB

2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
3 weeks ago
2 months ago
3 weeks ago
2 months ago
3 weeks ago
2 months ago
3 weeks ago
2 months ago
2 weeks ago
2 months ago
1 month ago
2 months ago
3 weeks ago
2 months ago
3 weeks ago
2 months ago
3 weeks ago
2 months ago
3 weeks ago
2 months ago
2 weeks ago
2 months ago
2 weeks ago
2 months ago
1 month ago
2 months ago
1 month ago
2 months ago
1 month ago
2 months ago
1 month ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
1 month ago
2 months ago
  1. using Newtonsoft.Json;
  2. using NFine.Domain._03_Entity.SRM;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Configuration;
  6. using System.Data.SqlClient;
  7. using System.Data;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using NFine.Repository;
  12. using NFine.Data.Extensions;
  13. using NFine.Code;
  14. using System.Data.Common;
  15. using System.Net;
  16. using Newtonsoft.Json.Linq;
  17. using ICSSoft.SendMail;
  18. namespace NFine.Application.SRM
  19. {
  20. public class PriceInquiryApp : RepositoryFactory<ICSPO_PoMain>
  21. {
  22. public static DataTable Invmes = new DataTable();
  23. public DataTable GetInvTabByPN(string rfqno)
  24. {
  25. string sql = @"select companycode as 公司代码,
  26. COSTANALYSISTEMPLATE as ,
  27. CREATEDATE as ,
  28. CreateTime as ,
  29. CREATEUSER as ,
  30. HASCOSTDETAILS as ,
  31. ISINCLUDETAX as ,
  32. ITEMCLASSID as ,
  33. a.itemcode as ,
  34. a.itemname as ,
  35. CASE a.ITEMTYPE WHEN 'Real' then '' else '' end as ,
  36. a.invstd as ,
  37. logdate as ,
  38. logtime as ,
  39. LOGUSER as ,
  40. memo as ,
  41. PRINCINGITEMCODE as ,
  42. REFERPRICE as ,
  43. CURRENCY as ,
  44. REQUESTQUANTITY as ,
  45. RFQCODE as ,
  46. RFQITEMREFERCODE as ,
  47. startdate as ,
  48. Requirements as ,
  49. RFQITEMREFERCODE as HiddenFile,
  50. unit as ,
  51. a.ID,
  52. b.workpoint,
  53. a.InvDesc AS ,
  54. a.ManuFacturer AS ,
  55. a.ManuFacturerInvCode AS ,
  56. a.YearQty AS ,
  57. a.ProjectInfo AS ,
  58. a.MaterialGrade AS ,
  59. a.CustomerSpecified AS ,
  60. a.TechnicalDirector AS ,
  61. a.Purchasing AS ,
  62. a.Status AS ,
  63. a.Purchasing
  64. from icsSORRFQ2NORMALITEM a
  65. left join ICSINVENTORY b on b.invcode=a.itemcode and b.workpoint=a.workpoint
  66. where RFQCODE='" + rfqno + @"' ";
  67. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  68. DataTable dtCloned = table.Clone();
  69. foreach (DataColumn col in dtCloned.Columns)
  70. {
  71. col.DataType = typeof(string);
  72. }
  73. foreach (DataRow row in table.Rows)
  74. {
  75. DataRow newrow = dtCloned.NewRow();
  76. foreach (DataColumn column in dtCloned.Columns)
  77. {
  78. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  79. }
  80. dtCloned.Rows.Add(newrow);
  81. }
  82. if (Invmes.Rows.Count > 0)
  83. {
  84. dtCloned.Merge(Invmes, false);
  85. }
  86. return dtCloned;
  87. }
  88. public DataTable GetGridJsonByPN(string queryJson, ref Pagination jqgridparam)
  89. {
  90. DataTable dt = new DataTable();
  91. var queryParam = queryJson.ToJObject();
  92. List<DbParameter> parameter = new List<DbParameter>();
  93. string sql = @" select distinct a.RFQCODE,a.RFQNAME,a.PURCHUGCODE,a.[STATUS] ,a.CREATEUSER,a.CREATEDATE,c.PURCHUGNAME,f.VenName cVenName,
  94. case when isnull(g.QUOTATIONCODE,'')='' then '' else g.QUOTATIONCODE end QUOTATIONCODE,g.LOGTIME,a.WorkPoint,case when isnull(g.QUOTATIONCODE,'')='' then 'WBJ' WHEN isnull(g.QUOTATIONCODE,'')<>'' AND isnull(h.QUOSTATUS,'')='' THEN 'YBJ' else h.QUOSTATUS end QUOSTATUS
  95. from dbo.ICSSORRFQ a
  96. left join ICSSORRFQ2NORMALITEM b on a.RFQCODE=b.RFQCODE and a.WorkPoint=b.WorkPoint
  97. left join dbo.ICSPURCHUG c on a.PURCHUGCODE=c.PURCHUGCODE
  98. left join ICSSORRFQ2VENDOR d on a.RFQCODE=d.RFQCODE and a.workpoint=d.WorkPoint
  99. LEFT JOIN dbo.ICSVendor f ON d.VENDORCODE=f.VenCode and a.workpoint=f.WorkPoint
  100. left join dbo.ICSSORRFQ2NORMALITEM e on a.RFQCODE=e.RFQCODE and b.ITEMCODE=e.ITEMCODE and a.workpoint=e.WorkPoint
  101. left join ICSSORQUOTATION g on a.RFQCODE=g.RFQCODE and a.workpoint=g.WorkPoint AND d.VENDORCODE=g.VENDORCODE
  102. left join ICSSORQUODETAILNORMAL h on g.QUOTATIONCODE=h.QUOTATIONCODE and g.WorkPoint=h.WorkPoint
  103. --where a.STATUS='Publish'
  104. where (ISNULL(a.STATUS,'')<>'New'OR ISNULL(a.STATUS,'')<>'Close')
  105. ";
  106. if (!string.IsNullOrWhiteSpace(queryJson))
  107. {
  108. if (!string.IsNullOrWhiteSpace(queryParam["QUOTATIONCODE"].ToString()))
  109. {
  110. sql += " and QUOTATIONCODE like '%" + queryParam["QUOTATIONCODE"].ToString() + "%' ";
  111. }
  112. if (!string.IsNullOrWhiteSpace(queryParam["RFQCODE"].ToString()))
  113. {
  114. sql += " and a.RFQCODE like '%" + queryParam["RFQCODE"].ToString() + "%' ";
  115. }
  116. if (!string.IsNullOrWhiteSpace(queryParam["RFQName"].ToString()))
  117. {
  118. sql += " and a.RFQNAME like '%" + queryParam["RFQName"].ToString() + "%' ";
  119. }
  120. if (!string.IsNullOrWhiteSpace(queryParam["ItemCode"].ToString()))
  121. {
  122. sql += " and e.ITEMCODE like '%" + queryParam["ItemCode"].ToString() + "%' ";
  123. }
  124. if (!string.IsNullOrWhiteSpace(queryParam["ItemName"].ToString()))
  125. {
  126. sql += " and e.ITEMNAME like '%" + queryParam["ItemName"].ToString() + "%' ";
  127. }
  128. if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  129. {
  130. sql += " and a.CREATEDATE >='" + queryParam["BeginDate"].ToString() + "' ";
  131. }
  132. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  133. {
  134. sql += " and a.CREATEDATE <='" + queryParam["EndDate"].ToString() + "'";
  135. }
  136. if (!string.IsNullOrWhiteSpace(queryParam["StatusNew"].ToString()))
  137. {
  138. sql += " and a.[STATUS] = '" + queryParam["StatusNew"].ToString() + "' ";
  139. }
  140. if (!string.IsNullOrWhiteSpace(queryParam["StatusPublish"].ToString()))
  141. {
  142. sql += " and a.[STATUS] = '" + queryParam["StatusPublish"].ToString() + "' ";
  143. }
  144. if (!string.IsNullOrWhiteSpace(queryParam["StatusClose"].ToString()))
  145. {
  146. sql += " and a.[STATUS] = '" + queryParam["StatusClose"].ToString() + "' ";
  147. }
  148. //佑伦增加
  149. if (!string.IsNullOrWhiteSpace(queryParam["ReleaseState"].ToString()))
  150. {
  151. if (queryParam["ReleaseState"].ToString() == "0")
  152. {
  153. sql += " and isnull(g.QUOTATIONCODE, '') = ''";
  154. }
  155. else if (queryParam["ReleaseState"].ToString() == "2")
  156. {
  157. sql += " and isnull(g.QUOTATIONCODE, '') <> ''";
  158. }
  159. }
  160. }
  161. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  162. {
  163. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  164. }
  165. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor") || NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "TempVendor")
  166. {
  167. sql += " and d.VENDORCODE like '%" + NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode + "%'";
  168. }
  169. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  170. }
  171. /// <summary>
  172. /// 根据当前登录的采购获取物料行
  173. /// </summary>
  174. /// <param name="rfqno"></param>
  175. /// <returns></returns>
  176. public DataTable GetInvTabByPNForVendor(string rfqno)
  177. {
  178. string sql = @"select companycode as 公司代码,
  179. COSTANALYSISTEMPLATE as ,
  180. CREATEDATE as ,
  181. CreateTime as ,
  182. CREATEUSER as ,
  183. HASCOSTDETAILS as ,
  184. ISINCLUDETAX as ,
  185. ITEMCLASSID as ,
  186. a.itemcode as ,
  187. a.itemname as ,
  188. CASE a.ITEMTYPE WHEN 'Real' then '' else '' end as ,
  189. a.invstd as ,
  190. logdate as ,
  191. logtime as ,
  192. LOGUSER as ,
  193. memo as ,
  194. PRINCINGITEMCODE as ,
  195. REFERPRICE as ,
  196. CURRENCY as ,
  197. REQUESTQUANTITY as ,
  198. RFQCODE as ,
  199. RFQITEMREFERCODE as ,
  200. startdate as ,
  201. Requirements as ,
  202. RFQITEMREFERCODE as HiddenFile,
  203. unit as ,
  204. a.ID,
  205. b.workpoint,
  206. a.InvDesc AS ,
  207. a.ManuFacturer AS ,
  208. a.ManuFacturerInvCode AS ,
  209. a.YearQty AS ,
  210. a.ProjectInfo AS ,
  211. a.MaterialGrade AS ,
  212. a.CustomerSpecified AS ,
  213. a.TechnicalDirector AS ,
  214. a.Purchasing AS ,
  215. a.Status AS ,
  216. a.Purchasing,
  217. a.Vendorsing
  218. from icsSORRFQ2NORMALITEM a
  219. left join ICSINVENTORY b on b.invcode=a.itemcode and b.workpoint=a.workpoint
  220. where RFQCODE='" + rfqno + @"' ";
  221. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Business"))
  222. {
  223. sql += " AND a.Purchasing LIKE '%"+ NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "%'";
  224. }
  225. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  226. return table;
  227. }
  228. #region 新增询价单
  229. /// <summary>
  230. /// 新增询价单
  231. /// </summary>
  232. /// <param name="details"></param>
  233. public void AddRFQByPN(ICSSORRFQ details)
  234. {
  235. string sql = string.Empty;
  236. try
  237. {
  238. List<ICSSORRFQ2NORMALITEM> list_BD = JsonConvert.DeserializeObject<List<ICSSORRFQ2NORMALITEM>>(details.arrayBidDocBD);
  239. //List<ICSSORRFQ2VENDOR> list_GYS = JsonConvert.DeserializeObject<List<ICSSORRFQ2VENDOR>>(details.arrayBidDocGYS);
  240. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  241. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  242. conn.Open();
  243. SqlTransaction sqlTran = conn.BeginTransaction();
  244. SqlCommand cmd = new SqlCommand();
  245. cmd.Transaction = sqlTran;
  246. cmd.Connection = conn;
  247. try
  248. {
  249. string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  250. string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  251. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  252. if (details.RFQstatus == "2")
  253. {
  254. sql = "select * from ICSSORRFQ where RFQCODE='" + details.RFQCODE + "' and WorkPoint='" + details.WorkPoint + "'";
  255. DataTable dt = SqlCommandHelper.SQlReturnData(sql, cmd);
  256. if (dt != null && dt.Rows.Count > 0)
  257. {
  258. throw new Exception("询价单已存在!");
  259. }
  260. }
  261. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ WHERE RFQCODE=@RFQCODE and WorkPoint=@workpoint)
  262. BEGIN
  263. INSERT INTO dbo.ICSSORRFQ(
  264. begindate,COSTANALYSISTEMPLATE,costtype,createdate,createtime,
  265. createuser,ISUNIFYANALYSISTEMPLATE,logdate,logtime,loguser,
  266. poct,rfqname,status,
  267. workpoint,companycode,rfqcode,memo,HASCOSTDETAILS,FileName
  268. )
  269. VALUES (@begindate,@COSTANALYSISTEMPLATE,@costtype,getdate(),getdate() ,
  270. @createuser,@ISUNIFYANALYSISTEMPLATE,getdate(),getdate(),@loguser,
  271. @poct,@rfqname,@status,
  272. @workpoint,@companycode,@rfqcode,@memo,@HASCOSTDETAILS,@FileName)
  273. END
  274. ELSE
  275. BEGIN
  276. UPDATE dbo.ICSSORRFQ SET
  277. begindate=@begindate ,
  278. COSTANALYSISTEMPLATE=@COSTANALYSISTEMPLATE ,
  279. costtype=@costtype,
  280. ISUNIFYANALYSISTEMPLATE=@ISUNIFYANALYSISTEMPLATE ,
  281. logdate=getdate() ,
  282. logtime=getdate() ,
  283. loguser=@loguser,
  284. rfqname=@rfqname ,
  285. memo=@memo,
  286. HASCOSTDETAILS=@HASCOSTDETAILS,
  287. FileName=@FileName
  288. WHERE RFQCODE=@RFQCODE AND WorkPoint=@workpoint
  289. END";
  290. SqlParameter[] sp_Detail = {
  291. new SqlParameter("@begindate",details.BEGINDATE),
  292. new SqlParameter("@COSTANALYSISTEMPLATE",details.COSTANALYSISTEMPLATE),
  293. new SqlParameter("@costtype",details.COSTTYPE),
  294. new SqlParameter("@createuser",MuserName),
  295. new SqlParameter("@ISUNIFYANALYSISTEMPLATE",details.ISUNIFYANALYSISTEMPLATE),
  296. new SqlParameter("@loguser",MuserName),
  297. //new SqlParameter("@ZTBCount",details.ZTBCount),
  298. new SqlParameter("@poct",details.POCT),
  299. //new SqlParameter("@purchugcode",details.PURCHUGCODE),
  300. new SqlParameter("@rfqname",details.RFQNAME),
  301. new SqlParameter("@status","New"),
  302. //new SqlParameter("@PURTeam",details.PURTeam),
  303. new SqlParameter("@workpoint",details.WorkPoint),
  304. new SqlParameter("@companycode",details.WorkPoint),
  305. new SqlParameter("@rfqcode",details.RFQCODE),
  306. new SqlParameter("@memo",details.MEMO),
  307. new SqlParameter("@HASCOSTDETAILS",details.HASCOSTDETAILS),
  308. new SqlParameter("@FileName",details.FileName),
  309. //new SqlParameter("@ENDDATE",details.ENDDATE)
  310. };
  311. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
  312. #region 标的
  313. foreach (ICSSORRFQ2NORMALITEM BD in list_BD)
  314. {
  315. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ2NORMALITEM WHERE ID='" + BD.ID + @"' and WorkPoint='" + BD.WorkPoint + @"')
  316. BEGIN
  317. INSERT INTO dbo.ICSSORRFQ2NORMALITEM(
  318. COMPANYCODE,COSTANALYSISTEMPLATE,CREATEDATE,CREATETIME,CREATEUSER,
  319. HASCOSTDETAILS,ISINCLUDETAX,ITEMCLASSID,ITEMCODE,ITEMNAME,
  320. ITEMTYPE,LOGDATE,LOGTIME,LOGUSER,MEMO,
  321. PRINCINGITEMCODE,REFERPRICE,CURRENCY,REQUESTQUANTITY,RFQCODE,
  322. RFQITEMREFERCODE,UNIT,ID,workpoint,
  323. Requirements,InvStd,InvDesc,ManuFacturer,ManuFacturerInvCode,YearQty,ProjectInfo
  324. ,MaterialGrade,CustomerSpecified,TechnicalDirector)
  325. VALUES (
  326. '" + details.WorkPoint + @"','" + BD.COSTANALYSISTEMPLATE + @"',getdate(),getdate(),'" + MuserName + @"',
  327. '" + BD.HASCOSTDETAILS + @"','" + BD.ISINCLUDETAX + @"','" + BD.ITEMCLASSID + @"','" + BD.ITEMCODE + @"','" + BD.ITEMNAME + @"',
  328. '" + BD.ITEMTYPE + @"',getdate(),getdate(),'" + MuserName + @"','" + BD.MEMO + @"',
  329. '" + BD.PRINCINGITEMCODE + @"', " + Convert.ToDecimal(BD.REFERPRICE) + @",'" + BD.CURRENCY + @"'," + Convert.ToDecimal(BD.REQUESTQUANTITY) + @",'" + details.RFQCODE + @"','" + BD.RFQITEMREFERCODE + @"','" + BD.UNIT + @"',NewID(),'" + details.WorkPoint + @"','" + BD.Requirements + @"','" + BD.InvStd + @"','" + BD.InvDesc + @"','" + BD.ManuFacturer + @"', '" + BD.ManuFacturerInvCode + @"', '" + BD.YearQty + @"', '" + BD.ProjectInfo + @"', '" + BD.MaterialGrade + @"', '" + BD.CustomerSpecified + @"','" + BD.TechnicalDirector + @"'
  330. )
  331. END
  332. ELSE
  333. BEGIN
  334. UPDATE dbo.ICSSORRFQ2NORMALITEM SET
  335. MEMO='" + BD.MEMO + @"' ,
  336. Requirements='" + BD.Requirements + @"' ,
  337. REQUESTQUANTITY=" + Convert.ToDecimal(BD.REQUESTQUANTITY) + @",
  338. HASCOSTDETAILS='" + BD.HASCOSTDETAILS + @"' ,
  339. RFQITEMREFERCODE='" + BD.RFQITEMREFERCODE + @"' ,
  340. LOGDATE=getdate() ,
  341. LOGTIME=getdate(),
  342. LOGUSER='" + MuserName + @"',
  343. Status=NULL
  344. WHERE ID='" + BD.ID + @"' AND WorkPoint='" + BD.WorkPoint + @"'
  345. END
  346. ";
  347. SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  348. }
  349. #endregion
  350. #region 临时物料
  351. foreach (ICSSORRFQ2NORMALITEM BD in list_BD)
  352. {
  353. if (BD.Source == "手工")
  354. {
  355. sql = @"INSERT INTO dbo.ICSINVENTORY
  356. (
  357. ID
  358. ,INVCODE
  359. ,INVNAME
  360. ,INVUOM
  361. ,INVSTD
  362. ,INVTYPE
  363. ,INVCLASS
  364. ,INVEXPORTIMPORT
  365. ,MUSER
  366. ,MUSERName
  367. ,MTIME
  368. ,WorkPoint
  369. )
  370. VALUES (
  371. @ID
  372. ,@INVCODE
  373. ,@INVNAME
  374. ,@INVUOM
  375. ,@INVSTD
  376. ,@INVTYPE
  377. ,@INVCLASS
  378. ,@INVEXPORTIMPORT
  379. ,@MUSER
  380. ,@MUSERName
  381. ,Getdate()
  382. ,@WorkPoint
  383. )
  384. ";
  385. SqlParameter[] sp_INv = {
  386. new SqlParameter("@ID",BD.ID),
  387. new SqlParameter("@INVCODE",BD.ITEMCODE),
  388. new SqlParameter("@INVNAME",BD.ITEMNAME),
  389. new SqlParameter("@INVUOM",BD.UNIT),
  390. new SqlParameter("@INVSTD",BD.InvStd),
  391. new SqlParameter("@INVTYPE","生产类型"),
  392. new SqlParameter("@INVCLASS","生产类型"),
  393. new SqlParameter("@INVEXPORTIMPORT","生产类型"),
  394. new SqlParameter("@WorkPoint",details.WorkPoint),
  395. new SqlParameter("@MUSER",Muser),
  396. new SqlParameter("@MUSERName",MuserName),
  397. //new SqlParameter("@WorkPoint",BD.cCode)
  398. };
  399. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_INv, cmd);
  400. }
  401. }
  402. #endregion
  403. //#region 供应商
  404. //foreach (ICSSORRFQ2VENDOR GYS in list_GYS)
  405. //{
  406. // sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ2VENDOR WHERE ID='" + GYS.ID + @"' and WorkPoint='" + GYS.WorkPoint + @"')
  407. // BEGIN
  408. // INSERT INTO dbo.ICSSORRFQ2VENDOR
  409. // (COMPANYCODE,CREATEDATE,CREATETIME,CREATEUSER,CURRENCY,
  410. // ISCLOSED,ISSHOWPRICE,LOCATIONCODE,LOGDATE,LOGTIME,
  411. // LOGUSER,PAYMENTCONDITION,PRINCINGVENDORCODE,RFQCODE,TAXRATE
  412. // ,VENDORCODE,VENDORTYPE,ADDITION1,ID,workpoint,addition2)
  413. // VALUES
  414. // ('" + details.WorkPoint + @"',getdate(),getdate(),'" + MuserName + @"','" + GYS.CURRENCY + @"',
  415. // '" + GYS.ISCLOSED + @"','" + GYS.ISSHOWPRICE + @"','" + GYS.LOCATIONCODE + @"',getdate(),getdate(),
  416. // '" + MuserName + @"','" + GYS.PAYMENTCONDITION + @"','" + GYS.PRINCINGVENDORCODE + @"','" + details.RFQCODE + @"','" + GYS.TAXRATE + @"'
  417. // ,'" + GYS.VENDORCODE + @"','" + GYS.VENDORTYPE + @"','" + GYS.ADDITION1 + @"','" + GYS.ID + @"','" + details.WorkPoint + @"','" + details.ADDITION2 + @"')
  418. // END
  419. // ELSE
  420. // BEGIN
  421. // UPDATE dbo.ICSSORRFQ2VENDOR SET
  422. // PAYMENTCONDITION='" + GYS.PAYMENTCONDITION + @"' ,
  423. // ISSHOWPRICE='" + GYS.ISSHOWPRICE + @"',
  424. // LOGDATE=getdate() ,
  425. // LOGTIME=getdate(),
  426. // LOGUSER='" + MuserName + @"'
  427. // WHERE ID='" + GYS.ID + @"' AND WorkPoint='" + GYS.WorkPoint + @"'
  428. // END
  429. // ";
  430. // SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  431. //}
  432. //#endregion
  433. cmd.Transaction.Commit();
  434. }
  435. catch (Exception ex)
  436. {
  437. cmd.Transaction.Rollback();
  438. throw new Exception(ex.Message);
  439. }
  440. finally
  441. {
  442. if (conn.State == ConnectionState.Open)
  443. {
  444. conn.Close();
  445. }
  446. conn.Dispose();
  447. }
  448. }
  449. catch (Exception ex)
  450. {
  451. throw new Exception(ex.Message);
  452. }
  453. }
  454. #endregion
  455. #region 分配采购人员
  456. /// <summary>
  457. /// 分配采购人员
  458. /// </summary>
  459. /// <param name="details"></param>
  460. //public void AddRFQByPNPurchasing(ICSSORRFQ details)
  461. //{
  462. // string sql = string.Empty;
  463. // string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  464. // SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  465. // conn.Open();
  466. // SqlTransaction sqlTran = conn.BeginTransaction();
  467. // SqlCommand cmd = new SqlCommand();
  468. // cmd.Transaction = sqlTran;
  469. // cmd.Connection = conn;
  470. // try
  471. // {
  472. // List<ICSSORRFQ2NORMALITEM> list_BD = JsonConvert.DeserializeObject<List<ICSSORRFQ2NORMALITEM>>(details.arrayBidDocBD);
  473. // //List<ICSSORRFQ2VENDOR> list_GYS = JsonConvert.DeserializeObject<List<ICSSORRFQ2VENDOR>>(details.arrayBidDocGYS);
  474. // var groupedList = list_BD.GroupBy(item => item.Purchasing);
  475. // string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  476. // string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  477. // // 输出分组结果
  478. // int FZ = 1;
  479. // foreach (var group in groupedList)
  480. // {
  481. // try
  482. // {
  483. // sql = @"
  484. // INSERT INTO dbo.ICSSORRFQ(
  485. // begindate,COSTANALYSISTEMPLATE,costtype,createdate,createtime,
  486. // createuser,ISUNIFYANALYSISTEMPLATE,logdate,logtime,loguser,
  487. // poct,purchugcode,rfqname,status,purteam,
  488. // workpoint,companycode,rfqcode,memo,HASCOSTDETAILS,FileName
  489. // )
  490. // VALUES (@begindate,@COSTANALYSISTEMPLATE,@costtype,getdate(),getdate() ,
  491. // @createuser,@ISUNIFYANALYSISTEMPLATE,getdate(),getdate(),@loguser,
  492. // @poct,@purchugcode,@rfqname,@status,@purteam,
  493. // @workpoint,@companycode,@rfqcode,@memo,@HASCOSTDETAILS,@FileName)
  494. // ";
  495. // SqlParameter[] sp_Detail = {
  496. // new SqlParameter("@begindate",details.BEGINDATE),
  497. // new SqlParameter("@COSTANALYSISTEMPLATE",details.COSTANALYSISTEMPLATE),
  498. // new SqlParameter("@costtype",details.COSTTYPE),
  499. // new SqlParameter("@createuser",MuserName),
  500. // new SqlParameter("@ISUNIFYANALYSISTEMPLATE",details.ISUNIFYANALYSISTEMPLATE),
  501. // new SqlParameter("@loguser",MuserName),
  502. // //new SqlParameter("@ZTBCount",details.ZTBCount),
  503. // new SqlParameter("@poct",details.POCT),
  504. // new SqlParameter("@purchugcode",details.PURCHUGCODE),
  505. // new SqlParameter("@rfqname",details.RFQNAME),
  506. // new SqlParameter("@status","Allocated"),
  507. // new SqlParameter("@PURTeam",details.PURTeam),
  508. // new SqlParameter("@workpoint",details.WorkPoint),
  509. // new SqlParameter("@companycode",details.WorkPoint),
  510. // new SqlParameter("@rfqcode",details.RFQCODE+"_"+FZ),
  511. // new SqlParameter("@memo",details.MEMO),
  512. // new SqlParameter("@HASCOSTDETAILS",details.HASCOSTDETAILS),
  513. // new SqlParameter("@FileName",details.FileName),
  514. // //new SqlParameter("@ENDDATE",details.ENDDATE)
  515. // };
  516. // SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
  517. // #region 标的
  518. // foreach (var item in group)
  519. // {
  520. // sql = @"
  521. // INSERT INTO dbo.ICSSORRFQ2NORMALITEM(
  522. // COMPANYCODE,COSTANALYSISTEMPLATE,CREATEDATE,CREATETIME,CREATEUSER,
  523. // HASCOSTDETAILS,ISINCLUDETAX,ITEMCLASSID,ITEMCODE,ITEMNAME,
  524. // ITEMTYPE,LOGDATE,LOGTIME,LOGUSER,MEMO,
  525. // PRINCINGITEMCODE,REFERPRICE,CURRENCY,REQUESTQUANTITY,RFQCODE,
  526. // RFQITEMREFERCODE,UNIT,ID,workpoint,
  527. // Requirements,InvStd,InvDesc,ManuFacturer,ManuFacturerInvCode,YearQty,ProjectInfo
  528. // ,MaterialGrade,CustomerSpecified,TechnicalDirector,Purchasing,EATTRIBUTE12)
  529. // VALUES (
  530. // '" + details.WorkPoint + @"','" + item.COSTANALYSISTEMPLATE + @"',getdate(),getdate(),'" + MuserName + @"',
  531. // '" + item.HASCOSTDETAILS + @"','" + item.ISINCLUDETAX + @"','" + item.ITEMCLASSID + @"','" + item.ITEMCODE + @"','" + item.ITEMNAME + @"',
  532. // '" + item.ITEMTYPE + @"',getdate(),getdate(),'" + MuserName + @"','" + item.MEMO + @"',
  533. // '" + item.PRINCINGITEMCODE + @"', " + Convert.ToDecimal(item.REFERPRICE) + @",'" + item.CURRENCY + @"'," + Convert.ToDecimal(item.REQUESTQUANTITY) + @",'" + details.RFQCODE + @"_"+FZ+"','" + item.RFQITEMREFERCODE + @"','" + item.UNIT + @"',NewID(),'" + details.WorkPoint + @"','" + item.Requirements + @"','" + item.InvStd + @"','" + item.InvDesc + @"','" + item.ManuFacturer + @"', '" + item.ManuFacturerInvCode + @"', '" + item.YearQty + @"', '" + item.ProjectInfo + @"', '" + item.MaterialGrade + @"', '" + item.CustomerSpecified + @"','" + item.TechnicalDirector + @"','" + item.Purchasing + @"','" + details.RFQCODE + @"'
  534. // )";
  535. // SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  536. // #endregion
  537. // }
  538. // //sql = @" UPDATE [ICSSORRFQ] SET STATUS='SplitOrder',EATTRIBUTE12='" + details.RFQCODE + "' WHERE RFQCODE='" + details.RFQCODE + "'";
  539. // //SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  540. // }
  541. // catch (Exception ex)
  542. // {
  543. // throw new Exception(ex.Message);
  544. // }
  545. // FZ++;
  546. // }
  547. // cmd.Transaction.Commit();
  548. // }
  549. // catch (Exception ex)
  550. // {
  551. // cmd.Transaction.Rollback();
  552. // throw new Exception(ex.Message);
  553. // }
  554. // finally
  555. // {
  556. // if (conn.State == ConnectionState.Open)
  557. // {
  558. // conn.Close();
  559. // }
  560. // conn.Dispose();
  561. // }
  562. //}
  563. public void AddRFQByPNPurchasing(ICSSORRFQ details)
  564. {
  565. string sql = string.Empty;
  566. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  567. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  568. conn.Open();
  569. SqlTransaction sqlTran = conn.BeginTransaction();
  570. SqlCommand cmd = new SqlCommand();
  571. cmd.Transaction = sqlTran;
  572. cmd.Connection = conn;
  573. List<string> UserList=new List<string>() ;
  574. try
  575. {
  576. List<ICSSORRFQRequestFrom2NORMALITEM> list_BD = JsonConvert.DeserializeObject<List<ICSSORRFQRequestFrom2NORMALITEM>>(details.arrayBidDocBD);
  577. //List<ICSSORRFQ2VENDOR> list_GYS = JsonConvert.DeserializeObject<List<ICSSORRFQ2VENDOR>>(details.arrayBidDocGYS);
  578. var groupedList = list_BD.GroupBy(item => item.Purchasing);
  579. string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  580. string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  581. // 输出分组结果
  582. foreach (var group in groupedList)
  583. {
  584. try
  585. {
  586. sql = @"UPDATE dbo.ICSSORRFQRequestFrom SET
  587. begindate=@begindate ,
  588. COSTANALYSISTEMPLATE=@COSTANALYSISTEMPLATE ,
  589. costtype=@costtype,
  590. ISUNIFYANALYSISTEMPLATE=@ISUNIFYANALYSISTEMPLATE ,
  591. STATUS=@status,
  592. logdate=getdate() ,
  593. logtime=getdate() ,
  594. loguser=@loguser,
  595. rfqname=@rfqname ,
  596. memo=@memo,
  597. HASCOSTDETAILS=@HASCOSTDETAILS,
  598. FileName=@FileName
  599. WHERE RFQCODE=@RFQCODE AND WorkPoint=@workpoint
  600. ";
  601. SqlParameter[] sp_Detail = {
  602. new SqlParameter("@begindate",details.BEGINDATE),
  603. new SqlParameter("@COSTANALYSISTEMPLATE",details.COSTANALYSISTEMPLATE),
  604. new SqlParameter("@costtype",details.COSTTYPE),
  605. new SqlParameter("@createuser",MuserName),
  606. new SqlParameter("@ISUNIFYANALYSISTEMPLATE",details.ISUNIFYANALYSISTEMPLATE),
  607. new SqlParameter("@loguser",MuserName),
  608. //new SqlParameter("@ZTBCount",details.ZTBCount),
  609. new SqlParameter("@poct",details.POCT),
  610. new SqlParameter("@purchugcode",details.PURCHUGCODE),
  611. new SqlParameter("@rfqname",details.RFQNAME),
  612. new SqlParameter("@status","Allocated"),
  613. new SqlParameter("@PURTeam",details.PURTeam),
  614. new SqlParameter("@workpoint",details.WorkPoint),
  615. new SqlParameter("@companycode",details.WorkPoint),
  616. new SqlParameter("@rfqcode",details.RFQCODE),
  617. new SqlParameter("@memo",details.MEMO),
  618. new SqlParameter("@HASCOSTDETAILS",details.HASCOSTDETAILS),
  619. new SqlParameter("@FileName",details.FileName),
  620. //new SqlParameter("@ENDDATE",details.ENDDATE)
  621. };
  622. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
  623. #region 标的
  624. foreach (var item in group)
  625. {
  626. UserList.Add(item.Purchasing);
  627. sql = @"
  628. UPDATE dbo.ICSSORRFQRequestFrom2NORMALITEM SET
  629. MEMO='" + item.MEMO + @"' ,
  630. Requirements='" + item.Requirements + @"' ,
  631. REQUESTQUANTITY=" + Convert.ToDecimal(item.REQUESTQUANTITY) + @",
  632. HASCOSTDETAILS='" + item.HASCOSTDETAILS + @"' ,
  633. RFQITEMREFERCODE='" + item.RFQITEMREFERCODE + @"' ,
  634. LOGDATE=getdate() ,
  635. LOGTIME=getdate(),
  636. LOGUSER='" + MuserName + @"',
  637. Status=NULL,
  638. Purchasing='" + item.Purchasing + @"'
  639. WHERE ID='" + item.ID + @"' AND WorkPoint='" + item.WorkPoint + @"'
  640. ";
  641. SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  642. #endregion
  643. }
  644. //sql = @" UPDATE [ICSSORRFQ] SET STATUS='SplitOrder',EATTRIBUTE12='" + details.RFQCODE + "' WHERE RFQCODE='" + details.RFQCODE + "'";
  645. //SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  646. UserList = UserList.Distinct().ToList();
  647. foreach (var item in UserList)
  648. {
  649. SendEmail(details.RFQCODE, item, details.WorkPoint);
  650. }
  651. }
  652. catch (Exception ex)
  653. {
  654. throw new Exception(ex.Message);
  655. }
  656. }
  657. cmd.Transaction.Commit();
  658. }
  659. catch (Exception ex)
  660. {
  661. cmd.Transaction.Rollback();
  662. throw new Exception(ex.Message);
  663. }
  664. finally
  665. {
  666. if (conn.State == ConnectionState.Open)
  667. {
  668. conn.Close();
  669. }
  670. conn.Dispose();
  671. }
  672. }
  673. #endregion
  674. public void SendEmail(string RFQCODE,string UserCode,string WorkPoint)
  675. {
  676. string MailOpen = ConfigurationManager.ConnectionStrings["MailOpen"].ConnectionString;
  677. if (MailOpen == "true")
  678. {
  679. string SendHost = ConfigurationManager.ConnectionStrings["SendHost"].ConnectionString;
  680. string CusterJC = ConfigurationManager.ConnectionStrings["CusterJC"].ConnectionString;
  681. string CusterQC = ConfigurationManager.ConnectionStrings["CusterQC"].ConnectionString;
  682. string StrSendPort = ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString;
  683. int SendPort = 25;
  684. if (!string.IsNullOrEmpty(StrSendPort))
  685. SendPort = Convert.ToInt32(ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString);
  686. string SendDisplayName = ConfigurationManager.ConnectionStrings["SendDisplayName"].ConnectionString;
  687. string SendAddress = ConfigurationManager.ConnectionStrings["SendAddress"].ConnectionString;
  688. string SendPassword = ConfigurationManager.ConnectionStrings["SendPassword"].ConnectionString;
  689. // sql = @"SELECT distinct POCode,b.VenCode,b.VenName FROM dbo.ICSPurchaseOrder a
  690. //left join ICSVendor b on a.VenCode=b.VenCode
  691. // WHERE a.POCode IN (" + queryJson.TrimEnd(',') + ") AND a.WorkPoint in (" + WorkPoint.TrimEnd(',') + ")";
  692. //DataTable dt = SqlHelper.GetDataTableBySql(sql);
  693. string sendCommect = SqlHelper.GetItemsDetailsbySendMail("POSendMailComment");
  694. //foreach (DataRow dr in dt.Rows)
  695. //{
  696. string cVenCode = UserCode;
  697. string TOAddress = GetVendorEmail(cVenCode, WorkPoint).TrimEnd(',');
  698. string[] Partint = TOAddress.Split(';');
  699. if (!string.IsNullOrEmpty(TOAddress))
  700. {
  701. foreach (var p in Partint)
  702. {
  703. string CCAddress = "";
  704. string Subject = "有来自" + CusterJC + "SRM平台新发布的采购订单信息";
  705. bool isBodyHtml = false;
  706. //string VenName = dr["VenName"].ToString();
  707. //string POCode = dr["POCode"].ToString();
  708. string NowDate = DateTime.Now.GetDateTimeFormats('D')[0].ToString();
  709. string body = cVenCode + ":";
  710. body += "\r\n";
  711. body += " 您好!有来自" + CusterJC + "SRM新发布的技术需求单:" + RFQCODE + " ,请在24小时内确认订单,可登陆" + CusterJC + "SRM系统查看相关信息!";
  712. body += "\r\n";
  713. body += sendCommect;
  714. body += "\r\n";
  715. body += " 顺颂商祺!";
  716. body += "\r\n";
  717. body += " " + CusterQC + "";
  718. body += "\r\n";
  719. body += " " + NowDate;
  720. if (!string.IsNullOrEmpty(TOAddress))
  721. {
  722. string StrConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  723. ICSSendMail.SendEmail(StrConn, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, p.ToString(), CCAddress, Subject, isBodyHtml, body);
  724. }
  725. }
  726. }
  727. //}
  728. }
  729. }
  730. public string GetVendorEmail(string VenCode, string WorkPoint)
  731. {
  732. string sql = " SELECT F_Email FROM dbo.Sys_SRM_User WHERE F_Account='" + VenCode + "' and F_Location='"+ WorkPoint + "' ";
  733. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  734. string Email = string.Empty;
  735. foreach (DataRow dr in dt.Rows)
  736. {
  737. Email += dr["F_Email"].ToString() + ",";
  738. }
  739. return Email;
  740. }
  741. #region 分配供应商
  742. /// <summary>
  743. /// 分配供应商
  744. /// </summary>
  745. /// <param name="details"></param>
  746. public void AddRFQByPNVendorsing(ICSSORRFQ details)
  747. {
  748. string sql = string.Empty;
  749. try
  750. {
  751. List<ICSSORRFQ2NORMALITEM> list_BD = JsonConvert.DeserializeObject<List<ICSSORRFQ2NORMALITEM>>(details.arrayBidDocBD);
  752. List<ICSSORRFQ2VENDOR> list_GYS = JsonConvert.DeserializeObject<List<ICSSORRFQ2VENDOR>>(details.arrayBidDocGYS);
  753. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  754. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  755. conn.Open();
  756. SqlTransaction sqlTran = conn.BeginTransaction();
  757. SqlCommand cmd = new SqlCommand();
  758. cmd.Transaction = sqlTran;
  759. cmd.Connection = conn;
  760. try
  761. {
  762. string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  763. string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  764. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  765. string rfqcode = GetRFQCODEICSSORRFQRequestFrom(details.WorkPoint);
  766. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ WHERE RFQCODE=@RFQCODE and WorkPoint=@workpoint)
  767. BEGIN
  768. INSERT INTO dbo.ICSSORRFQ(
  769. begindate,COSTANALYSISTEMPLATE,costtype,createdate,createtime,
  770. createuser,ISUNIFYANALYSISTEMPLATE,logdate,logtime,loguser,
  771. poct,purchugcode,rfqname,status,purteam,
  772. workpoint,companycode,rfqcode,memo,HASCOSTDETAILS,FileName
  773. )
  774. VALUES (@begindate,@COSTANALYSISTEMPLATE,@costtype,getdate(),getdate() ,
  775. @createuser,@ISUNIFYANALYSISTEMPLATE,getdate(),getdate(),@loguser,
  776. @poct,@purchugcode,@rfqname,@status,@purteam,
  777. @workpoint,@companycode,@rfqcode,@memo,@HASCOSTDETAILS,@FileName)
  778. END
  779. ELSE
  780. BEGIN
  781. UPDATE dbo.ICSSORRFQ SET
  782. begindate=@begindate ,
  783. COSTANALYSISTEMPLATE=@COSTANALYSISTEMPLATE ,
  784. costtype=@costtype,
  785. ISUNIFYANALYSISTEMPLATE=@ISUNIFYANALYSISTEMPLATE ,
  786. logdate=getdate() ,
  787. logtime=getdate() ,
  788. loguser=@loguser,
  789. purchugcode=@purchugcode ,
  790. rfqname=@rfqname ,
  791. purteam=@purteam,
  792. memo=@memo,
  793. HASCOSTDETAILS=@HASCOSTDETAILS,
  794. FileName=@FileName
  795. WHERE RFQCODE=@RFQCODE AND WorkPoint=@workpoint
  796. END";
  797. SqlParameter[] sp_Detail = {
  798. new SqlParameter("@begindate",details.BEGINDATE),
  799. new SqlParameter("@COSTANALYSISTEMPLATE",details.COSTANALYSISTEMPLATE),
  800. new SqlParameter("@costtype",details.COSTTYPE),
  801. new SqlParameter("@createuser",MuserName),
  802. new SqlParameter("@ISUNIFYANALYSISTEMPLATE",details.ISUNIFYANALYSISTEMPLATE),
  803. new SqlParameter("@loguser",MuserName),
  804. //new SqlParameter("@ZTBCount",details.ZTBCount),
  805. new SqlParameter("@poct",details.POCT),
  806. new SqlParameter("@purchugcode",details.PURCHUGCODE),
  807. new SqlParameter("@rfqname","询价单"+rfqcode),
  808. new SqlParameter("@status","New"),
  809. new SqlParameter("@PURTeam",details.PURTeam),
  810. new SqlParameter("@workpoint",details.WorkPoint),
  811. new SqlParameter("@companycode",details.WorkPoint),
  812. new SqlParameter("@rfqcode",rfqcode),
  813. new SqlParameter("@memo",details.MEMO),
  814. new SqlParameter("@HASCOSTDETAILS",details.HASCOSTDETAILS),
  815. new SqlParameter("@FileName",details.FileName),
  816. //new SqlParameter("@ENDDATE",details.ENDDATE)
  817. };
  818. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
  819. #region 标的
  820. foreach (ICSSORRFQ2NORMALITEM BD in list_BD)
  821. {
  822. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ2NORMALITEM WHERE ID='" + BD.ID + @"' and WorkPoint='" + BD.WorkPoint + @"')
  823. BEGIN
  824. INSERT INTO dbo.ICSSORRFQ2NORMALITEM(
  825. COMPANYCODE,COSTANALYSISTEMPLATE,CREATEDATE,CREATETIME,CREATEUSER,
  826. HASCOSTDETAILS,ISINCLUDETAX,ITEMCLASSID,ITEMCODE,ITEMNAME,
  827. ITEMTYPE,LOGDATE,LOGTIME,LOGUSER,MEMO,
  828. PRINCINGITEMCODE,REFERPRICE,CURRENCY,REQUESTQUANTITY,RFQCODE,
  829. RFQITEMREFERCODE,UNIT,ID,workpoint,
  830. Requirements,InvStd,InvDesc,ManuFacturer,ManuFacturerInvCode,YearQty,ProjectInfo
  831. ,MaterialGrade,CustomerSpecified,TechnicalDirector,Vendorsing,ADDITION2,EATTRIBUTE18)
  832. VALUES (
  833. '" + details.WorkPoint + @"','" + BD.COSTANALYSISTEMPLATE + @"',getdate(),getdate(),'" + MuserName + @"',
  834. '" + BD.HASCOSTDETAILS + @"','" + BD.ISINCLUDETAX + @"','" + BD.ITEMCLASSID + @"','" + BD.ITEMCODE + @"','" + BD.ITEMNAME + @"',
  835. '" + BD.ITEMTYPE + @"',getdate(),getdate(),'" + MuserName + @"','" + BD.MEMO + @"',
  836. '" + BD.PRINCINGITEMCODE + @"', " + Convert.ToDecimal(BD.REFERPRICE) + @",'" + BD.CURRENCY + @"'," + Convert.ToDecimal(BD.REQUESTQUANTITY) + @",'" + rfqcode + @"','" + BD.RFQITEMREFERCODE + @"','" + BD.UNIT + @"',NewID(),'" + details.WorkPoint + @"','" + BD.Requirements + @"','" + BD.InvStd + @"','" + BD.InvDesc + @"','" + BD.ManuFacturer + @"', '" + BD.ManuFacturerInvCode + @"', '" + BD.YearQty + @"', '" + BD.ProjectInfo + @"', '" + BD.MaterialGrade + @"', '" + BD.CustomerSpecified + @"','" + BD.TechnicalDirector + @"','" + BD.Vendorsing.TrimEnd(',') + @"','" + BD.RFQCODE + @"','" + BD.EATTRIBUTE18 + @"'
  837. )
  838. END
  839. ELSE
  840. BEGIN
  841. UPDATE dbo.ICSSORRFQ2NORMALITEM SET
  842. MEMO='" + BD.MEMO + @"' ,
  843. Requirements='" + BD.Requirements + @"' ,
  844. REQUESTQUANTITY=" + Convert.ToDecimal(BD.REQUESTQUANTITY) + @",
  845. HASCOSTDETAILS='" + BD.HASCOSTDETAILS + @"' ,
  846. RFQITEMREFERCODE='" + BD.RFQITEMREFERCODE + @"' ,
  847. LOGDATE=getdate() ,
  848. LOGTIME=getdate(),
  849. LOGUSER='" + MuserName + @"',
  850. Vendorsing='" + BD.Vendorsing.TrimEnd(',') + @"'
  851. WHERE ID='" + BD.ID + @"' AND WorkPoint='" + BD.WorkPoint + @"'
  852. END
  853. ";
  854. SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  855. #region 供应商
  856. foreach (ICSSORRFQ2VENDOR GYS in list_GYS)
  857. {
  858. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ2VENDOR WHERE ID='" + GYS.ID + @"' and WorkPoint='" + GYS.WorkPoint + @"')
  859. BEGIN
  860. INSERT INTO dbo.ICSSORRFQ2VENDOR
  861. (COMPANYCODE,CREATEDATE,CREATETIME,CREATEUSER,CURRENCY,
  862. ISCLOSED,ISSHOWPRICE,LOCATIONCODE,LOGDATE,LOGTIME,
  863. LOGUSER,PAYMENTCONDITION,PRINCINGVENDORCODE,RFQCODE,TAXRATE
  864. ,VENDORCODE,VENDORTYPE,ADDITION1,ID,workpoint,addition2)
  865. VALUES
  866. ('" + details.WorkPoint + @"',getdate(),getdate(),'" + MuserName + @"','" + GYS.CURRENCY + @"',
  867. '" + GYS.ISCLOSED + @"','" + GYS.ISSHOWPRICE + @"','" + GYS.LOCATIONCODE + @"',getdate(),getdate(),
  868. '" + MuserName + @"','" + GYS.PAYMENTCONDITION + @"','" + GYS.PRINCINGVENDORCODE + @"','" + rfqcode + @"','" + GYS.TAXRATE + @"'
  869. ,'" + GYS.VENDORCODE + @"','" + GYS.VENDORTYPE + @"','" + GYS.ADDITION1 + @"','" + GYS.ID + @"','" + details.WorkPoint + @"','" + details.ADDITION2 + @"')
  870. END
  871. ELSE
  872. BEGIN
  873. UPDATE dbo.ICSSORRFQ2VENDOR SET
  874. PAYMENTCONDITION='" + GYS.PAYMENTCONDITION + @"' ,
  875. ISSHOWPRICE='" + GYS.ISSHOWPRICE + @"',
  876. LOGDATE=getdate() ,
  877. LOGTIME=getdate(),
  878. LOGUSER='" + MuserName + @"'
  879. WHERE ID='" + GYS.ID + @"' AND WorkPoint='" + GYS.WorkPoint + @"'
  880. END
  881. ";
  882. SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  883. }
  884. #endregion
  885. }
  886. if (details.isUpdate == true)
  887. {
  888. sql = @"Update ICSSORRFQRequest set Status='UpgradeOrder' where RFQCODE in ('" + details.RFQCODE + "')";
  889. }
  890. #endregion
  891. cmd.Transaction.Commit();
  892. }
  893. catch (Exception ex)
  894. {
  895. cmd.Transaction.Rollback();
  896. throw new Exception(ex.Message);
  897. }
  898. finally
  899. {
  900. if (conn.State == ConnectionState.Open)
  901. {
  902. conn.Close();
  903. }
  904. conn.Dispose();
  905. }
  906. }
  907. catch (Exception ex)
  908. {
  909. throw new Exception(ex.Message);
  910. }
  911. }
  912. #endregion
  913. #region 获取采购员-下拉
  914. /// <summary>
  915. /// 获取采购员-下拉
  916. /// </summary>
  917. /// <param name="rfqno"></param>
  918. /// <param name="workpoint"></param>
  919. /// <returns></returns>
  920. public DataTable GetSelectBuiess(string WorkPoint)
  921. {
  922. string sql = @"SELECT a.F_Account,a.F_RealName FROM dbo.Sys_SRM_User a
  923. LEFT JOIN dbo.Sys_SRM_Role b ON a.F_RoleId=b.F_Id
  924. WHERE b.F_EnCode='Purchasing Staff'AND a.F_Location='{0}'
  925. ";
  926. sql = string.Format(sql, WorkPoint);
  927. DataTable table = SqlHelper.GetDataTableBySql(sql);
  928. return table;
  929. }
  930. #endregion
  931. #region 获取供应商-下拉
  932. /// <summary>
  933. /// 获取供应商-下拉
  934. /// </summary>
  935. /// <param name="rfqno"></param>
  936. /// <param name="workpoint"></param>
  937. /// <returns></returns>
  938. public DataTable GetSelectVendor(string WorkPoint)
  939. {
  940. string sql = @" SELECT '' AS cvencode,''AS cvenname
  941. UNION ALL
  942. SELECT DISTINCT a.VenCode cvencode,a.VenName cvenname
  943. from ICSVendor a
  944. LEFT JOIN dbo.Sys_SRM_User b ON a.VenCode=b.F_VenCode AND a.WorkPoint=b.F_Location
  945. where 1=1 AND a.WorkPoint='{0}'
  946. ";
  947. sql = string.Format(sql, WorkPoint);
  948. DataTable table = SqlHelper.GetDataTableBySql(sql);
  949. return table;
  950. }
  951. #endregion
  952. #region 退回物料行
  953. /// <summary>
  954. /// 退回物料行
  955. /// </summary>
  956. /// <param name="json"></param>
  957. /// <returns></returns>
  958. public string InvCodeBack(string keyValue,string RFQNO)
  959. {
  960. string msg = string.Empty;
  961. try
  962. {
  963. //string wheresql = "(";
  964. ////string[] id = json.Split(',');
  965. ////for (int i = 0; i < id.Length; i++) {
  966. //// wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  967. ////}
  968. //wheresql = wheresql.Trim(',') + ")";
  969. string sql = "Update ICSSORRFQRequestFrom2NORMALITEM set Status='2' where id in ('" + keyValue + "')" +
  970. " UPDATE ICSSORRFQRequestFrom SET STATUS='Back' where RFQCODE in ('" + RFQNO + "') ";
  971. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  972. if (count <= 0)
  973. {
  974. msg = " 删除失败!";
  975. }
  976. }
  977. catch (Exception ex)
  978. {
  979. msg = ex.Message + " 删除失败!";
  980. }
  981. return msg;
  982. }
  983. #endregion
  984. public void AddinvtoTemp(string json)
  985. {
  986. var data = json.ToJObject();
  987. if (Invmes.Columns.Count <= 0)
  988. {
  989. Invmes.Columns.Add("公司代码", typeof(string));
  990. Invmes.Columns.Add("成本分析模板", typeof(string));
  991. Invmes.Columns.Add("创建日期", typeof(string));
  992. Invmes.Columns.Add("创建时间", typeof(string));
  993. Invmes.Columns.Add("创建用户", typeof(string));
  994. Invmes.Columns.Add("成本明细", typeof(string));
  995. Invmes.Columns.Add("是否含税", typeof(string));
  996. Invmes.Columns.Add("物料分类代码", typeof(string));
  997. Invmes.Columns.Add("物料代码", typeof(string));
  998. Invmes.Columns.Add("物料名称", typeof(string));
  999. Invmes.Columns.Add("物料类型", typeof(string));
  1000. Invmes.Columns.Add("物料规格", typeof(string));
  1001. Invmes.Columns.Add("更新日期", typeof(string));
  1002. Invmes.Columns.Add("更新时间", typeof(string));
  1003. Invmes.Columns.Add("更新用户", typeof(string));
  1004. Invmes.Columns.Add("备注", typeof(string));
  1005. Invmes.Columns.Add("定价物料编码", typeof(string));
  1006. Invmes.Columns.Add("参考价格", typeof(string));
  1007. Invmes.Columns.Add("币种", typeof(string));
  1008. Invmes.Columns.Add("预计需求量", typeof(string));
  1009. Invmes.Columns.Add("询价单编码", typeof(string));
  1010. Invmes.Columns.Add("文件路径", typeof(string));
  1011. Invmes.Columns.Add("有效期开始", typeof(string));
  1012. Invmes.Columns.Add("单位", typeof(string));
  1013. Invmes.Columns.Add("ID", typeof(string));
  1014. Invmes.Columns.Add("workpoint", typeof(string));
  1015. Invmes.Columns.Add("技术要求", typeof(string));
  1016. }
  1017. if (!String.IsNullOrEmpty(data["id"].ToString()))
  1018. {
  1019. UpdateInvRow(data["id"].ToString(), json);
  1020. }
  1021. else
  1022. {
  1023. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1024. DataRow newrow = Invmes.NewRow();
  1025. newrow["公司代码"] = data["companycode"];
  1026. newrow["成本分析模板"] = data["COSTANALYSISTEMPLATE"];
  1027. newrow["创建日期"] = data["CREATEDATE"];
  1028. newrow["创建时间"] = data["CreateTime"];
  1029. newrow["创建用户"] = usercode;
  1030. newrow["成本明细"] = data["HASCOSTDETAILS"];
  1031. newrow["是否含税"] = data["ISINCLUDETAX"];
  1032. newrow["物料分类代码"] = data["itemclass"];
  1033. newrow["物料代码"] = data["itemcode"];
  1034. newrow["物料名称"] = data["itemname"];
  1035. newrow["物料类型"] = data["invtype"];
  1036. newrow["物料规格"] = data["itemstd"];
  1037. newrow["更新日期"] = data["logdate"];
  1038. newrow["更新时间"] = data["logtime"];
  1039. newrow["更新用户"] = usercode;
  1040. newrow["备注"] = data["memo"];
  1041. newrow["定价物料编码"] = data["PRINCINGITEMCODE"];
  1042. newrow["参考价格"] = data["REFERPRICE"];
  1043. newrow["币种"] = data["currency"];
  1044. newrow["预计需求量"] = data["REQUESTQUANTITY"];
  1045. newrow["询价单编码"] = data["RFQCODE"];
  1046. newrow["文件路径"] = data["RFQITEMREFERCODE"];
  1047. newrow["有效期开始"] = data["startdate"];
  1048. newrow["单位"] = data["unit"];
  1049. newrow["ID"] = GetNewid();
  1050. newrow["workpoint"] = data["workpoint"];
  1051. newrow["技术要求"] = data["Requirements"];
  1052. Invmes.Rows.Add(newrow);
  1053. }
  1054. }
  1055. /// <summary>
  1056. /// 清楚临时表
  1057. /// </summary>
  1058. public void ClearTempTab()
  1059. {
  1060. Invmes.Rows.Clear();
  1061. }
  1062. public string GetNewid()
  1063. {
  1064. string sql = "select newid() AS ID";
  1065. return Repository().FindTableBySql(sql, null).Rows[0]["ID"].ToString();
  1066. }
  1067. public void UpdateInvRow(string id, string json)
  1068. {
  1069. var data = json.ToJObject();
  1070. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1071. string sql = @"update icsSORRFQ2NORMALITEM set COSTANALYSISTEMPLATE='" + data["COSTANALYSISTEMPLATE"].ToString() + @"',
  1072. HASCOSTDETAILS='" + data["HASCOSTDETAILS"].ToString() + @"',ISINCLUDETAX='" + data["ISINCLUDETAX"].ToString() + @"',itemcode='" + data["itemcode"].ToString() + @"',
  1073. itemname='" + data["itemname"].ToString() + @"',ITEMTYPE='" + data["invtype"].ToString() + @"',logdate='" + data["logdate"].ToString() + "',logtime='" + data["logtime"].ToString() + @"',
  1074. LOGUSER='" + usercode.ToString() + @",memo='" + data["memo"] + "',PRINCINGITEMCODE='" + data["PRINCINGITEMCODE"].ToString() + "',REQUESTQUANTITY='" + data["REQUESTQUANTITY"].ToString() + @"',
  1075. RFQCODE='" + data["RFQCODE"].ToString() + "',RFQITEMREFERCODE='" + data["RFQITEMREFERCODE"].ToString() + "',STARTDATE='" + data["startdate"].ToString() + "',unit='" + data["unit"] + @"',CURRENCY='" + data["currency"].ToString() + @"',REFERPRICE='" + data["REFERPRICE"].ToString() + @"'
  1076. WHERE ID='" + id + @"'
  1077. ";
  1078. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1079. if (count <= 0)
  1080. {
  1081. DataRow row = Invmes.Select("ID ='" + id + "'").Single();
  1082. row["成本分析模板"] = data["COSTANALYSISTEMPLATE"];
  1083. row["成本明细"] = data["HASCOSTDETAILS"];
  1084. row["是否含税"] = data["ISINCLUDETAX"];
  1085. row["物料分类代码"] = data["itemclass"];
  1086. row["物料代码"] = data["itemcode"];
  1087. row["物料名称"] = data["itemname"];
  1088. row["物料类型"] = data["invtype"];
  1089. row["物料规格"] = data["itemstd"];
  1090. row["更新日期"] = data["logdate"];
  1091. row["更新时间"] = data["logtime"];
  1092. row["更新用户"] = usercode;
  1093. row["备注"] = data["memo"];
  1094. row["定价物料编码"] = data["PRINCINGITEMCODE"];
  1095. row["预计需求量"] = data["REQUESTQUANTITY"];
  1096. row["询价单编码"] = data["RFQCODE"];
  1097. row["文件路径"] = data["RFQITEMREFERCODE"];
  1098. row["有效期开始"] = data["startdate"];
  1099. row["单位"] = data["unit"];
  1100. }
  1101. }
  1102. #region 获取QuotedPriceDetails页面文本框值
  1103. public DataTable GetTxtInfoByPN(string RFQCODE)
  1104. {
  1105. string configSql = @"SELECT DISTINCT a.RFQCODE,a.RFQNAME,a.PURCHUGCODE,b.ITEMTYPE ,
  1106. g.F_FullName AS PURCHUGNAME,h.F_ItemName AS PURCHUGCONECT,d.VENDORCODE,e.VenName cVenName,d.VENDORTYPE ,b.CURRENCY,d.TAXRATE,d.PAYMENTCONDITION,a.MEMO ,b.COMPANYCODE
  1107. ,a.HASCOSTDETAILS,a.FileName
  1108. FROM dbo.ICSSORRFQ a
  1109. LEFT JOIN ICSSORRFQ2NORMALITEM b ON a.RFQCODE=b.RFQCODE
  1110. --left join dbo.ICSPURCHUG c on a.PURCHUGCODE=c.PURCHUGCODE
  1111. LEFT JOIN dbo.ICSSORRFQ2VENDOR d ON a.RFQCODE=d.RFQCODE
  1112. LEFT JOIN ICSVendor e ON d.VENDORCODE=e.VenCode
  1113. LEFT JOIN ICSSORQUOTATION f ON a.RFQCODE=f.RFQCODE
  1114. LEFT JOIN dbo.Sys_SRM_Items g ON a.purchugcode=g.F_EnCode
  1115. LEFT JOIN dbo.Sys_SRM_ItemsDetail h ON g.F_Id=h.F_ItemId AND a.PURTeam=h.F_ItemCode
  1116. WHERE a.RFQCODE='" + RFQCODE + "'";
  1117. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  1118. {
  1119. configSql += " and d.VENDORCODE like '%" + NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode + "%'";
  1120. }
  1121. DataTable dt = SqlHelper.GetDataTableBySql(configSql);
  1122. return dt;
  1123. }
  1124. #endregion
  1125. #region 初次加载QuotedPriceDetails页面数据
  1126. public DataTable SelectOfferByPN(string RFQCODE, ref Pagination jqgridparam, string WorkPoint)
  1127. {
  1128. DataTable dt = new DataTable();
  1129. //var queryParam = queryJson.ToJObject();
  1130. List<DbParameter> parameter = new List<DbParameter>();
  1131. string VenCode = GetVendorCode(WorkPoint);
  1132. string sql = @"select newid() as ID, b.ID as EnquiryID, b.ITEMCODE, b.ITEMNAME as INVNAME,case when b.ITEMTYPE='Real' then '正式物料' else '临时物料' end as ITEMTYPE ,
  1133. b.RFQITEMREFERCODE ,b.RFQITEMREFERCODE as RFQITEMREFERCODEName, d.InvUnit as UNIT,b.REFERPRICE ,'' as QUOPRICE ,'New' as QUOSTATUS,'' as COSTDETAILSREFERCODE,b.REQUESTQUANTITY,'' as VENDORREJECTREASON, '' as QUOBUYERPRICE,'' as VENDORMEMO,'' as LoadQUOPRICE,b.MEMO as PurchaseMEMO,
  1134. case when isnull(b.HASCOSTDETAILS,0)=0 then '否' else '是' end HASCOSTDETAILS,d.InvStd,'' as ADDITION1,'' as UnitQUOPRICE,'' as TaxAmount,'' as Currency,'' as MinPackQuantity,'' as MOQ,'' as VenFullName,a.CREATEUSER as Purchaser,'' as Origin,'' as DailyMetalPrices,'' as ProcessingFee,b.ManuFacturer,b.ManuFacturerInvCode
  1135. from ICSSORRFQ a
  1136. left join ICSSORRFQ2NORMALITEM b on a.RFQCODE=b.RFQCODE and a.workpoint=b.WorkPoint
  1137. left join ICSSORRFQ2VENDOR c on a.RFQCODE=c.RFQCODE and a.workpoint=b.WorkPoint
  1138. left join ICSINVENTORY d on b.ITEMCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
  1139. LEFT JOIN dbo.ICSVendor e ON c.VENDORCODE=e.VenCode and a.workpoint=e.WorkPoint
  1140. where a.RFQCODE='{0}'";
  1141. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  1142. {
  1143. //sql += " and f.cVenCode in (SELECT cVenCode FROM ICSVendor where cVenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
  1144. sql += "and c.VENDORCODE like '%" + VenCode + "%'";
  1145. }
  1146. sql = string.Format(sql, RFQCODE);
  1147. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1148. }
  1149. #endregion
  1150. #region 获取供应商档案
  1151. public string GetVendorCode(string WorkPoint)
  1152. {
  1153. string sql = string.Empty;
  1154. string VenCode = string.Empty;
  1155. string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1156. string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1157. if (UserName != "admin")
  1158. {
  1159. sql = @"select b.VenCode cVenCode from Sys_SRM_User a
  1160. left join ICSVendor b on a.F_VenCode=b.VenCode
  1161. where F_Account='" + UserCode + "'and a.F_Location='" + WorkPoint + "'";
  1162. DataTable GetVenCode = SqlHelper.GetDataTableBySql(sql);
  1163. if (GetVenCode.Rows.Count > 0 && GetVenCode.Rows[0]["cVenCode"].ToString()!="")
  1164. {
  1165. VenCode = GetVenCode.Rows[0]["cVenCode"].ToString();
  1166. }
  1167. else
  1168. {
  1169. string sqlLS = @" select a.F_VenCode cVenCode from Sys_SRM_User a
  1170. left join ICSVendor b on a.F_VenCode=b.VenCode
  1171. where F_Account='" + UserCode + "'and a.F_Location='" + WorkPoint + "'";
  1172. DataTable GetVenCodeLS = SqlHelper.GetDataTableBySql(sqlLS);
  1173. if (GetVenCodeLS.Rows.Count > 0)
  1174. {
  1175. VenCode = GetVenCodeLS.Rows[0]["cVenCode"].ToString();
  1176. }
  1177. }
  1178. }
  1179. return VenCode;
  1180. }
  1181. #endregion
  1182. #region 获取QuotedPriceDetails页面文本框值(二次)
  1183. public DataTable SecondGetTxtInfoByPN(string RFQCODE, string QUOTATIONCODE)
  1184. {
  1185. DataTable dt = new DataTable();
  1186. List<DbParameter> parameter = new List<DbParameter>();
  1187. string sql = @" select distinct a.RFQCODE,a.RFQNAME,a.PURCHUGCODE,b.ITEMTYPE ,
  1188. c.PURCHUGNAME ,c.PURCHUGCONECT ,d.VENDORCODE,e.VenName cVenName,d.VENDORTYPE ,b.CURRENCY,d.TAXRATE,d.PAYMENTCONDITION,a.MEMO ,b.COMPANYCODE ,
  1189. g.VENDORMEMO,g.QUOTATIONCODE,g.QUOTEDATE,a.HASCOSTDETAILS,b.ManuFacturer ,b.ManuFacturerInvCode
  1190. from dbo.ICSSORRFQ a
  1191. left join ICSSORRFQ2NORMALITEM b on a.RFQCODE=b.RFQCODE and a.workpoint=b.WorkPoint
  1192. left join ICSSORQUOTATION g on a.RFQCODE=g.RFQCODE and a.workpoint=g.WorkPoint
  1193. left join dbo.ICSPURCHUG c on a.PURCHUGCODE=c.PURCHUGCODE and a.workpoint=c.WorkPoint
  1194. left join dbo.ICSSORRFQ2VENDOR d on a.RFQCODE=d.RFQCODE and a.workpoint=d.WorkPoint
  1195. left join ICSVendor e on d.VENDORCODE=e.VenCode and a.workpoint=e.WorkPoint
  1196. left join ICSSORQUOTATION f on a.RFQCODE=f.RFQCODE and a.workpoint=f.WorkPoint
  1197. where a.RFQCODE='{0}' and g.QUOTATIONCODE='{1}' ";
  1198. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  1199. //{
  1200. // sql += " and b.Vendorsing like '%" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "%'";
  1201. //}
  1202. sql = string.Format(sql, RFQCODE, QUOTATIONCODE);
  1203. return Repository().FindTableBySql(sql.ToString());
  1204. }
  1205. #endregion
  1206. #region 初次加载QuotedPriceDetails页面数据(二次)
  1207. public DataTable SecondSelectOfferByPN(string RFQCODE, string QUOTATIONCODE, ref Pagination jqgridparam)
  1208. {
  1209. DataTable dt = new DataTable();
  1210. //var queryParam = queryJson.ToJObject();
  1211. List<DbParameter> parameter = new List<DbParameter>();
  1212. string sql = @"select
  1213. b.ID as ID,
  1214. c.ID as EnquiryID,
  1215. b.ITEMCODE, b.ITEMNAME as INVNAME,
  1216. c.RFQITEMREFERCODE ,c.RFQITEMREFERCODE as RFQITEMREFERCODEName, d.InvUnit as UNIT,b.REFERPRICE ,b.QUOPRICE, b.QUOPRICE as LoadQUOPRICE , b.COSTDETAILSREFERCODE,b.REQUESTQUANTITY, b.QUOBUYERPRICE ,b.COSTDETAILSREFERCODE as COSTDETAILSREFERCODEName,b.VENDORMEMO,c.MEMO as PurchaseMEMO
  1217. ,b.QUOSTATUS,case when isnull(c.HASCOSTDETAILS,0)=0 then '否' else '是' end HASCOSTDETAILS
  1218. ,b.ADDITION1,b.EATTRIBUTE20 as UnitQUOPRICE,b.EATTRIBUTE21 as TaxAmount,b.EATTRIBUTE22 as Currency,b.EATTRIBUTE23 as MinPackQuantity,b.EATTRIBUTE24 as MOQ,b.EATTRIBUTE25 as VenFullName,b.EATTRIBUTE26 as Purchaser,b.EATTRIBUTE27 as Origin,b.EATTRIBUTE28 as DailyMetalPrices,b.EATTRIBUTE29 as ProcessingFee,c.ManuFacturer ,c.ManuFacturerInvCode
  1219. from ICSSORQUOTATION a
  1220. left join ICSSORQUODETAILNORMAL b on a.QUOTATIONCODE=b.QUOTATIONCODE and a.WorkPoint=b.WorkPoint
  1221. left join ICSSORRFQ2NORMALITEM c on b.RFQCODE=c.RFQCODE and b.ITEMCODE=c.ITEMCODE and a.WorkPoint=c.WorkPoint
  1222. left join ICSINVENTORY d on b.ITEMCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
  1223. LEFT JOIN dbo.ICSVendor e ON a.VENDORCODE=e.VenCode and a.workpoint=e.WorkPoint
  1224. where a.RFQCODE='{0}' and a.QUOTATIONCODE='{1}'";
  1225. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  1226. //{
  1227. // //sql += " and f.cVenCode in (SELECT cVenCode FROM ICSVendor where cVenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
  1228. // sql += "and c.Vendorsing like '%" + NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode + "%'";
  1229. //}
  1230. sql = string.Format(sql, RFQCODE, QUOTATIONCODE);
  1231. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1232. }
  1233. #endregion
  1234. public DataTable GetGridJson(string Json, ref Pagination jqgridparam)
  1235. {
  1236. string ParentId = "";
  1237. DataTable table = new DataTable();
  1238. var Jobject = Json.ToJObject();
  1239. List<DbParameter> parameter = new List<DbParameter>();
  1240. string sqlwhere = "";
  1241. if (!string.IsNullOrEmpty(Jobject["PruOrganize"].ToString()))
  1242. {
  1243. sqlwhere += " and c.PURCHUGNAME like '%" + Jobject["PruOrganize"].ToString() + "%' ";
  1244. }
  1245. if (!string.IsNullOrEmpty(Jobject["PruTeam"].ToString()))
  1246. {
  1247. sqlwhere += " and h.F_ItemName like '%" + Jobject["PruTeam"].ToString() + "%'";
  1248. }
  1249. if (!string.IsNullOrEmpty(Jobject["RFQCode"].ToString()))
  1250. {
  1251. sqlwhere += " and a.RFQCode like '%" + Jobject["RFQCode"].ToString() + "%'";
  1252. }
  1253. if (!string.IsNullOrEmpty(Jobject["RFQName"].ToString()))
  1254. {
  1255. sqlwhere += " and a.RFQName like '%" + Jobject["RFQName"].ToString() + "%'";
  1256. }
  1257. if (!string.IsNullOrEmpty(Jobject["SupplierCode"].ToString()))
  1258. {
  1259. sqlwhere += " and B.SupplierCode like '%" + Jobject["SupplierCode"].ToString() + "%'";
  1260. }
  1261. if (!string.IsNullOrEmpty(Jobject["SupplierName"].ToString()))
  1262. {
  1263. sqlwhere += " and b.SupplierName like '%" + Jobject["SupplierName"].ToString() + "%'";
  1264. }
  1265. if (!string.IsNullOrEmpty(Jobject["InvCode"].ToString()))
  1266. {
  1267. sqlwhere += " and e.itemcode like '%" + Jobject["InvCode"].ToString() + "%'";
  1268. }
  1269. if (!string.IsNullOrEmpty(Jobject["InvName"].ToString()))
  1270. {
  1271. sqlwhere += " and e.itemname like '%" + Jobject["InvName"].ToString() + "%'";
  1272. }
  1273. if (!string.IsNullOrEmpty(Jobject["InvStd"].ToString()))
  1274. {
  1275. sqlwhere += " and f.InvStd like '%" + Jobject["InvStd"].ToString() + "%'";
  1276. }
  1277. if (!string.IsNullOrEmpty(Jobject["TimeFrom"].ToString()))
  1278. {
  1279. sqlwhere += " and a.BEGINDATE>='" + Jobject["TimeFrom"].ToString() + "'";
  1280. }
  1281. if (!string.IsNullOrEmpty(Jobject["TimeTo"].ToString()))
  1282. {
  1283. sqlwhere += " and a.BEGINDATE<='" + Jobject["TimeTo"].ToString() + "'";
  1284. }
  1285. if (!string.IsNullOrEmpty(Jobject["ReleaseState"].ToString().Trim(',')) && Jobject["ReleaseState"].ToString().Trim(',') != "'Examine'" && Jobject["ReleaseState"].ToString().Trim(',') != "'HasExamine'")
  1286. {
  1287. sqlwhere += " and a.status in ('" + Jobject["ReleaseState"].ToString().TrimEnd('\'').TrimEnd(',') + "')";
  1288. }
  1289. //if (Jobject["status"].ToString().Trim(',') == "'Examine'")
  1290. //{
  1291. // 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'))";
  1292. //}
  1293. //if (Jobject["status"].ToString().Trim(',') == "'HasExamine'")
  1294. //{
  1295. // 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')))";
  1296. //}
  1297. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  1298. {
  1299. sqlwhere += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  1300. }
  1301. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Purchasing Staff")
  1302. {
  1303. sqlwhere += " and e.Purchasing like '%" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "%'";
  1304. }
  1305. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Purchasing Manager")
  1306. {
  1307. sqlwhere += " and a.STATUS ='Unallocated'";
  1308. }
  1309. string sql = @"select distinct a.RFQCODE,RFQNAME,
  1310. case a.STATUS
  1311. when 'Publish' then ''
  1312. when 'Examine' then ''
  1313. when 'HasExamine' THEN ''
  1314. WHEN 'New' THEN ''
  1315. when 'Close' then ''
  1316. when 'PricingApprove' then ''
  1317. when 'PricingApproveByOA' then 'OA待审核'
  1318. when 'PricingApproveByOASH' then 'OA已审核'
  1319. when 'PricingApproveByOABack' then 'OA审核拒绝'
  1320. when 'Unallocated' then ''
  1321. WHEN 'Allocated'then ''
  1322. WHEN 'Back'then '退'
  1323. end as STATUS,
  1324. case a.STATUS
  1325. when 'Publish' then ''
  1326. when 'Examine' then ''
  1327. when 'HasExamine' THEN ''
  1328. WHEN 'New' THEN ''
  1329. when 'Close' then ''
  1330. when 'PricingApprove' then ''
  1331. when 'PricingApproveByOA' then 'OA待审核'
  1332. when 'PricingApproveByOASH' then 'OA已审核'
  1333. when 'PricingApproveByOABack' then 'OA审核拒绝'
  1334. when 'Unallocated' then ''
  1335. WHEN 'Allocated'then ''
  1336. WHEN 'Back'then '退'
  1337. end as HIDDSTATUS,
  1338. a.BEGINDATE,a.ENDDATE,a.CREATEUSER,a.CREATETIME,c.PURCHUGNAME,h.F_ItemName as PURTEAM,c.PURCHUGNAME as PURORG
  1339. ,b.SupplierName as COMPANYNAME,A.LOGDATE,A.LOGUSER,A.workpoint
  1340. ,a.ADDITION1
  1341. ,a.ADDITION2
  1342. from icsSORRFQ A
  1343. left join BASE_SUPPLIER B ON B.SupplierCode = a.COMPANYCODE
  1344. left join ICSPurChug c on c.PURCHUGCODE = a.PURCHUGCODE
  1345. --left join ICSPURCHUGSON d on d.PURCHUGSONCODE = a.PURTeam
  1346. left join icsSORRFQ2NORMALITEM e on e.RFQCODE=a.RFQCODE
  1347. left join ICSINVENTORY f on f.INVCODE=e.ITEMCODE
  1348. left join icsSORQUOTATION g on g.RFQCODE=a.Rfqcode
  1349. left join Sys_SRM_ItemsDetail h on h.F_ItemCode=A.purteam
  1350. where 1=1 " + sqlwhere;
  1351. ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  1352. if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  1353. {
  1354. return SqlHelper.FindTablePageBySql_OtherTempbyLOGUSER(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  1355. }
  1356. else
  1357. {
  1358. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1359. }
  1360. }
  1361. #region 查询技术部需求单列表
  1362. public DataTable GetGridJsonICSSORRFQRequestFrom(string Json, ref Pagination jqgridparam)
  1363. {
  1364. string ParentId = "";
  1365. DataTable table = new DataTable();
  1366. var Jobject = Json.ToJObject();
  1367. List<DbParameter> parameter = new List<DbParameter>();
  1368. string sqlwhere = "";
  1369. //if (!string.IsNullOrEmpty(Jobject["PruOrganize"].ToString()))
  1370. //{
  1371. // sqlwhere += " and c.PURCHUGNAME like '%" + Jobject["PruOrganize"].ToString() + "%' ";
  1372. //}
  1373. //if (!string.IsNullOrEmpty(Jobject["PruTeam"].ToString()))
  1374. //{
  1375. // sqlwhere += " and h.F_ItemName like '%" + Jobject["PruTeam"].ToString() + "%'";
  1376. //}
  1377. if (!string.IsNullOrEmpty(Jobject["RFQCode"].ToString()))
  1378. {
  1379. sqlwhere += " and a.RFQCode like '%" + Jobject["RFQCode"].ToString() + "%'";
  1380. }
  1381. if (!string.IsNullOrEmpty(Jobject["RFQName"].ToString()))
  1382. {
  1383. sqlwhere += " and a.RFQName like '%" + Jobject["RFQName"].ToString() + "%'";
  1384. }
  1385. if (!string.IsNullOrEmpty(Jobject["SupplierCode"].ToString()))
  1386. {
  1387. sqlwhere += " and B.SupplierCode like '%" + Jobject["SupplierCode"].ToString() + "%'";
  1388. }
  1389. if (!string.IsNullOrEmpty(Jobject["SupplierName"].ToString()))
  1390. {
  1391. sqlwhere += " and b.SupplierName like '%" + Jobject["SupplierName"].ToString() + "%'";
  1392. }
  1393. if (!string.IsNullOrEmpty(Jobject["InvCode"].ToString()))
  1394. {
  1395. sqlwhere += " and e.itemcode like '%" + Jobject["InvCode"].ToString() + "%'";
  1396. }
  1397. if (!string.IsNullOrEmpty(Jobject["InvName"].ToString()))
  1398. {
  1399. sqlwhere += " and e.itemname like '%" + Jobject["InvName"].ToString() + "%'";
  1400. }
  1401. if (!string.IsNullOrEmpty(Jobject["InvStd"].ToString()))
  1402. {
  1403. sqlwhere += " and f.InvStd like '%" + Jobject["InvStd"].ToString() + "%'";
  1404. }
  1405. if (!string.IsNullOrEmpty(Jobject["TimeFrom"].ToString()))
  1406. {
  1407. sqlwhere += " and a.BEGINDATE>='" + Jobject["TimeFrom"].ToString() + "'";
  1408. }
  1409. if (!string.IsNullOrEmpty(Jobject["TimeTo"].ToString()))
  1410. {
  1411. sqlwhere += " and a.BEGINDATE<='" + Jobject["TimeTo"].ToString() + "'";
  1412. }
  1413. if (!string.IsNullOrEmpty(Jobject["ReleaseState"].ToString().Trim(',')) && Jobject["ReleaseState"].ToString().Trim(',') != "'Examine'" && Jobject["ReleaseState"].ToString().Trim(',') != "'HasExamine'")
  1414. {
  1415. sqlwhere += " and a.status in ('" + Jobject["ReleaseState"].ToString().TrimEnd('\'').TrimEnd(',') + "')";
  1416. }
  1417. //if (Jobject["status"].ToString().Trim(',') == "'Examine'")
  1418. //{
  1419. // 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'))";
  1420. //}
  1421. //if (Jobject["status"].ToString().Trim(',') == "'HasExamine'")
  1422. //{
  1423. // 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')))";
  1424. //}
  1425. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  1426. {
  1427. sqlwhere += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  1428. }
  1429. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Purchasing Staff")
  1430. {
  1431. sqlwhere += " and e.Purchasing like '%" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "%'";
  1432. }
  1433. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Purchasing Manager")
  1434. {
  1435. sqlwhere += " and a.STATUS ='Unallocated'";
  1436. }
  1437. string sql = @"select distinct a.RFQCODE,RFQNAME,
  1438. case a.STATUS
  1439. when 'Publish' then ''
  1440. when 'Examine' then ''
  1441. when 'HasExamine' THEN ''
  1442. WHEN 'New' THEN ''
  1443. when 'Close' then ''
  1444. when 'PricingApprove' then ''
  1445. when 'PricingApproveByOA' then 'OA待审核'
  1446. when 'PricingApproveByOASH' then 'OA已审核'
  1447. when 'PricingApproveByOABack' then 'OA审核拒绝'
  1448. when 'Unallocated' then ''
  1449. WHEN 'Allocated'then ''
  1450. WHEN 'Back'then '退'
  1451. WHEN 'End'then ''
  1452. end as STATUS,
  1453. case a.STATUS
  1454. when 'Publish' then ''
  1455. when 'Examine' then ''
  1456. when 'HasExamine' THEN ''
  1457. WHEN 'New' THEN ''
  1458. when 'Close' then ''
  1459. when 'PricingApprove' then ''
  1460. when 'PricingApproveByOA' then 'OA待审核'
  1461. when 'PricingApproveByOASH' then 'OA已审核'
  1462. when 'PricingApproveByOABack' then 'OA审核拒绝'
  1463. when 'Unallocated' then ''
  1464. WHEN 'Allocated'then ''
  1465. WHEN 'Back'then '退'
  1466. WHEN 'End'then ''
  1467. end as HIDDSTATUS,
  1468. a.BEGINDATE,a.ENDDATE,a.CREATEUSER,a.CREATETIME,h.F_ItemName as PURTEAM,A.LOGDATE,A.LOGUSER,A.workpoint
  1469. ,a.ADDITION1
  1470. ,a.ADDITION2
  1471. from ICSSORRFQRequestFrom A
  1472. left join ICSSORRFQRequestFrom2NORMALITEM e on e.RFQCODE=a.RFQCODE
  1473. left join ICSINVENTORY f on f.INVCODE=e.ITEMCODE
  1474. left join Sys_SRM_ItemsDetail h on h.F_ItemCode=A.purteam
  1475. where 1=1 " + sqlwhere;
  1476. ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  1477. if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  1478. {
  1479. return SqlHelper.FindTablePageBySql_OtherTempbyLOGUSER(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  1480. }
  1481. else
  1482. {
  1483. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1484. }
  1485. }
  1486. #endregion
  1487. #region 查询技术部需求单列表(子表)
  1488. public DataTable GetSubGridJsonICSSORRFQRequestFrom(string RFQCODE, ref Pagination jqgridparam, string WorkPoint)
  1489. {
  1490. DataTable dt = new DataTable();
  1491. List<DbParameter> parameter = new List<DbParameter>();
  1492. string sql = @"SELECT b.itemcode,b.itemname,b.ITEMTYPE,a.invstd,b.unit,b.REQUESTQUANTITY,b.memo ,c.RFQCODE
  1493. FROM ICSSORRFQRequestFrom2NORMALITEM b
  1494. left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
  1495. left join (select distinct ADDITION2,RFQCODE from icsSORRFQ2NORMALITEM) c on c.ADDITION2=b.RFQCODE
  1496. where b.RFQCODE='{0}'";
  1497. sql = string.Format(sql, RFQCODE);
  1498. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1499. }
  1500. #endregion
  1501. #region 技术部发布申请单
  1502. public string JSPublish(string json)
  1503. {
  1504. string msg = string.Empty;
  1505. string wheresql = "(";
  1506. string[] id = json.Split(',');
  1507. for (int i = 0; i < id.Length; i++)
  1508. {
  1509. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  1510. }
  1511. wheresql = wheresql.Trim(',') + ")";
  1512. //发送邮件通知供应商
  1513. string sql = "update ICSSORRFQRequestFrom set STATUS='Unallocated' where RFQCODE in " + wheresql;
  1514. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1515. if (count > 0)
  1516. {
  1517. msg = "发布成功!";
  1518. }
  1519. else
  1520. {
  1521. msg = "发布失败!";
  1522. }
  1523. return msg;
  1524. }
  1525. #endregion
  1526. #region 删除技术申请单
  1527. public string DELETEICSSORRFQRequestFrom(string json)
  1528. {
  1529. try
  1530. {
  1531. string wheresql = "(";
  1532. string[] id = json.Split(',');
  1533. for (int i = 0; i < id.Length; i++)
  1534. {
  1535. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  1536. }
  1537. wheresql = wheresql.Trim(',') + ")";
  1538. string sql = "delete from ICSSORRFQRequestFrom where RFQCODE in" + wheresql;
  1539. sql += " delete from ICSSORRFQRequestFrom2NORMALITEM where RFQCODE in" + wheresql;
  1540. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1541. if (count > 0)
  1542. {
  1543. return "删除成功!";
  1544. }
  1545. else
  1546. {
  1547. return "删除失败!";
  1548. }
  1549. }
  1550. catch (Exception ex)
  1551. {
  1552. return ex.Message + " 删除失败!";
  1553. }
  1554. }
  1555. #endregion
  1556. #region 生成申请单号
  1557. public string GetSercodeICSSORRFQRequestFrom(string workpoint)
  1558. {
  1559. string datetime = DateTime.Now.ToString("yyyyMMdd");
  1560. SqlParameter[] para = { new SqlParameter("@WorkPoint", workpoint), new SqlParameter("@TbName", "ICSSORRFQRequestFrom"), new SqlParameter("@CodeCol", "RFQCODE"), new SqlParameter("@Pre", "SQD" + datetime), new SqlParameter("@NumLen", 3) };
  1561. DataTable table = Repository().FindTableByProc("Addins_GetSerialCode", para);
  1562. return table.Rows[0][0].ToString();
  1563. }
  1564. #endregion
  1565. #region 生成询价单
  1566. public string GetRFQCODEICSSORRFQRequestFrom(string workpoint)
  1567. {
  1568. string datetime = DateTime.Now.ToString("yyyyMMdd");
  1569. SqlParameter[] para = { new SqlParameter("@WorkPoint", workpoint), new SqlParameter("@TbName", "ICSSORRFQ"), new SqlParameter("@CodeCol", "RFQCODE"), new SqlParameter("@Pre", "XJD" + datetime), new SqlParameter("@NumLen", 3) };
  1570. DataTable table = Repository().FindTableByProc("Addins_GetSerialCode", para);
  1571. return table.Rows[0][0].ToString();
  1572. }
  1573. #endregion
  1574. #region 查询申请物料信息
  1575. public DataTable GetInvTabICSSORRFQRequestFrom(string rfqno)
  1576. {
  1577. string sql = @"select b.companycode as 公司代码,b.COSTANALYSISTEMPLATE as 成本分析模板 ,b.CREATEDATE as 创建日期,
  1578. b.CreateTime as ,b.CREATEUSER as ,b.HASCOSTDETAILS as ,b.ISINCLUDETAX as ,
  1579. b.ITEMCLASSID as ,b.itemcode as ,b.itemname as ,
  1580. CASE b.ITEMTYPE WHEN 'Real' then '' else '' end as ,a.invstd as ,
  1581. b.logdate as ,b.logtime as ,b.LOGUSER as ,b.memo as ,b.PRINCINGITEMCODE as ,
  1582. b.REFERPRICE as ,b.CURRENCY as ,b.REQUESTQUANTITY as ,b.RFQCODE as ,
  1583. b.RFQITEMREFERCODE as ,b.startdate as ,b.Requirements as ,b.RFQITEMREFERCODE as HiddenFile,b.Status,
  1584. b.unit as ,B.ID,b.workpoint,b.InvDesc AS ,b.ManuFacturer AS ,b.ManuFacturerInvCode AS ,b.YearQty AS ,b.ProjectInfo AS ,b.MaterialGrade AS ,b.CustomerSpecified AS ,b.TechnicalDirector AS ,c.Vendorsing,b.EATTRIBUTE18
  1585. from ICSSORRFQRequestFrom2NORMALITEM b
  1586. left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
  1587. left JOIN dbo.ICSSORRFQ2NORMALITEM c ON b.RFQCODE=c.ADDITION2 AND b.itemcode=c.itemcode
  1588. where b.RFQCODE='" + rfqno + @"'
  1589. ";
  1590. string ss = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
  1591. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Purchasing Staff"))
  1592. {
  1593. sql += " AND b.Purchasing LIKE '%" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "%'";
  1594. }
  1595. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  1596. DataTable dtCloned = table.Clone();
  1597. foreach (DataColumn col in dtCloned.Columns)
  1598. {
  1599. col.DataType = typeof(string);
  1600. }
  1601. foreach (DataRow row in table.Rows)
  1602. {
  1603. DataRow newrow = dtCloned.NewRow();
  1604. foreach (DataColumn column in dtCloned.Columns)
  1605. {
  1606. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  1607. }
  1608. dtCloned.Rows.Add(newrow);
  1609. }
  1610. if (Invmes.Rows.Count > 0)
  1611. {
  1612. dtCloned.Merge(Invmes, false);
  1613. }
  1614. return dtCloned;
  1615. }
  1616. #endregion
  1617. #region 查询申请单主表信息,修改
  1618. public DataRow GetICSSORRFQRequestFromrow(string Rfqcode)
  1619. {
  1620. string sql = @"select begindate,COSTANALYSISTEMPLATE,costtype,CONVERT(VARCHAR(10),
  1621. createdate,120)AS createdate,createtime,createuser,ISUNIFYANALYSISTEMPLATE,
  1622. logdate,logtime,loguser,poct,a.purchugcode,b.PURCHUGNAME,rfqname,status,
  1623. purteam,a.workpoint,companycode,rfqcode,memo,a.FileName,a.HASCOSTDETAILS
  1624. from ICSSORRFQRequestFrom a
  1625. LEFT JOIN dbo.ICSPurChug b ON a.PURCHUGCODE=b.PURCHUGCODE
  1626. where rfqcode='" + Rfqcode + "'";
  1627. DataTable table = Repository().FindTableBySql(sql, null);
  1628. return table.Rows[0];
  1629. }
  1630. #endregion
  1631. #region 获取申请单附件信息
  1632. public DataTable GetICSSORRFQRequestFromVenDorFile(string rfqcode)
  1633. {
  1634. //string Vendor = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
  1635. DataTable dt = new DataTable();
  1636. string sql = @"SELECT Filename FROM ICSSORRFQRequestFrom WHERE RFQCODE='{0}'";
  1637. sql = string.Format(sql, rfqcode);
  1638. dt = SqlHelper.GetDataTableBySql(sql);
  1639. return dt;
  1640. }
  1641. #endregion
  1642. #region 删除申请的物料信息
  1643. public string DeleteInvRowICSSORRFQRequestFrom(string keyValue)
  1644. {
  1645. string msg = string.Empty;
  1646. try
  1647. {
  1648. //string wheresql = "(";
  1649. ////string[] id = json.Split(',');
  1650. ////for (int i = 0; i < id.Length; i++) {
  1651. //// wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  1652. ////}
  1653. //wheresql = wheresql.Trim(',') + ")";
  1654. string sql = "delete from ICSSORRFQRequestFrom2NORMALITEM where id in ('" + keyValue + "')";
  1655. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1656. }
  1657. catch (Exception ex)
  1658. {
  1659. msg = ex.Message + " 删除失败!";
  1660. }
  1661. return msg;
  1662. }
  1663. #endregion
  1664. #region 保存技术申请单方法
  1665. /// <summary>
  1666. /// 新增询价单
  1667. /// </summary>
  1668. /// <param name="details"></param>
  1669. public void AddICSSORRFQRequestFromByPN(ICSSORRFQ details)
  1670. {
  1671. string sql = string.Empty;
  1672. try
  1673. {
  1674. List<ICSSORRFQRequestFrom2NORMALITEM> list_BD = JsonConvert.DeserializeObject<List<ICSSORRFQRequestFrom2NORMALITEM>>(details.arrayBidDocBD);
  1675. //List<ICSSORRFQ2VENDOR> list_GYS = JsonConvert.DeserializeObject<List<ICSSORRFQ2VENDOR>>(details.arrayBidDocGYS);
  1676. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  1677. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  1678. conn.Open();
  1679. SqlTransaction sqlTran = conn.BeginTransaction();
  1680. SqlCommand cmd = new SqlCommand();
  1681. cmd.Transaction = sqlTran;
  1682. cmd.Connection = conn;
  1683. try
  1684. {
  1685. string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1686. string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1687. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1688. if (details.RFQstatus == "2")
  1689. {
  1690. sql = "select * from ICSSORRFQRequestFrom where RFQCODE='" + details.RFQCODE + "' and WorkPoint='" + details.WorkPoint + "'";
  1691. DataTable dt = SqlCommandHelper.SQlReturnData(sql, cmd);
  1692. if (dt != null && dt.Rows.Count > 0)
  1693. {
  1694. throw new Exception("询价单已存在!");
  1695. }
  1696. }
  1697. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQRequestFrom WHERE RFQCODE=@RFQCODE and WorkPoint=@workpoint)
  1698. BEGIN
  1699. INSERT INTO dbo.ICSSORRFQRequestFrom(
  1700. begindate,COSTANALYSISTEMPLATE,costtype,createdate,createtime,
  1701. createuser,ISUNIFYANALYSISTEMPLATE,logdate,logtime,loguser,
  1702. poct,rfqname,status,
  1703. workpoint,companycode,rfqcode,memo,HASCOSTDETAILS,FileName
  1704. )
  1705. VALUES (@begindate,@COSTANALYSISTEMPLATE,@costtype,getdate(),getdate() ,
  1706. @createuser,@ISUNIFYANALYSISTEMPLATE,getdate(),getdate(),@loguser,
  1707. @poct,@rfqname,@status,
  1708. @workpoint,@companycode,@rfqcode,@memo,@HASCOSTDETAILS,@FileName)
  1709. END
  1710. ELSE
  1711. BEGIN
  1712. UPDATE dbo.ICSSORRFQRequestFrom SET
  1713. begindate=@begindate ,
  1714. COSTANALYSISTEMPLATE=@COSTANALYSISTEMPLATE ,
  1715. costtype=@costtype,
  1716. ISUNIFYANALYSISTEMPLATE=@ISUNIFYANALYSISTEMPLATE ,
  1717. logdate=getdate() ,
  1718. logtime=getdate() ,
  1719. loguser=@loguser,
  1720. rfqname=@rfqname ,
  1721. status=@status,
  1722. memo=@memo,
  1723. HASCOSTDETAILS=@HASCOSTDETAILS,
  1724. FileName=@FileName
  1725. WHERE RFQCODE=@RFQCODE AND WorkPoint=@workpoint
  1726. END";
  1727. SqlParameter[] sp_Detail = {
  1728. new SqlParameter("@begindate",details.BEGINDATE),
  1729. new SqlParameter("@COSTANALYSISTEMPLATE",details.COSTANALYSISTEMPLATE),
  1730. new SqlParameter("@costtype",details.COSTTYPE),
  1731. new SqlParameter("@createuser",MuserName),
  1732. new SqlParameter("@ISUNIFYANALYSISTEMPLATE",details.ISUNIFYANALYSISTEMPLATE),
  1733. new SqlParameter("@loguser",MuserName),
  1734. //new SqlParameter("@ZTBCount",details.ZTBCount),
  1735. new SqlParameter("@poct",details.POCT),
  1736. //new SqlParameter("@purchugcode",details.PURCHUGCODE),
  1737. new SqlParameter("@rfqname",details.RFQNAME),
  1738. new SqlParameter("@status",details.STATUS=="1"?"Publish":"New"),
  1739. //new SqlParameter("@PURTeam",details.PURTeam),
  1740. new SqlParameter("@workpoint",details.WorkPoint),
  1741. new SqlParameter("@companycode",details.WorkPoint),
  1742. new SqlParameter("@rfqcode",details.RFQCODE),
  1743. new SqlParameter("@memo",details.MEMO),
  1744. new SqlParameter("@HASCOSTDETAILS",details.HASCOSTDETAILS),
  1745. new SqlParameter("@FileName",details.FileName),
  1746. //new SqlParameter("@ENDDATE",details.ENDDATE)
  1747. };
  1748. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
  1749. #region 标的
  1750. foreach (ICSSORRFQRequestFrom2NORMALITEM BD in list_BD)
  1751. {
  1752. sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQRequestFrom2NORMALITEM WHERE ID='" + BD.ID + @"' and WorkPoint='" + BD.WorkPoint + @"')
  1753. BEGIN
  1754. INSERT INTO dbo.ICSSORRFQRequestFrom2NORMALITEM(
  1755. COMPANYCODE,COSTANALYSISTEMPLATE,CREATEDATE,CREATETIME,CREATEUSER,
  1756. HASCOSTDETAILS,ISINCLUDETAX,ITEMCLASSID,ITEMCODE,ITEMNAME,
  1757. ITEMTYPE,LOGDATE,LOGTIME,LOGUSER,MEMO,
  1758. PRINCINGITEMCODE,REFERPRICE,CURRENCY,REQUESTQUANTITY,RFQCODE,
  1759. RFQITEMREFERCODE,UNIT,ID,workpoint,
  1760. Requirements,InvStd,InvDesc,ManuFacturer,ManuFacturerInvCode,YearQty,ProjectInfo
  1761. ,MaterialGrade,CustomerSpecified,TechnicalDirector)
  1762. VALUES (
  1763. '" + details.WorkPoint + @"','" + BD.COSTANALYSISTEMPLATE + @"',getdate(),getdate(),'" + MuserName + @"',
  1764. '" + BD.HASCOSTDETAILS + @"','" + BD.ISINCLUDETAX + @"','" + BD.ITEMCLASSID + @"','" + BD.ITEMCODE + @"','" + BD.ITEMNAME + @"',
  1765. '" + BD.ITEMTYPE + @"',getdate(),getdate(),'" + MuserName + @"','" + BD.MEMO + @"',
  1766. '" + BD.PRINCINGITEMCODE + @"', " + Convert.ToDecimal(BD.REFERPRICE) + @",'" + BD.CURRENCY + @"'," + Convert.ToDecimal(BD.REQUESTQUANTITY) + @",'" + details.RFQCODE + @"','" + BD.RFQITEMREFERCODE + @"','" + BD.UNIT + @"',NewID(),'" + details.WorkPoint + @"','" + BD.Requirements + @"','" + BD.InvStd + @"','" + BD.InvDesc + @"','" + BD.ManuFacturer + @"', '" + BD.ManuFacturerInvCode + @"', '" + BD.YearQty + @"', '" + BD.ProjectInfo + @"', '" + BD.MaterialGrade + @"', '" + BD.CustomerSpecified + @"','" + BD.TechnicalDirector + @"'
  1767. )
  1768. END
  1769. ELSE
  1770. BEGIN
  1771. UPDATE dbo.ICSSORRFQRequestFrom2NORMALITEM SET
  1772. MEMO='" + BD.MEMO + @"' ,
  1773. Requirements='" + BD.Requirements + @"' ,
  1774. REQUESTQUANTITY=" + Convert.ToDecimal(BD.REQUESTQUANTITY) + @",
  1775. HASCOSTDETAILS='" + BD.HASCOSTDETAILS + @"' ,
  1776. RFQITEMREFERCODE='" + BD.RFQITEMREFERCODE + @"' ,
  1777. LOGDATE=getdate() ,
  1778. LOGTIME=getdate(),
  1779. LOGUSER='" + MuserName + @"',
  1780. Status=NULL
  1781. WHERE ID='" + BD.ID + @"' AND WorkPoint='" + BD.WorkPoint + @"'
  1782. END
  1783. ";
  1784. SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
  1785. }
  1786. #endregion
  1787. #region 临时物料
  1788. foreach (ICSSORRFQRequestFrom2NORMALITEM BD in list_BD)
  1789. {
  1790. if (BD.Source == "手工")
  1791. {
  1792. sql = @"INSERT INTO dbo.ICSINVENTORY
  1793. (
  1794. ID
  1795. ,INVCODE
  1796. ,INVNAME
  1797. ,INVUOM
  1798. ,INVSTD
  1799. ,INVTYPE
  1800. ,INVCLASS
  1801. ,INVEXPORTIMPORT
  1802. ,MUSER
  1803. ,MUSERName
  1804. ,MTIME
  1805. ,WorkPoint
  1806. )
  1807. VALUES (
  1808. @ID
  1809. ,@INVCODE
  1810. ,@INVNAME
  1811. ,@INVUOM
  1812. ,@INVSTD
  1813. ,@INVTYPE
  1814. ,@INVCLASS
  1815. ,@INVEXPORTIMPORT
  1816. ,@MUSER
  1817. ,@MUSERName
  1818. ,Getdate()
  1819. ,@WorkPoint
  1820. )
  1821. ";
  1822. SqlParameter[] sp_INv = {
  1823. new SqlParameter("@ID",BD.ID),
  1824. new SqlParameter("@INVCODE",BD.ITEMCODE),
  1825. new SqlParameter("@INVNAME",BD.ITEMNAME),
  1826. new SqlParameter("@INVUOM",BD.UNIT),
  1827. new SqlParameter("@INVSTD",BD.InvStd),
  1828. new SqlParameter("@INVTYPE","生产类型"),
  1829. new SqlParameter("@INVCLASS","生产类型"),
  1830. new SqlParameter("@INVEXPORTIMPORT","生产类型"),
  1831. new SqlParameter("@WorkPoint",details.WorkPoint),
  1832. new SqlParameter("@MUSER",Muser),
  1833. new SqlParameter("@MUSERName",MuserName),
  1834. //new SqlParameter("@WorkPoint",BD.cCode)
  1835. };
  1836. SqlCommandHelper.CmdExecuteNonQuery(sql, sp_INv, cmd);
  1837. }
  1838. }
  1839. #endregion
  1840. cmd.Transaction.Commit();
  1841. }
  1842. catch (Exception ex)
  1843. {
  1844. cmd.Transaction.Rollback();
  1845. throw new Exception(ex.Message);
  1846. }
  1847. finally
  1848. {
  1849. if (conn.State == ConnectionState.Open)
  1850. {
  1851. conn.Close();
  1852. }
  1853. conn.Dispose();
  1854. }
  1855. }
  1856. catch (Exception ex)
  1857. {
  1858. throw new Exception(ex.Message);
  1859. }
  1860. }
  1861. #endregion
  1862. public DataTable GetInvTable(string rfqno)
  1863. {
  1864. string sql = @"select companycode as 公司代码,COSTANALYSISTEMPLATE as 成本分析模板 ,CREATEDATE as 创建日期,
  1865. CreateTime as ,CREATEUSER as ,HASCOSTDETAILS as ,ISINCLUDETAX as ,
  1866. ITEMCLASSID as ,b.itemcode as ,b.itemname as ,
  1867. CASE b.ITEMTYPE WHEN 'Real' then '' else '' end as ,a.invstd as ,
  1868. logdate as ,logtime as ,LOGUSER as ,memo as ,PRINCINGITEMCODE as ,
  1869. REFERPRICE as ,CURRENCY as ,REQUESTQUANTITY as ,RFQCODE as ,
  1870. RFQITEMREFERCODE as ,startdate as ,Requirements as ,RFQITEMREFERCODE as HiddenFile,Status,
  1871. unit as ,B.ID,b.workpoint,b.InvDesc AS ,b.ManuFacturer AS ,ManuFacturerInvCode AS ,YearQty AS ,ProjectInfo AS ,MaterialGrade AS ,CustomerSpecified AS ,TechnicalDirector AS
  1872. from icsSORRFQ2NORMALITEM b
  1873. left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
  1874. where RFQCODE='" + rfqno + @"'
  1875. ";
  1876. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  1877. DataTable dtCloned = table.Clone();
  1878. foreach (DataColumn col in dtCloned.Columns)
  1879. {
  1880. col.DataType = typeof(string);
  1881. }
  1882. foreach (DataRow row in table.Rows)
  1883. {
  1884. DataRow newrow = dtCloned.NewRow();
  1885. foreach (DataColumn column in dtCloned.Columns)
  1886. {
  1887. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  1888. }
  1889. dtCloned.Rows.Add(newrow);
  1890. }
  1891. if (Invmes.Rows.Count > 0)
  1892. {
  1893. dtCloned.Merge(Invmes, false);
  1894. }
  1895. return dtCloned;
  1896. }
  1897. #region 生效价格查询
  1898. /// <summary>
  1899. /// 生效价格查询
  1900. /// </summary>
  1901. /// <param name="queryJson"></param>
  1902. /// <param name="jqgridparam"></param>
  1903. /// <returns></returns>
  1904. public DataTable GetGridPriceByPN(string queryJson, ref Pagination jqgridparam)
  1905. {
  1906. DataTable dt = new DataTable();
  1907. var queryParam = queryJson.ToJObject();
  1908. List<DbParameter> parameter = new List<DbParameter>();
  1909. string sql = @" select distinct a.RFQCODE,a.RFQCODE AS FPRFQCODE ,d.ITEMCODE,d.ITEMNAME,c.VENDORCODE,CASE WHEN ISNULL(e.QUOBUYERPRICE,0)<>0 THEN e.QUOBUYERPRICE ELSE e.QUOPRICE END AS QUOPRICE,e.UNIT,
  1910. e.CURRENCY,f.invSTD,j.VenName cVenName,j.VenCode cVenCode,e.QUOSTATUS,a.WorkPoint
  1911. FROM ICSSORRFQ a
  1912. LEFT JOIN ICSSORQUOTATION c ON a.RFQCODE= c.RFQCODE
  1913. left join dbo.ICSSORRFQ2NORMALITEM d on a.RFQCODE=d.RFQCODE
  1914. left join ICSINVENTORY f on d.ITEMCODE=f.INVCODE AND a.WorkPoint=f.WorkPoint
  1915. left join ICSVendor j on c.VENDORCODE=j.venCode AND c.WorkPoint=j.WorkPoint
  1916. left join icsSORQUODETAILNORMAL e on c.QUOTATIONCODE=e.QUOTATIONCODE AND d.ITEMCODE=e.ITEMCODE
  1917. where e.QUOSTATUS='PricingApprove' and isnull(d.ITEMCODE,'' )<>''
  1918. ";
  1919. if (!string.IsNullOrWhiteSpace(queryJson))
  1920. {
  1921. if (!string.IsNullOrWhiteSpace(queryParam["RFQCODE"].ToString()))
  1922. {
  1923. sql += " and a.RFQCODE like '%" + queryParam["RFQCODE"].ToString() + "%' ";
  1924. }
  1925. //if (!string.IsNullOrWhiteSpace(queryParam["PURCHUG"].ToString()))
  1926. //{
  1927. // sql += " and c.PURCHUGCODE like '%" + queryParam["PURCHUG"].ToString() + "%' ";
  1928. //}
  1929. if (!string.IsNullOrWhiteSpace(queryParam["PURTEAM"].ToString()))
  1930. {
  1931. sql += " and h.F_ItemName like '%" + queryParam["PURTEAM"].ToString() + "%' ";
  1932. }
  1933. if (!string.IsNullOrWhiteSpace(queryParam["ITEMCODE"].ToString()))
  1934. {
  1935. sql += " and d.ITEMCODE like '%" + queryParam["ITEMCODE"].ToString() + "%' ";
  1936. }
  1937. if (!string.IsNullOrWhiteSpace(queryParam["ITEMName"].ToString()))
  1938. {
  1939. sql += " and d.ITEMNAME like '%" + queryParam["ITEMName"].ToString() + "%' ";
  1940. }
  1941. if (!string.IsNullOrWhiteSpace(queryParam["INVSTD"].ToString()))
  1942. {
  1943. sql += " and f.INVSTD like '%" + queryParam["INVSTD"].ToString() + "%' ";
  1944. }
  1945. if (!string.IsNullOrWhiteSpace(queryParam["Vencode"].ToString()))
  1946. {
  1947. sql += " and j.VenCode in( '" + queryParam["Vencode"].ToString() + "') ";
  1948. }
  1949. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  1950. {
  1951. sql += " and j.VenName in( '" + queryParam["VenName"].ToString() + "') ";
  1952. }
  1953. }
  1954. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  1955. {
  1956. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  1957. }
  1958. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  1959. //{
  1960. // sql += " and VENDORCODE='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  1961. //}
  1962. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1963. }
  1964. #endregion
  1965. /// <summary>
  1966. /// 定价通过
  1967. /// </summary>
  1968. /// <param name="json"></param>
  1969. /// <returns></returns>
  1970. ///
  1971. public string AgreeByPN(string json)
  1972. {
  1973. string ERPOpen = ConfigurationManager.ConnectionStrings["ERPOpen"].ConnectionString;
  1974. DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
  1975. string msg = "";
  1976. try
  1977. {
  1978. string GGUID = Guid.NewGuid().ToString();
  1979. var jobject = JArray.Parse(json);
  1980. bool IsInput;
  1981. string MessAge = string.Empty;
  1982. for (int i = 0; i < jobject.Count; i++)
  1983. {
  1984. var resultss = jobject[i]["ZBVendorCode"].ToArray();
  1985. ////string[] resultss = (string[])jobject[i]["ZBVendorCode"]//企业信息
  1986. //string[] resultss = (string[])VendorCode;
  1987. //var jobjects = JArray.Parse(jobject[i]["ZBVendorCode"].ToString());
  1988. for (int s = 0; s < resultss.Length; s++)
  1989. {
  1990. string Vendor = resultss[s].ToString();
  1991. string sql = "";
  1992. sql = @"SELECT ITEMCODE,ITEMNAME,UNIT,1 AS bTaxCost,1 AS iSupplyType,'人民币' cExch_Name,a.WorkPoint,'' AS dEnableDate,'' AS dDisableDate
  1993. ,a.QUOTATIONCODE,b.VENDORCODE FROM icsSORQUODETAILNORMAL a
  1994. LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  1995. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  1996. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  1997. DataTable dt = Repository().FindTableBySql(sql.ToString());
  1998. 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
  1999. LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  2000. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  2001. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  2002. DataTable dtD = Repository().FindTableBySql(sql.ToString());
  2003. List<ICSSSSROCS> asnlist = new List<ICSSSSROCS>();
  2004. for (int k = 0; k < dt.Rows.Count; k++)
  2005. {
  2006. // if (ERPOpen == "true")
  2007. // {
  2008. // ICSSSSROCS asn = new ICSSSSROCS();
  2009. // asn.ID = GGUID;
  2010. // asn.cInvCode = dt.Rows[k]["ITEMCODE"].ToString();
  2011. // asn.cVenCode = dt.Rows[k]["VENDORCODE"].ToString();
  2012. // asn.cComUnitCode = dt.Rows[k]["UNIT"].ToString();
  2013. // //List.CompanyCode = EnCode;
  2014. // asn.bTaxCost = Convert.ToInt32(dt.Rows[k]["bTaxCost"].ToString());
  2015. // asn.iSupplyType = Convert.ToInt32(dt.Rows[k]["iSupplyType"].ToString());
  2016. // asn.cExch_Name = dt.Rows[k]["cExch_Name"].ToString();
  2017. // asn.WorkPoint = dt.Rows[k]["WorkPoint"].ToString();
  2018. // asn.dEnableDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
  2019. // asn.dDisableDate = dDisableDate;
  2020. // DataRow[] drs = dtD.Select("QUOTATIONCODE='" + dt.Rows[k]["QUOTATIONCODE"].ToString() + "'");
  2021. // for (int j = 0; j < drs.Length; j++)
  2022. // {
  2023. // CreateVendorInventoryPriceDetailEntity DetailList = new CreateVendorInventoryPriceDetailEntity();
  2024. // DetailList.ID = GGUID;
  2025. // DetailList.iLowerLimit = float.Parse(drs[j]["iLowerLimit"].ToString());
  2026. // DetailList.iUpperLimit = float.Parse(drs[j]["iUpperLimit"].ToString());
  2027. // DetailList.iUnitPrice = float.Parse(drs[j]["iUnitPrice"].ToString());
  2028. // DetailList.iTaxRate = float.Parse(drs[j]["iTaxRate"].ToString());
  2029. // DetailList.iTaxUnitPrice = float.Parse(drs[j]["iTaxUnitPrice"].ToString()); ;
  2030. // DetailList.WorkPoint = drs[j]["WorkPoint"].ToString();
  2031. // asn.list.Add(DetailList);
  2032. // }
  2033. // asnlist.Add(asn);
  2034. // string input = JsonConvert.SerializeObject(asnlist);
  2035. // string APIURL = ConfigurationManager.ConnectionStrings["XBJURL"].ConnectionString + "XBJInv_PriceByYL";
  2036. // //string APIURL = "http://172.16.12.157:8100/api/XBJInv_Price";
  2037. // //string APIURL = "http://localhost:19944//api/XBJInv_Price";
  2038. // string result = HttpPost(APIURL, input);
  2039. // JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  2040. // MessAge = Obj["Success"].ToString();
  2041. // string Success = Obj["Message"].ToString();
  2042. // if (MessAge.ToUpper() == "FALSE")
  2043. // {
  2044. // IsInput = false;
  2045. // msg = Success;
  2046. // }
  2047. // else
  2048. // {
  2049. // IsInput = true;
  2050. // sql = @"update a
  2051. // set a.QUOSTATUS='PricingApprove'
  2052. // from icsSORQUODETAILNORMAL a
  2053. //left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  2054. // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  2055. // where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  2056. // 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"] + "'";
  2057. // int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  2058. // if (count <= 0)
  2059. // msg = "保存失败" + MessAge;
  2060. // else
  2061. // msg = "保存成功";
  2062. // }
  2063. // }
  2064. // else
  2065. // {
  2066. IsInput = true;
  2067. sql = @"update a
  2068. set a.QUOSTATUS='PricingApprove'
  2069. from icsSORQUODETAILNORMAL a
  2070. left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
  2071. LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
  2072. where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
  2073. 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"] + "'";
  2074. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  2075. if (count <= 0)
  2076. msg = "保存失败" + MessAge;
  2077. else
  2078. msg = "保存成功";
  2079. }
  2080. // }
  2081. //}
  2082. }
  2083. }
  2084. }
  2085. catch (Exception ex)
  2086. {
  2087. return ex.Message;
  2088. }
  2089. return msg;
  2090. }
  2091. public DataTable SetData_PR(String savePath, string ID, string BidCode, string WorkPoint)
  2092. {
  2093. string msg = "";
  2094. string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  2095. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  2096. conn.Open();
  2097. SqlTransaction sqlTran = conn.BeginTransaction();
  2098. SqlCommand cmd = new SqlCommand();
  2099. cmd.Transaction = sqlTran;
  2100. cmd.Connection = conn;
  2101. DataTable data = null;
  2102. //数据获取
  2103. try
  2104. {
  2105. string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  2106. string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  2107. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2108. string sql = "";
  2109. int rowNO = 0;
  2110. data = FileToExcel.ExcelToTable(savePath);
  2111. var parent = data.DefaultView.ToTable(true, "物料代码", "物料名称", "计划采购数量", "单位", "交期", "物料规格", "物料描述", "制造商编码", "制造商", "年用量", "项目信息", "物料等级", "是否为客户指定", "技术负责人","备注");
  2112. foreach (DataRow dr in parent.Rows)
  2113. {
  2114. rowNO = rowNO + 1;
  2115. string GUID = Guid.NewGuid().ToString();
  2116. if (string.IsNullOrWhiteSpace(dr["物料代码"].ToString()))
  2117. throw new Exception("物料代码不能为空!");
  2118. if (string.IsNullOrWhiteSpace(dr["物料名称"].ToString()))
  2119. throw new Exception("物料名称不能为空!");
  2120. if (string.IsNullOrWhiteSpace(dr["计划采购数量"].ToString()))
  2121. throw new Exception("计划采购数量不能为空!");
  2122. if (string.IsNullOrWhiteSpace(dr["单位"].ToString()))
  2123. throw new Exception("单位不能为空!");
  2124. if (string.IsNullOrWhiteSpace(dr["交期"].ToString()))
  2125. throw new Exception("交期不能为空!");
  2126. if (string.IsNullOrWhiteSpace(dr["物料规格"].ToString()))
  2127. throw new Exception("物料规格不能为空!");
  2128. if (string.IsNullOrWhiteSpace(dr["物料描述"].ToString()))
  2129. throw new Exception("物料描述不能为空!");
  2130. if (string.IsNullOrWhiteSpace(dr["制造商编码"].ToString()))
  2131. throw new Exception("制造商编码不能为空!");
  2132. if (string.IsNullOrWhiteSpace(dr["制造商"].ToString()))
  2133. throw new Exception("制造商不能为空!");
  2134. if (string.IsNullOrWhiteSpace(dr["年用量"].ToString()))
  2135. throw new Exception("年用量不能为空!");
  2136. if (string.IsNullOrWhiteSpace(dr["项目信息"].ToString()))
  2137. throw new Exception("项目信息不能为空!");
  2138. if (string.IsNullOrWhiteSpace(dr["物料等级"].ToString()))
  2139. throw new Exception("物料等级不能为空!");
  2140. if (string.IsNullOrWhiteSpace(dr["是否为客户指定"].ToString()))
  2141. throw new Exception("是否为客户指定不能为空!");
  2142. if (string.IsNullOrWhiteSpace(dr["技术负责人"].ToString()))
  2143. throw new Exception("技术负责人不能为空!");
  2144. //string ishave = ISHave(dr["物料编码"].ToString());
  2145. //if (ishave == "1")
  2146. //{
  2147. // msg += "物料" + dr["物料编码"].ToString() + "不存在!";
  2148. // continue;
  2149. //}
  2150. //else
  2151. //{
  2152. // sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSBidDocBD WHERE ID=@ID)
  2153. // BEGIN
  2154. // INSERT INTO dbo.ICSBidDocBD( ID, BidCode, InvCode, ItemType, Remark, Quantity, DeliveryTime, RowNo,
  2155. // WorkPoint, MUSER, MUSERName, MTIME)
  2156. // VALUES ( @ID, @BidCode, @InvCode, @ItemType, @Remark, @Quantity, @DeliveryTime, @RowNo,
  2157. // @WorkPoint, @MUSER, @MUSERName, GETDATE())
  2158. // END
  2159. // ELSE
  2160. // BEGIN
  2161. // UPDATE dbo.ICSBidDocBD SET BidCode=@BidCode,InvCode=@InvCode,ItemType=@ItemType,
  2162. // Remark=@Remark,Quantity=@Quantity , DeliveryTime=@DeliveryTime,RowNo=@RowNo
  2163. // WHERE ID=@ID
  2164. // END";
  2165. // SqlParameter[] sp_BD = {
  2166. // new SqlParameter("@ID",GUID),
  2167. // new SqlParameter("@BidCode",BidCode),
  2168. // new SqlParameter("@InvCode",dr["物料编码"].ToString()),
  2169. // new SqlParameter("@ItemType",""),
  2170. // new SqlParameter("@Remark",dr["备注"].ToString()),
  2171. // new SqlParameter("@Quantity",dr["计划采购数量"].ToString()),
  2172. // new SqlParameter("@DeliveryTime",dr["交期"].ToString()),
  2173. // new SqlParameter("@RowNo",rowNO),
  2174. // new SqlParameter("@WorkPoint",WorkPoint),
  2175. // new SqlParameter("@MUSER",Muser),
  2176. // new SqlParameter("@MUSERName",MuserName),
  2177. // //sql += "Insert Into ICSFManger Values('{0}','{1}','{2}','{3}','{4}','','{9}',CONVERT(varchar(100), '{10}', 23))";
  2178. // //DataRow[] drs = data.Select("供应商编码+供应商名称+物料编码+物料名称='" + dr["供应商编码"].ToString() + dr["供应商名称"].ToString() + dr["物料编码"].ToString() + dr["物料名称"].ToString() + "'");
  2179. // //foreach (DataRow de in drs)
  2180. // //{
  2181. // // foreach (DataColumn dc in data.Columns)
  2182. // // {
  2183. // // if (dc.Caption == "供应商编码" || dc.Caption == "供应商名称" || dc.Caption == "物料编码" || dc.Caption == "物料名称" || dc.Caption == "交货量" || dc.Caption == "排程日期")
  2184. // // continue;
  2185. // // sql += @"Insert INto ICSFMangerDetail Values ('{5}','{6}','','{7}',{8},CONVERT(varchar(100), '{10}', 23),'{9}')";
  2186. // // sql = string.Format(sql, GUID, dr["供应商编码"].ToString(), dr["供应商名称"].ToString(), dr["物料编码"].ToString(), dr["物料名称"].ToString(), GUID, dc.Caption, de["交货量"].ToString(), de[dc.Caption].ToString(), MUSERNAME, DateTime.Now);
  2187. // // }
  2188. // //}
  2189. // };
  2190. // SqlCommandHelper.CmdExecuteNonQuery(sql, sp_BD, cmd);
  2191. // }
  2192. ////}
  2193. //cmd.Transaction.Commit();
  2194. //msg += "导入成功";
  2195. }
  2196. }
  2197. catch (Exception ex)
  2198. {
  2199. throw new Exception("" + ex.Message + "!");
  2200. }
  2201. finally
  2202. {
  2203. if (conn.State == ConnectionState.Open)
  2204. {
  2205. conn.Close();
  2206. }
  2207. conn.Dispose();
  2208. }
  2209. return data;
  2210. }
  2211. public string ISHave(string InvCode)
  2212. {
  2213. string sql = @"SELECT * FROM ICSInventory WHERE InvCode='" + InvCode + "'";
  2214. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2215. if (dt != null && dt.Rows.Count > 0)
  2216. {
  2217. return "0";
  2218. }
  2219. else
  2220. {
  2221. return "1";
  2222. }
  2223. }
  2224. #region 获取分配时自动带出采购员
  2225. public string GetPurchasing(string VenCode)
  2226. {
  2227. string sql = string.Empty;
  2228. string Purchasing = "";
  2229. string msg = string.Empty;
  2230. try
  2231. {
  2232. try
  2233. {
  2234. sql = @"SELECT TOP 1 MAX(LOGTIME),Purchasing FROM dbo.ICSSORRFQ2NORMALITEM WHERE ITEMCODE='{0}' AND Purchasing IS NOT NULL GROUP BY Purchasing ";
  2235. sql = string.Format(sql, VenCode);
  2236. DataTable dtID = SqlHelper.GetDataTableBySql(sql);
  2237. if (dtID != null && dtID.Rows.Count > 0)
  2238. {
  2239. Purchasing = dtID.Rows[0]["Purchasing"].ToString();
  2240. }
  2241. }
  2242. catch (Exception ex)
  2243. {
  2244. throw new Exception(ex.Message);
  2245. }
  2246. return Purchasing;
  2247. }
  2248. catch (Exception ex)
  2249. {
  2250. throw new Exception(ex.Message);
  2251. }
  2252. }
  2253. #endregion
  2254. public DataTable GetVenDorFileSSORByPN(string FPRFQCODE)
  2255. {
  2256. DataTable dt = new DataTable();
  2257. string sql = @"
  2258. SELECT b.GYSFile,b.VENDORCODE,b.QUOTATIONCODE,c.F_Account FROM ICsSORRFQ a
  2259. LEFT JOIN ICSSORQUOTATION b ON a.RFQCODE=b.RFQCODE AND a.workpoint=b.WorkPoint
  2260. left join Sys_SRM_User c on b.VENDORCODE=c.F_VenCode
  2261. WHERE a.RFQCODE='{0}'";
  2262. sql = string.Format(sql, FPRFQCODE);
  2263. dt = SqlHelper.GetDataTableBySql(sql);
  2264. return dt;
  2265. }
  2266. public DataTable SORRFQCourseHistoryInfoCahrsByPN(string FPRFQCODE, string workpoint, string ITEMCODE)
  2267. {
  2268. string sql = @" SELECT
  2269. DISTINCT
  2270. 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
  2271. FROM icsSORQUOTATION b
  2272. LEFT JOIN icsSORRFQ2VENDOR e ON b.RFQCODE=e.RFQCODE AND b.WorkPoint=e.WorkPoint AND b.VENDORCODE=e.VENDORCODE
  2273. LEFT JOIN icsSORQUODETAILNORMAL c ON c.RFQCODE=e.RFQCODE AND e.WorkPoint=c.WorkPoint AND c.QUOTATIONCODE=b.QUOTATIONCODE
  2274. LEFT JOIN dbo.ICSQuoteHistory a ON a.QuotationID=c.ID AND a.WorkPoint=c.WorkPoint
  2275. LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
  2276. WHERE c.RFQCODE='{0}' AND c.workpoint='{1}' AND c.ITEMCODE ='{2}' ORDER BY a.CreateTime ASC ";
  2277. sql = string.Format(sql, FPRFQCODE, workpoint, ITEMCODE);
  2278. return Repository().FindTableBySql(sql.ToString());
  2279. }
  2280. public DataTable GetGridMaterialByPN(ref Pagination jqgridparam, string ITEMCODE, string VenCode, string FPRFQCODE)
  2281. {
  2282. DataTable dt = new DataTable();
  2283. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  2284. List<DbParameter> parameter = new List<DbParameter>();
  2285. string sql = @" select a.QUOSTATUS,a.ITEMCODE ,a.ITEMNAME,b.VENDORCODE,CASE WHEN ISNULL(a.QUOBUYERPRICE,0)<>0 THEN a.QUOBUYERPRICE ELSE a.QUOPRICE END AS QUOPRICE,a.UNIT,a.CURRENCY,hh.PURCHUGNAME,j.VenName,
  2286. dd.TAXRATECODE,cc.paymentClause,a.COSTDETAILSREFERCODE,h.F_ItemName as PURTEAM,
  2287. case when isnull(a.COMPARECODE,'')='' then '' else '' end as Sources,
  2288. case when isnull(a.COMPARECODE,'')='' then a.RFQCODE else a.COMPARECODE end as SourcesNum,ii.INVSTD as INVTYPE
  2289. from icsSORQUODETAILNORMAL a
  2290. inner join icsSORQUOTATION b on a.QUOTATIONCODE=b.QUOTATIONCODE and a.WorkPoint=b.WorkPoint
  2291. inner join dbo.ICSSORRFQ c on a.RFQCODE=c.RFQCODE and a.WorkPoint=c.workpoint
  2292. inner join ICSVendor j on b.VENDORCODE=j.VenCode and a.WorkPoint=j.WorkPoint
  2293. inner join icsSORQUOTATION cc on a.QUOTATIONCODE=cc.QUOTATIONCODE and a.WorkPoint=cc.WorkPoint
  2294. left join icsVENDORTAXRATE dd on cc.VENDORCODE=dd.VENDORCODE and a.WorkPoint=dd.WorkPoint
  2295. left join Sys_SRM_ItemsDetail h on h.F_ItemCode=c.purteam
  2296. left join dbo.ICSPURCHUG hh on c.PURCHUGCODE=hh.PURCHUGCODE
  2297. left join dbo.ICSINVENTORY ii on a.ITEMCODE=ii.INVCODE and a.WorkPoint=ii.WorkPoint
  2298. where a.ITEMCODE='{0}' and cc.VENDORCODE='{1}'and c.RFQCODE='{2}' and a.WorkPoint in({3}) ";
  2299. sql = string.Format(sql, ITEMCODE, VenCode, FPRFQCODE, WorkPoint);
  2300. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2301. }
  2302. public string SaveQuotationByPN(string keyValue)
  2303. {
  2304. string msg = "";
  2305. string sql = string.Empty;
  2306. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  2307. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  2308. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  2309. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  2310. foreach (var item in res)
  2311. {
  2312. JObject jo = (JObject)item;
  2313. sql += @"
  2314. IF NOT EXISTS(SELECT * FROM dbo.ICSSORQUOTATION WHERE QUOTATIONCODE='{4}'and WorkPoint = '{8}')
  2315. BEGIN
  2316. INSERT INTO dbo.ICSSORQUOTATION
  2317. (
  2318. ID, BUYERMEMO,COMPANYCODE,CREATEDATE,CREATETIME,CREATEUSER,LOGDATE,LOGTIME, LOGUSER, PROCESSDATE, QUOTATIONCODE,
  2319. QUOTEDATE,RFQCODE, VENDORCODE,VENDORMEMO,WorkPoint,GYSFile
  2320. )
  2321. VALUES
  2322. (newid(),'{0}','{1}',getdate(),getdate(),'{2}',getdate(),getdate(),'{3}',getdate(),'{4}',getdate(),'{5}','{6}','{7}','{8}','{9}')
  2323. END
  2324. ELSE
  2325. BEGIN
  2326. UPDATE dbo.ICSSORQUOTATION
  2327. SET VENDORMEMO='{7}',LOGDATE=getdate(),LOGTIME=getdate(),LOGUSER='{3}', WorkPoint='{8}',GYSFile='{9}'
  2328. WHERE QUOTATIONCODE='{4}' and WorkPoint = '{8}'
  2329. END ";
  2330. sql = string.Format(sql, jo["MEMO"].ToString(), jo["WorkPoint"].ToString(), MUSER, MUSER, jo["QuotationNo"].ToString(), jo["RFQCODE"].ToString(), jo["VENDORCODE"].ToString(), jo["Description"].ToString(), jo["WorkPoint"].ToString(), jo["GYSFile"].ToString());
  2331. JArray Details = (JArray)JsonConvert.DeserializeObject(jo["Details"].ToString());
  2332. foreach (var detail in Details)
  2333. {
  2334. JObject Detail = (JObject)detail;
  2335. sql += @" IF NOT EXISTS(SELECT * FROM dbo.ICSSORQUODETAILNORMAL WHERE ID='{0}')
  2336. BEGIN
  2337. INSERT INTO dbo.ICSSORQUODETAILNORMAL
  2338. (ID, BUYERMEMO, COMPANYCODE, COSTDETAILSREFERCODE, CREATEDATE,
  2339. CREATETIME,CREATEUSER,ITEMCODE,ITEMNAME,LOGDATE,
  2340. LOGTIME,LOGUSER,QUOBUYERPRICE,QUOPRICE,QUOTATIONCODE,
  2341. QUOTEDATE,REQUESTQUANTITY,RFQCODE,UNIT,VENDORMEMO,
  2342. WorkPoint,ADDITION1,EATTRIBUTE20,EATTRIBUTE21,EATTRIBUTE22,
  2343. EATTRIBUTE23,EATTRIBUTE24,EATTRIBUTE25,EATTRIBUTE26,EATTRIBUTE27,
  2344. EATTRIBUTE28,EATTRIBUTE29,TotalPrice
  2345. )
  2346. VALUES
  2347. ('{0}','{1}','{2}','{3}',getdate(),
  2348. getdate(),'{4}','{5}','{6}',getdate(),
  2349. getdate(),'{7}','{8}','{9}','{10}',
  2350. getdate(),'{11}','{12}','{13}','{14}',
  2351. '{15}','{17}','{18}','{19}','{20}',
  2352. '{21}','{22}','{23}','{24}','{25}'
  2353. ,'{26}','{27}','{28}')
  2354. END
  2355. ELSE
  2356. BEGIN
  2357. UPDATE dbo.ICSSORQUODETAILNORMAL
  2358. SET QUOPRICE='{9}',LOGDATE=getdate(),LOGTIME=getdate(),LOGUSER='{7}',QUOTEDATE=getdate(),WorkPoint='{15}',COSTDETAILSREFERCODE='{3}',VENDORMEMO='{14}',ADDITION1='{17}',TotalPrice='{28}'
  2359. WHERE ID='{0}'
  2360. END ";
  2361. sql += @" INSERT INTO dbo.ICSQuoteHistory
  2362. (
  2363. ID, QuotationID, EnquiryID, Price, CreateUser, CreateTime,WorkPoint
  2364. )
  2365. VALUES
  2366. (newid(),'{0}','{16}','{9}','{4}',getdate(),'{15}')";
  2367. sql = string.Format(sql, Detail["ID"].ToString(), jo["MEMO"].ToString(), jo["WorkPoint"].ToString(), Detail["COSTDETAILSREFERCODE"].ToString(), MUSER, Detail["ITEMCODE"].ToString(), Detail["INVNAME"].ToString(), MUSER, Detail["QUOBUYERPRICE"].ToString(),
  2368. Detail["QUOPRICE"].ToString() == "" ? 0 : Convert.ToDecimal(Detail["QUOPRICE"].ToString()), jo["QuotationNo"].ToString(), Detail["REQUESTQUANTITY"].ToString(), jo["RFQCODE"].ToString(), Detail["UNIT"].ToString(), Detail["VENDORMEMO"].ToString(), jo["WorkPoint"].ToString(), Detail["EnquiryID"].ToString(), Detail["ADDITION1"].ToString(), Detail["EATTRIBUTE20"].ToString(), Detail["EATTRIBUTE21"].ToString(), Detail["EATTRIBUTE22"].ToString(), Detail["EATTRIBUTE23"].ToString(), Detail["EATTRIBUTE24"].ToString(), Detail["EATTRIBUTE25"].ToString(), Detail["EATTRIBUTE26"].ToString(), Detail["EATTRIBUTE27"].ToString(), Detail["EATTRIBUTE28"].ToString(), Detail["EATTRIBUTE29"].ToString(), Detail["TotalPrice"].ToString());
  2369. }
  2370. }
  2371. try
  2372. {
  2373. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  2374. {
  2375. }
  2376. else
  2377. {
  2378. msg = "发布报价失败!";
  2379. }
  2380. }
  2381. catch (Exception ex)
  2382. {
  2383. msg = ex.Message;
  2384. }
  2385. return msg;
  2386. }
  2387. public DataTable GetPriceInquiryItem(string invcode, ref Pagination jqgridparam, string workpoint, string InvName,string sfqcode)
  2388. {
  2389. List<DbParameter> parameter = new List<DbParameter>();
  2390. DataTable table = new DataTable();
  2391. string wherestr = "";
  2392. if (!string.IsNullOrEmpty(invcode))
  2393. {
  2394. wherestr += " and b.itemcode like '%" + invcode + "%'";
  2395. }
  2396. if (!string.IsNullOrEmpty(InvName))
  2397. {
  2398. wherestr += " and b.itemname like '%" + InvName + "%'";
  2399. }
  2400. string sql = @"SELECT DISTINCT b.itemcode as 物料代码,b.itemname as 物料名称,d.invstd as 物料规格,b.unit as 单位,b.REQUESTQUANTITY as 预计需求量,b.memo as 备注,b.RFQITEMREFERCODE as 文件路径 ,b.ManuFacturer AS 制造商,b.ManuFacturerInvCode AS 制造商料号
  2401. FROM ICSSORRFQRequestFrom a
  2402. LEFT JOIN ICSSORRFQRequestFrom2NORMALITEM b ON a.RFQCODE=b.RFQCODE
  2403. LEFT JOIN ICSSORRFQ2NORMALITEM c ON b.RFQCODE=c.ADDITION2 AND b.ItemCode=c.ItemCode
  2404. left join ICSINVENTORY d on d.invcode=b.itemcode and a.workpoint=b.workpoint
  2405. WHERE c.RFQCODE IS NULL and a.RFQCODE='" + sfqcode+"' and a.workpoint='" + workpoint + "'" + wherestr;
  2406. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2407. }
  2408. /// <summary>
  2409. /// 导出需求单明细
  2410. /// </summary>
  2411. /// <param name="RFQCODE"></param>
  2412. /// <param name="WorkPoint"></param>
  2413. /// <returns></returns>
  2414. public DataTable GetSQListExport(string RFQCODE, string WorkPoint)
  2415. {
  2416. string sql = @"SELECT b.itemcode 物料代码,
  2417. b.itemname ,
  2418. a.invstd ,
  2419. b.unit ,
  2420. REQUESTQUANTITY ,
  2421. memo
  2422. FROM ICSSORRFQRequestFrom2NORMALITEM b
  2423. left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
  2424. where RFQCODE='{0}'";
  2425. sql = string.Format(sql, RFQCODE, WorkPoint);
  2426. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2427. return dt;
  2428. }
  2429. }
  2430. }