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.

306 lines
16 KiB

4 days ago
  1. using NFine.Code;
  2. using NFine.Data.Extensions;
  3. using NFine.Domain._03_Entity.SRM;
  4. using NFine.Domain.Entity.ProductManage;
  5. using NFine.Domain.IRepository.ProductManage;
  6. using NFine.Repository;
  7. using NFine.Repository.ProductManage;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Configuration;
  11. using System.Data;
  12. using System.Data.Common;
  13. using System.Linq;
  14. using System.Text;
  15. namespace NFine.Application.SRM
  16. {
  17. public class ComparisonApp : RepositoryFactory<ICSVendor>
  18. {
  19. /// <summary>
  20. /// 获取比价单
  21. /// </summary>
  22. /// <param name="queryJson">传入参数</param>
  23. /// <param name="jqgridparam">分页</param>
  24. /// <returns></returns>
  25. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  26. {
  27. DataTable dt = new DataTable();
  28. var queryParam = queryJson.ToJObject();
  29. List<DbParameter> parameter = new List<DbParameter>();
  30. string sql = @"select distinct max(a.COMPARECODE) as COMPARECODE,b.INVCODE,b.INVNAME,b.INVSTD,e.PURCHUGCODE,e.PURCHUGNAME,e.PURCHUGCONECT,a.ppStatus,d.RFQCODE,d.RFQNAME,h.F_ItemName as PURTEAM
  31. from dbo.ICSSORQUODETAILNORMAL a
  32. left join dbo.ICSSORQUOTATION c on a.QUOTATIONCODE=c.QUOTATIONCODE and a.WorkPoint=c.WorkPoint
  33. left join icsSORRFQ d on c.RFQCODE=d.RFQCODE and a.WorkPoint=d.workpoint
  34. left join dbo.ICSINVENTORY b on a.ITEMCODE=b.INVCODE and b.WorkPoint=a.WorkPoint
  35. left join dbo.ICSPURCHUG e on d.PURCHUGCODE=e.PURCHUGCODE and a.WorkPoint=e.WorkPoint
  36. left join Sys_SRM_ItemsDetail h on h.F_ItemCode=d.purteam
  37. where a.PPstatus in(0) or a.PPstatus is null and isnull(a.COMPARECODE,'') <>''";
  38. if (!string.IsNullOrWhiteSpace(queryJson))
  39. {
  40. if (!string.IsNullOrWhiteSpace(queryParam["PURCHUG"].ToString()))
  41. {
  42. sql += " and e.PURCHUGCONECT like '%" + queryParam["PURCHUG"].ToString() + "%' ";
  43. }
  44. if (!string.IsNullOrWhiteSpace(queryParam["PURCHUGCODE"].ToString()))
  45. {
  46. sql += " and e.PURCHUGCODE like '%" + queryParam["PURCHUGCODE"].ToString() + "%' ";
  47. }
  48. if (!string.IsNullOrWhiteSpace(queryParam["PURCHUGNAME"].ToString()))
  49. {
  50. sql += " and e.PURCHUGNAME like '%" + queryParam["PURCHUGNAME"].ToString() + "%' ";
  51. }
  52. if (!string.IsNullOrWhiteSpace(queryParam["ITEMCODE"].ToString()))
  53. {
  54. sql += " and b.INVCODE like '%" + queryParam["ITEMCODE"].ToString() + "%' ";
  55. }
  56. if (!string.IsNullOrWhiteSpace(queryParam["ITEMName"].ToString()))
  57. {
  58. sql += " and b.INVNAME like '%" + queryParam["ITEMName"].ToString() + "%' ";
  59. }
  60. if (!string.IsNullOrWhiteSpace(queryParam["TimeFrom"].ToString()))
  61. {
  62. sql += " and b.CREATEDATE >= '" + queryParam["TimeFrom"].ToString() + "' ";
  63. }
  64. if (!string.IsNullOrWhiteSpace(queryParam["TimeTo"].ToString()))
  65. {
  66. sql += " and b.CREATEDATE <= '" + queryParam["TimeTo"].ToString() + "' ";
  67. }
  68. if (!string.IsNullOrWhiteSpace(queryParam["INVSTD"].ToString()))
  69. {
  70. sql += " and b.INVSTD like '%" + queryParam["INVSTD"].ToString() + "%' ";
  71. }
  72. if (!string.IsNullOrWhiteSpace(queryParam["Stuts"].ToString()))
  73. {
  74. sql += " and a.ppStatus in( '" + queryParam["Stuts"].ToString().TrimEnd(',') + "') ";
  75. }
  76. if (!string.IsNullOrWhiteSpace(queryParam["COMPARECODE"].ToString()))
  77. {
  78. sql += " and a.COMPARECODE in( '" + queryParam["COMPARECODE"].ToString().TrimEnd(',') + "') ";
  79. }
  80. }
  81. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  82. {
  83. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  84. }
  85. sql += "group by a.CREATEDATE,b.INVCODE,b.INVNAME,b.INVSTD, e.PURCHUGCODE,e.PURCHUGNAME,e.PURCHUGCONECT,a.ppStatus,d.RFQCODE,d.RFQNAME,h.F_ItemName ";
  86. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  87. //{
  88. // sql += " and a.WorkPoint=" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location .TrimEnd(',')+ "";
  89. //}
  90. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  91. }
  92. /// <summary>
  93. ///
  94. /// </summary>
  95. /// <param name="queryJson"></param>
  96. /// <param name="jqgridparam"></param>
  97. /// <returns></returns>
  98. public DataTable GetGridPrice(string queryJson, ref Pagination jqgridparam)
  99. {
  100. DataTable dt = new DataTable();
  101. var queryParam = queryJson.ToJObject();
  102. List<DbParameter> parameter = new List<DbParameter>();
  103. string sql = @"select distinct b.RFQCODE ,c.PURCHUGNAME,d.ITEMCODE,d.ITEMNAME,a.VENDORCODE,CASE WHEN ISNULL(e.QUOBUYERPRICE,0)<>0 THEN e.QUOBUYERPRICE ELSE e.QUOPRICE END AS QUOPRICE,e.UNIT,
  104. e.CURRENCY,f.invSTD,j.VenName cVenName,j.VenCode cVenCode,e.QUOSTATUS,h.F_ItemName as PURTEAM,a.WorkPoint
  105. from dbo.ICSSORQUOTATION a
  106. left join dbo.ICSSORRFQ2NORMALITEM d on a.RFQCODE=d.RFQCODE
  107. inner join ICSINVENTORY f on d.ITEMCODE=f.INVCODE AND a.WorkPoint=f.WorkPoint
  108. inner join ICSVendor j on a.VENDORCODE=j.venCode AND a.WorkPoint=j.WorkPoint
  109. left join icsSORQUODETAILNORMAL e on a.QUOTATIONCODE=e.QUOTATIONCODE AND d.ITEMCODE=e.ITEMCODE
  110. left join dbo.ICSSORRFQ b on a.RFQCODE=b.RFQCODE and a.COMPANYCODE=b.COMPANYCODE
  111. left join dbo.ICSPURCHUG c on b.PURCHUGCODE=c.PURCHUGCODE
  112. left join Sys_SRM_ItemsDetail h on h.F_ItemCode=b.purteam
  113. where e.QUOSTATUS='PricingApprove' and isnull(d.ITEMCODE,'' )<>''
  114. ";
  115. if (!string.IsNullOrWhiteSpace(queryJson))
  116. {
  117. if (!string.IsNullOrWhiteSpace(queryParam["RFQCODE"].ToString()))
  118. {
  119. sql += " and b.RFQCODE like '%" + queryParam["RFQCODE"].ToString() + "%' ";
  120. }
  121. if (!string.IsNullOrWhiteSpace(queryParam["PURCHUG"].ToString()))
  122. {
  123. sql += " and c.PURCHUGCODE like '%" + queryParam["PURCHUG"].ToString() + "%' ";
  124. }
  125. if (!string.IsNullOrWhiteSpace(queryParam["PURTEAM"].ToString()))
  126. {
  127. sql += " and h.F_ItemName like '%" + queryParam["PURTEAM"].ToString() + "%' ";
  128. }
  129. if (!string.IsNullOrWhiteSpace(queryParam["ITEMCODE"].ToString()))
  130. {
  131. sql += " and d.ITEMCODE like '%" + queryParam["ITEMCODE"].ToString() + "%' ";
  132. }
  133. if (!string.IsNullOrWhiteSpace(queryParam["ITEMName"].ToString()))
  134. {
  135. sql += " and d.ITEMNAME like '%" + queryParam["ITEMName"].ToString() + "%' ";
  136. }
  137. if (!string.IsNullOrWhiteSpace(queryParam["INVSTD"].ToString()))
  138. {
  139. sql += " and f.INVSTD like '%" + queryParam["INVSTD"].ToString() + "%' ";
  140. }
  141. if (!string.IsNullOrWhiteSpace(queryParam["Vencode"].ToString()))
  142. {
  143. sql += " and j.cVenCode in( '" + queryParam["Vencode"].ToString() + "') ";
  144. }
  145. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  146. {
  147. sql += " and j.cVenName in( '" + queryParam["VenName"].ToString() + "') ";
  148. }
  149. }
  150. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  151. {
  152. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  153. }
  154. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  155. //{
  156. // sql += " and VENDORCODE='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  157. //}
  158. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  159. }
  160. /// <summary>
  161. /// 获取报价信息报价价格
  162. /// </summary>
  163. /// <param name="queryJson"></param>
  164. /// <param name="jqgridparam"></param>
  165. /// <returns></returns>
  166. public DataTable GetGridMaterial(ref Pagination jqgridparam, string ITEMCODE, string VenCode, string RFQCODE)
  167. {
  168. DataTable dt = new DataTable();
  169. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  170. List<DbParameter> parameter = new List<DbParameter>();
  171. 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.cVenName,
  172. dd.TAXRATECODE,cc.paymentClause,a.COSTDETAILSREFERCODE,h.F_ItemName as PURTEAM,
  173. case when isnull(a.COMPARECODE,'')='' then '' else '' end as Sources,
  174. case when isnull(a.COMPARECODE,'')='' then a.RFQCODE else a.COMPARECODE end as SourcesNum,ii.INVSTD as INVTYPE
  175. from icsSORQUODETAILNORMAL a
  176. inner join icsSORQUOTATION b on a.QUOTATIONCODE=b.QUOTATIONCODE and a.WorkPoint=b.WorkPoint
  177. inner join dbo.ICSSORRFQ c on a.RFQCODE=c.RFQCODE and a.COMPANYCODE=c.COMPANYCODE and a.WorkPoint=c.workpoint
  178. inner join ICSVendor j on b.VENDORCODE=j.cVenCode and a.WorkPoint=j.WorkPoint
  179. inner join icsSORQUOTATION cc on a.COMPANYCODE=cc.COMPANYCODE and a.QUOTATIONCODE=cc.QUOTATIONCODE and a.WorkPoint=cc.WorkPoint
  180. left join icsVENDORTAXRATE dd on cc.VENDORCODE=dd.VENDORCODE and a.WorkPoint=dd.WorkPoint
  181. left join Sys_SRM_ItemsDetail h on h.F_ItemCode=c.purteam
  182. left join dbo.ICSPURCHUG hh on c.PURCHUGCODE=hh.PURCHUGCODE
  183. left join dbo.ICSINVENTORY ii on a.ITEMCODE=ii.INVCODE and a.WorkPoint=ii.WorkPoint
  184. where a.ITEMCODE='{0}' and cc.VENDORCODE='{1}'and c.RFQCODE='{2}' and a.WorkPoint in({3}) ";
  185. sql = string.Format(sql, ITEMCODE, VenCode, RFQCODE, WorkPoint);
  186. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  187. }
  188. /// <summary>
  189. /// 税率
  190. /// </summary>
  191. /// <param name="queryJson"></param>
  192. /// <param name="jqgridparam"></param>
  193. /// <returns></returns>
  194. // public DataTable GetGridVendorTaxrate(string queryJson, ref Pagination jqgridparam)
  195. // {
  196. // DataTable dt = new DataTable();
  197. // var queryParam = queryJson.ToJObject();
  198. // List<DbParameter> parameter = new List<DbParameter>();
  199. // string sql = @"select c.TAXRATECODE,a.paymentClause,b.COMPARECODE,'比价' as bijia,b.COSTDETAILSREFERCODE from icsSORQUOTATION a
  200. // left join icsSORQUODETAILNORMAL b on a.COMPANYCODE=b.COMPANYCODE and a.QUOTATIONCODE=b.QUOTATIONCODE
  201. // inner join icsSORQUOTATION d on b.QUOTATIONCODE=d.QUOTATIONCODE
  202. // left join icsVENDORTAXRATE c on d.VENDORCODE=c.VENDORCODE where 1=1";
  203. // if (!string.IsNullOrWhiteSpace(queryJson))
  204. // {
  205. // //if (!string.IsNullOrWhiteSpace(queryParam["PURCHUG"].ToString()))
  206. // //{
  207. // // sql += " and b.PURCHUGCODE like '%" + queryParam["PURCHUG"].ToString() + "%' ";
  208. // //}
  209. // if (!string.IsNullOrWhiteSpace(queryParam["COMPARECODE"].ToString()))
  210. // {
  211. // sql += " and b.COMPARECODE like '%" + queryParam["COMPARECODE"].ToString() + "%' ";
  212. // }
  213. // //if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  214. // //{
  215. // // sql += " and b.VENDORCODE like '%" + queryParam["VenCode"].ToString() + "%' ";
  216. // //}
  217. // //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  218. // //{
  219. // // sql += " and VENDORCODE='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  220. // //}
  221. // }
  222. // //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  223. // //{
  224. // // sql += " and VENDORCODE='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  225. // //}
  226. // return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  227. // }
  228. /// <summary>
  229. /// 送签
  230. /// </summary>
  231. /// <param name="keyValue"></param>
  232. /// <returns></returns>
  233. public string UpdateCompareCode(string keyValue)
  234. {
  235. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  236. string msg = "";
  237. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  238. // string[] keyValues = keyValue.Split(',');
  239. string sql = string.Empty;
  240. sql = "UPDATE icsSORQUODETAILNORMAL SET PPstatus = {1},QUOSTATUS='PricingApprove' WHERE CompareCode = {0} ";
  241. sql = string.Format(sql, keyValue.TrimEnd(','), 1);
  242. SqlHelper.ExecuteNonQuery(sql);
  243. return msg;
  244. }
  245. public DataTable GetSelectPrice(string COMPARECODE, ref Pagination jqgridparam)
  246. {
  247. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  248. DataTable dt = new DataTable();
  249. string sql = @" select DISTINCT a.COMPARECODE,b.INVCODE,b.INVNAME,b.INVSTD, CASE WHEN ISNULL(a.QUOBUYERPRICE,0)<>0 THEN a.QUOBUYERPRICE ELSE a.QUOPRICE END AS QUOPRICE ,a.STARTDATE,c.VENDORCODE,f.cVenName
  250. from dbo.ICSSORQUODETAILNORMAL a
  251. left join dbo.ICSSORQUOTATION c on a.QUOTATIONCODE=c.QUOTATIONCODE and a.WorkPoint=c.WorkPoint
  252. left join icsSORRFQ d on c.RFQCODE=d.RFQCODE and a.WorkPoint = d.workpoint
  253. left join dbo.ICSINVENTORY b on a.ITEMCODE=b.INVCODE and a.WorkPoint=b.WorkPoint
  254. left join dbo.ICSPURCHUG e on d.PURCHUGCODE=e.PURCHUGCODE
  255. left join ICSVendor f on c.VENDORCODE=f.cVenCode and a.WorkPoint=f.WorkPoint
  256. where a.COMPARECODE='{0}' and a.WorkPoint in ({1})";
  257. sql = string.Format(sql, COMPARECODE, WorkPoint);
  258. return Repository().FindTablePageBySql(sql.ToString(), ref jqgridparam);
  259. }
  260. public string DeleteCOMPARECODE(string keyValue)
  261. {
  262. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  263. string msg = "";
  264. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  265. string sql = string.Empty;
  266. sql = string.Format(@"update ICSSORQUODETAILNORMAL set COMPARECODE='' where COMPARECODE in ({0}) and WorkPoint in ({1})", keyValue.TrimEnd(','), WorkPoint);
  267. SqlHelper.ExecuteNonQuery(sql);
  268. return msg;
  269. }
  270. public string AuditCompareCode(string COMPARECODE, string VENDORCODE)
  271. {
  272. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  273. string msg = "";
  274. // string[] keyValues = keyValue.Split(',');
  275. string sql = string.Empty;
  276. sql = "update a set a.QUOSTATUS='PricingApprove' from icsSORQUODETAILNORMAL a left join icsSORQUOTATION b on a.QUOTATIONCODE=b.QUOTATIONCODE where a.CompareCode = '{0}' and b.VENDORCODE='{1}' ";
  277. sql = string.Format(sql, COMPARECODE, VENDORCODE);
  278. SqlHelper.ExecuteNonQuery(sql);
  279. return msg;
  280. }
  281. }
  282. }