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.

2485 lines
136 KiB

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