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.

1813 lines
100 KiB

4 days ago
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. using NFine.Code;
  4. using NFine.Data.Extensions;
  5. using NFine.Domain._03_Entity.SRM;
  6. using NFine.Domain.Entity.ProductManage;
  7. using NFine.Domain.IRepository.ProductManage;
  8. using NFine.Repository;
  9. using NFine.Repository.ProductManage;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Configuration;
  13. using System.Data;
  14. using System.Data.Common;
  15. using System.Data.SqlClient;
  16. using System.IO;
  17. using System.Linq;
  18. using System.Net;
  19. using System.Text;
  20. namespace NFine.Application
  21. {
  22. public class InvoiceManageApp : RepositoryFactory<ICSVendor>
  23. {
  24. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  25. {
  26. DataTable dt = new DataTable();
  27. var queryParam = queryJson.ToJObject();
  28. List<DbParameter> parameter = new List<DbParameter>();
  29. string sql = @"SELECT DISTINCT a.ID,a.DocNo,a.MUSER,a.MUSERName,CONVERT(VARCHAR(100),a.MTIME,23) AS MTIME,
  30. CASE Status WHEN 0 THEN '' WHEN 1 THEN '' WHEN 2 THEN '' WHEN 3 THEN '退' END STATUS,
  31. CASE Status WHEN 0 THEN '' WHEN 1 THEN '' WHEN 2 THEN '' WHEN 3 THEN '退' END HIDDSTATUS,
  32. CASE InvoiceType WHEN 02 THEN '' WHEN 01 THEN '' END INVOICETYPE,Tax,
  33. CASE ISNULL(IsERP, 0) WHEN 0 THEN '否' WHEN 1 THEN '是' END ISERP,
  34. SupplierCode,SupplierName,PubUser,CONVERT(VARCHAR(100),PubTime,23) AS PubTime,Remark,PaperNo,a.WorkPoint,a.dVouDate,a.Filename,a.FilePath
  35. FROM ICSInvoiceNew a
  36. left join ( select distinct a.DocNo,e.CreatePerson,a.WorkPoint,e.pocode,b.src_CADocNo,e.InvCode FROM ICSInvoiceNew a
  37. left join ICSInvoiceNewDetail b on a.DocNo=b.DocNo and a.WorkPoint=b.WorkPoint
  38. left join dbo.ICSCANewdetail c on b.Src_CadocNO=c.DocNO and b.WorkPoint=c.WorkPoint
  39. left join dbo.ICSPurchaseOrder e on c.POCode=e.POCode and c.PORow=e.Sequence and c.WorkPoint=e.WorkPoint) b on a.DocNo=b.DocNo and a.WorkPoint=b.WorkPoint
  40. left join ICSINVENTORY f on b.InvCode=f.invCode and b.WorkPoint=f.WorkPoint
  41. WHERE 1=1";
  42. if (!string.IsNullOrWhiteSpace(queryJson))
  43. {
  44. if (!string.IsNullOrWhiteSpace(queryParam["DocNo"].ToString()))
  45. {
  46. sql += " and a.DocNo like '%" + queryParam["DocNo"].ToString() + "%' ";
  47. }
  48. if (!string.IsNullOrWhiteSpace(queryParam["SupplierCode"].ToString()))
  49. {
  50. sql += " and a.SupplierCode like '%" + queryParam["SupplierCode"].ToString() + "%' ";
  51. }
  52. if (!string.IsNullOrWhiteSpace(queryParam["SupplierName"].ToString()))
  53. {
  54. sql += " and a.SupplierName like '%" + queryParam["SupplierName"].ToString() + "%' ";
  55. }
  56. if (!string.IsNullOrWhiteSpace(queryParam["TimeFrom"].ToString()))
  57. {
  58. sql += " and a.MTIME >= '" + queryParam["TimeFrom"].ToString() + "' ";
  59. }
  60. if (!string.IsNullOrWhiteSpace(queryParam["TimeTo"].ToString()))
  61. {
  62. sql += " and a.MTIME <= '" + queryParam["TimeTo"].ToString() + "' ";
  63. }
  64. if (!string.IsNullOrWhiteSpace(queryParam["PoCode"].ToString()))
  65. {
  66. sql += " and b.PoCode like '%" + queryParam["PoCode"].ToString() + "%' ";
  67. }
  68. if (!string.IsNullOrWhiteSpace(queryParam["CACOde"].ToString()))
  69. {
  70. sql += " and b.src_CADocNo like '%" + queryParam["CACOde"].ToString() + "%' ";
  71. }
  72. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  73. {
  74. sql += " and f.InvCode like '%" + queryParam["InvCode"].ToString() + "%'";
  75. }
  76. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  77. {
  78. sql += " and f.InvName like '%" + queryParam["InvName"].ToString() + "%'";
  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. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  86. {
  87. sql += " and a.SupplierCode in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'AND WorkPoint=b.WorkPoint)AND a.SupplierName='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'";
  88. }
  89. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  90. }
  91. public string ChridenList(string keyValue, string WorkPoint)
  92. {
  93. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  94. WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
  95. string msg = "";
  96. string sql = "SELECT DocNo FROM dbo.ICSInvoiceNewDetail WHERE DocNo in ({0}) and WorkPoint='{1}'";
  97. sql = string.Format(sql, keyValue.TrimEnd(','), WorkPoint);
  98. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  99. int Count = dt.Rows.Count;
  100. if (Count <= 0)
  101. {
  102. msg = "该单据无表单明细信息,请点开查看!";
  103. }
  104. return msg;
  105. }
  106. public DataTable GetGridJsonAdmin(string queryJson, ref Pagination jqgridparam)
  107. {
  108. DataTable dt = new DataTable();
  109. var queryParam = queryJson.ToJObject();
  110. List<DbParameter> parameter = new List<DbParameter>();
  111. string sql = @" SELECT DISTINCT a.ID,a.DocNo,a.MUSER,a.MUSERName,CONVERT(VARCHAR(100),a.MTIME,23) AS MTIME,
  112. CASE Status WHEN 0 THEN '' WHEN 1 THEN '' WHEN 2 THEN '' WHEN 3 THEN '退' END STATUS,
  113. CASE Status WHEN 0 THEN '' WHEN 1 THEN '' WHEN 2 THEN '' WHEN 3 THEN '退' END HIDDSTATUS,
  114. CASE a.InvoiceType WHEN 02 THEN '' WHEN 01 THEN '' END INVOICETYPE,a.Tax,
  115. CASE ISNULL(a.IsERP, 0) WHEN 0 THEN '否' WHEN 1 THEN '是' END ISERP,
  116. a.SupplierCode,a.SupplierName,a.PubUser,CONVERT(VARCHAR(100),a.PubTime,23) AS PubTime,a.Remark,a.PaperNo,a.WorkPoint,a.dVouDate,a.Filename,a.FilePath
  117. FROM ICSInvoiceNew a
  118. left join ( select distinct a.DocNo,e.CreatePerson,a.WorkPoint,e.pocode,b.src_CADocNo,e.InvCode FROM ICSInvoiceNew a
  119. left join ICSInvoiceNewDetail b on a.DocNo=b.DocNo and a.WorkPoint=b.WorkPoint
  120. left join dbo.ICSCANewdetail c on b.Src_CadocNO=c.DocNO and b.WorkPoint=c.WorkPoint
  121. left join dbo.ICSPurchaseOrder e on c.POCode=e.POCode and c.PORow=e.Sequence and c.WorkPoint=e.WorkPoint
  122. ) b on a.DocNo=b.DocNo and a.WorkPoint=b.WorkPoint left join ICSINVENTORY f on b.InvCode=f.invCode and b.WorkPoint=f.WorkPoint WHERE 1=1 AND a.Status IN (1,2,3)";
  123. // string sql = @" SELECT DISTINCT a.ID,a.DocNo,a.MUSER,a.MUSERName,CONVERT(VARCHAR(100),a.MTIME,23) AS MTIME,
  124. // CASE a.Status WHEN 0 THEN '开立' WHEN 1 THEN '发布' WHEN 2 THEN '记账' WHEN 3 THEN '退回' END STATUS,
  125. // CASE InvoiceType WHEN 0 THEN '普票' WHEN 1 THEN '专票' END INVOICETYPE,Tax,
  126. // CASE ISNULL(IsERP, 0) WHEN 0 THEN '否' WHEN 1 THEN '是' END ISERP,
  127. // SupplierCode,SupplierName,PubUser,CONVERT(VARCHAR(100),PubTime,23) AS PubTime,a.Remark,PaperNo,a.WorkPoint,d.CreatePerson
  128. // from ICSInvoice a
  129. // LEFT join ICSInvoiceDetail b ON a.DocNo=b.DocNo
  130. // left JOIN view_PoMain c ON b.ASNNo = c.DNNO AND b.InvCode = c.InvCode
  131. // LEFT JOIN dbo.ICSPO_PoMain d ON c.POCode=d.POCode WHERE 1=1 AND a.Status IN (1,2,3) ";
  132. if (!string.IsNullOrWhiteSpace(queryJson))
  133. {
  134. if (!string.IsNullOrWhiteSpace(queryParam["DocNo"].ToString()))
  135. {
  136. sql += " and a.DocNo like '%" + queryParam["DocNo"].ToString() + "%' ";
  137. }
  138. if (!string.IsNullOrWhiteSpace(queryParam["SupplierCode"].ToString()))
  139. {
  140. sql += " and a.SupplierCode like '%" + queryParam["SupplierCode"].ToString() + "%' ";
  141. }
  142. if (!string.IsNullOrWhiteSpace(queryParam["SupplierName"].ToString()))
  143. {
  144. sql += " and a.SupplierName like '%" + queryParam["SupplierName"].ToString() + "%' ";
  145. }
  146. if (!string.IsNullOrWhiteSpace(queryParam["CreatePerson"].ToString()))
  147. {
  148. sql += " and b.CreatePerson like '%" + queryParam["CreatePerson"].ToString() + "%' ";
  149. }
  150. if (!string.IsNullOrWhiteSpace(queryParam["TimeFrom"].ToString()))
  151. {
  152. sql += " and a.MTIME >= '" + queryParam["TimeFrom"].ToString() + "' ";
  153. }
  154. if (!string.IsNullOrWhiteSpace(queryParam["TimeTo"].ToString()))
  155. {
  156. sql += " and a.MTIME <= '" + queryParam["TimeTo"].ToString() + "' ";
  157. }
  158. if (!string.IsNullOrWhiteSpace(queryParam["PoCode"].ToString()))
  159. {
  160. sql += " and b.PoCode like '%" + queryParam["PoCode"].ToString() + "%' ";
  161. }
  162. if (!string.IsNullOrWhiteSpace(queryParam["CACOde"].ToString()))
  163. {
  164. sql += " and b.src_CADocNo like '%" + queryParam["CACOde"].ToString() + "%' ";
  165. }
  166. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  167. {
  168. sql += " and f.InvCode like '%" + queryParam["InvCode"].ToString() + "%'";
  169. }
  170. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  171. {
  172. sql += " and f.InvName like '%" + queryParam["InvName"].ToString() + "%'";
  173. }
  174. if (!string.IsNullOrWhiteSpace(queryParam["ReleaseState"].ToString()))
  175. {
  176. string ReleaseState = queryParam["ReleaseState"].ToString();
  177. if (ReleaseState == "1")
  178. sql += " and a.Status = '1'";
  179. else if (ReleaseState == "2")
  180. sql += " and a.Status = '2'";
  181. else if (ReleaseState == "3")
  182. sql += " and a.Status = '3'";
  183. }
  184. }
  185. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  186. {
  187. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  188. }
  189. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  190. {
  191. sql += " and a.SupplierCode in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'AND WorkPoint=a.WorkPoint)AND a.SupplierName='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'";
  192. }
  193. if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
  194. {
  195. sql = SqlHelper.OrganizeByVendor_F_ParentIdBYDZ(sql, NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  196. }
  197. //dt = SqlHelper.GetDataTableBySql(sql);
  198. //else
  199. //{
  200. // if (NFine.Code.OperatorProvider.Provider.GetCurrent().IsSystem == false)
  201. // {
  202. // sql += " and d.CreatePerson='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'";
  203. // }
  204. //}
  205. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  206. }
  207. /// <summary>
  208. /// 子表查询
  209. /// </summary>
  210. /// <param name="queryJson"></param>
  211. /// <param name="jqgridparam"></param>
  212. /// <returns></returns>
  213. public DataTable GetSubGridJson(string ID, ref Pagination jqgridparam, string WorkPoint)
  214. {
  215. //string sqlU9 = "SELECT DBIpAddress,DBName FROM dbo.Sys_DataBase WHERE DBSourceName='ERP'";
  216. //DataTable dtU9 = SqlHelper.GetDataTableBySql(sqlU9);
  217. //string U9IP = dtU9.Rows[0]["DBIpAddress"].ToString();
  218. //string DBName = dtU9.Rows[0]["DBName"].ToString();
  219. string DBLANK = SqlHelper.GetItemsDetails("ERP001", WorkPoint);
  220. string Views = SqlHelper.GetItemsDetails("ViewsWorkpoint2", WorkPoint);
  221. DataTable dt = new DataTable();
  222. List<DbParameter> parameter = new List<DbParameter>();
  223. // string sql = @"SELECT DISTINCT a.ID,a.InvCode,j.InvName,a.Qty,j.InvUnit AS InvUom,
  224. // CAST(a.TaxPriceSell AS DECIMAL(18,2)) AS Price,CAST(g.ioriSum AS DECIMAL(18,2)) AS Total,
  225. // a.Src_CADocNo AS CACOde,f.POCode,ISNULL(g.iOriMoney,0) AS iOriMoney,ISNULL(g.iOriTaxPrice,0) AS iOriTaxPrice
  226. // FROM ICSInvoiceNewDetail a
  227. // left join ICSCANew c on a.Src_CADocNo=c.DocNo and a.WorkPoint=c.WorkPoint
  228. //LEFT JOIN ICSCANewdetail e ON c.DocNo=e.DocNo AND a.Src_CADocLineNo=e.DocLineNo AND a.InvCode=e.InvCode
  229. // LEFT JOIN (SELECT ioriSum,AutoID,iOriMoney,iOriTaxPrice FROM {2}.dbo.rdrecords01 with(nolock)) g ON e.EATTRIBUTE1=g.AutoID
  230. // LEFT JOIN dbo.ICSPurchaseOrder f ON e.POCode=f.POCode AND e.porow=f.Sequence and e.WorkPoint=f.WorkPoint and e.InvCode=f.InvCode
  231. //LEFT JOIN ICSINVENTORY j ON f.invcode=j.invCode AND j.WorkPoint=f.WorkPoint
  232. // WHERE a.DocNo = '{0}' AND a.WorkPoint = '{1}' ";
  233. string sql = @"SELECT DISTINCT a.ID,a.InvCode,j.InvName,a.Qty,j.InvUnit AS InvUom,
  234. CAST(a.TaxPriceSell AS DECIMAL(18,2)) AS Price,CAST(g.ioriSum AS DECIMAL(18,2)) AS Total,
  235. a.Src_CADocNo AS CACOde,f.POCode,ISNULL(g.iOriMoney,0) AS iOriMoney,ISNULL(g.iOriTaxPrice,0) AS iOriTaxPrice
  236. FROM ICSInvoiceNewDetail a
  237. left join ICSCANew c on a.Src_CADocNo=c.DocNo and a.WorkPoint=c.WorkPoint
  238. LEFT JOIN ICSCANewdetail e ON c.DocNo=e.DocNo AND a.Src_CADocLineNo=e.DocLineNo AND a.InvCode=e.InvCode
  239. LEFT JOIN " + Views + @" g ON e.EATTRIBUTE1=g.AutoID
  240. LEFT JOIN dbo.ICSPurchaseOrder f ON e.POCode=f.POCode AND e.porow=f.Sequence and e.WorkPoint=f.WorkPoint and e.InvCode=f.InvCode
  241. LEFT JOIN ICSINVENTORY j ON f.invcode=j.invCode AND j.WorkPoint=f.WorkPoint
  242. WHERE a.DocNo = '{0}' AND a.WorkPoint = '{1}' ";
  243. sql = string.Format(sql, ID, WorkPoint, DBLANK);
  244. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  245. }
  246. /// <summary>
  247. /// 查询送货单新增/修改页面数据
  248. /// </summary>
  249. /// <param name="queryJson"></param>
  250. /// <param name="jqgridparam"></param>
  251. /// <returns></returns>
  252. public DataTable GetSubGridJson_Add(string queryJson, ref Pagination jqgridparam)
  253. {
  254. //string sqlU9 = "SELECT DBIpAddress,DBName FROM dbo.Sys_DataBase WHERE DBSourceName='ERP'";
  255. //DataTable dtU9 = SqlHelper.GetDataTableBySql(sqlU9);
  256. //string U9IP = dtU9.Rows[0]["DBIpAddress"].ToString();
  257. //string DBName = dtU9.Rows[0]["DBName"].ToString();
  258. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  259. DataTable dt = new DataTable();
  260. var queryParam = queryJson.ToJObject();
  261. string DBLANK = SqlHelper.GetItemsDetails("ERP001", queryParam["WorkPoint"].ToString());
  262. string Views = SqlHelper.GetItemsDetails("ViewsWorkpoint", queryParam["WorkPoint"].ToString());
  263. List<DbParameter> parameter = new List<DbParameter>();
  264. //lacy.xu modifly 2021-08-31 单价取值:采购订单行单价
  265. // string sql = @"SELECT DISTINCT a.ID,b.InvCode,b.InvName,a.Qty,b.InvUom,
  266. // CAST(a.TaxPriceSell AS DECIMAL(18,2)) AS Price,CAST(a.TotalMoneySell AS DECIMAL(18,2)) AS Total,
  267. // a.Src_CADocNo AS CACOde,b.DNNO AS DNCOde,b.POCode
  268. // FROM ICSInvoiceDetail a
  269. // LEFT JOIN view_PoMain b ON a.ASNNo = b.DNNO AND a.InvCode = b.InvCode
  270. // WHERE a.DocNo = '{0}' AND a.WorkPoint = '{1}' ";
  271. //string sql = @"SELECT DISTINCT a.ID,a.DocNo AS ASDocNo,e.InvCode,f.InvName,f.InvStd,b.Src_CADocNo AS CACOde,
  272. // b.Qty,
  273. // f.InvStd InvUom,CAST(e.UnitPrice AS DECIMAL(18,2)) AS Price,
  274. // ISNULL(g.ioriSum,0) AS Total,
  275. // CONVERT(VARCHAR(100),a.MTIME,23) AS ASDate,
  276. // CASE a.Status WHEN 0 THEN '开立' WHEN 1 THEN '发布' WHEN 2 THEN '完成' WHEN 3 THEN '退回' END STATUS,
  277. // e.POCode AS POCode,CONVERT(VARCHAR(100),e.ReleaseDate,23) AS PODate,a.SupplierCode,a.PaperNo,d.EATTRIBUTE1
  278. // ,ISNULL(g.iOriMoney,0) AS iOriMoney,ISNULL(g.iOriTaxPrice,0) AS iOriTaxPrice
  279. // FROM ICSInvoiceNew a
  280. // INNER JOIN (select sum(Qty )AS Qty,Src_CADocNo,DocNo,Src_CADocLineNo,InvCode from ICSInvoiceNewDetail group by Src_CADocNo,DocNo,Src_CADocLineNo,InvCode) b ON a.DocNo = b.DocNo
  281. // LEFT JOIN ICSCANewDetail d on b.Src_CADocNo=d.DocNo and b.Src_CADocLineNo=d.DocLineNo and b.InvCode=d.InvCode
  282. // LEFT JOIN (SELECT ioriSum,AutoID,iOriMoney,iOriTaxPrice FROM {1}.dbo.rdrecords01 with(nolock)) g ON d.EATTRIBUTE1=g.AutoID
  283. // --LEFT JOIN Viewrd01 c ON d.EATTRIBUTE1=c.AutoID
  284. // --LEFT JOIN Viewrd01 c ON c.cpoid=d.poCode AND c.ivouchrowno=d.porow and c.AutoID=a.EATTRIBUTE1
  285. // left join dbo.ICSPurchaseOrder e on d.PoCode=e.POCode and d.PoRow=e.Sequence
  286. // left join ICSINVENTORY f on d.InvCode=f.INVCODE and d.WorkPoint=f.WorkPoint
  287. // WHERE a.DocNo = '{0}' ";
  288. string sql = @"SELECT DISTINCT a.ID,a.DocNo AS ASDocNo,e.InvCode,f.InvName,f.InvStd,b.Src_CADocNo AS CACOde,
  289. b.Qty,
  290. f.InvStd InvUom,CAST(e.UnitPrice AS DECIMAL(18,2)) AS Price,
  291. ISNULL(g.ioriSum,0) AS Total,
  292. CONVERT(VARCHAR(100),a.MTIME,23) AS ASDate,
  293. CASE a.Status WHEN 0 THEN '' WHEN 1 THEN '' WHEN 2 THEN '' WHEN 3 THEN '退' END STATUS,
  294. e.POCode AS POCode,CONVERT(VARCHAR(100),e.ReleaseDate,23) AS PODate,a.SupplierCode,a.PaperNo,d.EATTRIBUTE1
  295. ,ISNULL(g.iOriMoney,0) AS iOriMoney,ISNULL(g.iOriTaxPrice,0) AS iOriTaxPrice
  296. FROM ICSInvoiceNew a
  297. INNER JOIN (select sum(Qty )AS Qty,Src_CADocNo,DocNo,Src_CADocLineNo,InvCode from ICSInvoiceNewDetail group by Src_CADocNo,DocNo,Src_CADocLineNo,InvCode) b ON a.DocNo = b.DocNo
  298. LEFT JOIN ICSCANewDetail d on b.Src_CADocNo=d.DocNo and b.Src_CADocLineNo=d.DocLineNo and b.InvCode=d.InvCode
  299. left join dbo.ICSPurchaseOrder e on d.PoCode=e.POCode and d.PoRow=e.Sequence
  300. LEFT JOIN " + Views + @" g ON d.EATTRIBUTE1=g.AutoID
  301. left join ICSINVENTORY f on d.InvCode=f.INVCODE and d.WorkPoint=f.WorkPoint
  302. WHERE a.DocNo = '{0}' ";
  303. sql = string.Format(sql, queryParam["DocNo"].ToString(), DBLANK);
  304. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  305. }
  306. /// <summary>
  307. /// 子表查询
  308. /// </summary>
  309. /// <param name="queryJson"></param>
  310. /// <param name="jqgridparam"></param>
  311. /// <returns></returns>
  312. public DataTable GetSubGridJson(string CartonNo, string queryJson, ref Pagination jqgridparam)
  313. {
  314. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  315. DataTable dt = new DataTable();
  316. //var queryParam = queryJson.ToJObject();
  317. List<DbParameter> parameter = new List<DbParameter>();
  318. string sql = @"SELECT a.ID,c.ItemCODE,d.INVNAME,c.VenderLotNO,c.LOTQTY,c.TYPE
  319. FROM dbo.ICSITEMLot2Carton a
  320. LEFT JOIN dbo.ICSCarton b ON a.CartonNO=b.CartonNO AND a.WorkPoint=b.WorkPoint
  321. LEFT JOIN dbo.ICSITEMLot c ON a.LotNo_ID=c.ID AND a.WorkPoint=c.WorkPoint
  322. LEFT JOIN dbo.ICSINVENTORY d ON c.ItemCODE=d.INVCODE AND a.WorkPoint=d.WorkPoint
  323. WHERE a.CartonNO='" + CartonNo + "' and a.WorkPoint='" + WorkPoint + "'";
  324. if (!string.IsNullOrEmpty(queryJson))
  325. {
  326. sql += @"UNION ALL
  327. SELECT a.ID,a.ItemCODE,b.INVNAME,a.VenderLotNO,a.LOTQTY,a.TYPE FROM
  328. dbo.ICSITEMLot a
  329. LEFT JOIN dbo.ICSINVENTORY b ON a.ItemCODE=b.INVCODE AND a.WorkPoint=b.WorkPoint
  330. WHERE a.ID IN (" + queryJson.TrimEnd(',') + ") and a.WorkPoint='" + WorkPoint + "'";
  331. }
  332. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  333. }
  334. public DataTable GetSubGridJsonByCreate(string POCode, string PORow)
  335. {
  336. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  337. DataTable dt = new DataTable();
  338. //var queryParam = queryJson.ToJObject();
  339. List<DbParameter> parameter = new List<DbParameter>();
  340. string sql = @"SELECT a.ID, a.POCode,a.PORow,a.PODate,a.ORDERNO,a.VenCode,a.VenName,a.InvCode,
  341. b.INVNAME,b.INVSTD,b.INVDESC,b.INVUOM,a.Quantity,ISNULL(c.CreatedQty,0) AS CreatedQty,isnull(c.InQty,0) as InQty,a.WorkPoint
  342. FROM dbo.ICSPO_PoMain a
  343. LEFT JOIN dbo.ICSINVENTORY b ON a.InvCode=b.INVCODE AND a.WorkPoint=b.WorkPoint
  344. LEFT JOIN (SELECT SUM(x.LOTQTY) CreatedQty,TransNO,TransLine,x.WorkPoint,
  345. SUM(CASE WHEN y.LotNO IS NOT NULL THEN x.LOTQTY ELSE 0 END) AS InQty
  346. FROM dbo.ICSITEMLot x
  347. LEFT JOIN dbo.ICSWareHouseLotInfo y ON x.LotNO=y.LotNO AND x.WorkPoint=y.WorkPoint
  348. GROUP BY TransNO,TransLine,x.WorkPoint) c ON a.POCode=c.TransNO AND a.PORow=c.TransLine AND a.WorkPoint=c.WorkPoint
  349. WHERE 1=1
  350. and a.POCode='" + POCode + "' and a.PORow='" + PORow + "' and a.WorkPoint='" + WorkPoint + "'";
  351. return Repository().FindTableBySql(sql.ToString());
  352. }
  353. public DataTable GetVendorLotNo(string VenCode, string WorkPoint)
  354. {
  355. DataTable dt = new DataTable();
  356. //var queryParam = queryJson.ToJObject();
  357. List<DbParameter> parameter = new List<DbParameter>();
  358. string dtPre = DateTime.Now.ToString("yyyyMMdd");
  359. string sql = @"EXEC Addins_GetSerialCode '" + WorkPoint + "','ICSITEMLotNo','VendorLotNo','" + VenCode + dtPre + "',2";
  360. return Repository().FindTableBySql(sql.ToString());
  361. }
  362. /// <summary>
  363. /// 生成条码
  364. /// </summary>
  365. /// <param name="POCode"></param>
  366. /// <param name="PORow"></param>
  367. /// <param name="keyValue"></param>
  368. /// <returns></returns>
  369. public int CreateItemLotNo(string POCode, string PORow, string keyValue)
  370. {
  371. var queryParam = keyValue.ToJObject();
  372. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  373. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  374. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  375. decimal LOTQTY = minPackQty;
  376. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  377. string VenCode = GetVendorCode(POCode, PORow, WorkPoint);
  378. string Pre = VenCode + DateTime.Now.ToString("yyMMdd");
  379. string sql = string.Empty;
  380. string VendorLot = queryParam["VendorLot"].ToString();
  381. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  382. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  383. for (int i = 0; i < createPageCount; i++)
  384. {
  385. if (i + 1 == createPageCount)
  386. {
  387. if (minPackQty * createPageCount > thisCreateQty)
  388. {
  389. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  390. }
  391. }
  392. string LotNo = GetSerialCode(WorkPoint, "ICSITEMLot", "LotNO", Pre, 5);
  393. sql += string.Format(@"INSERT INTO dbo.ICSITEMLot
  394. ( ID ,LotNO ,ItemCODE ,TransNO ,TransLine ,VENDORITEMCODE ,VENDORCODE ,
  395. VenderLotNO ,PRODUCTDATE ,LOTQTY ,ACTIVE ,Exdate ,WorkPoint ,
  396. MUSER ,MUSERName ,MTIME ,TYPE,ORDERNO)
  397. SELECT NEWID(),'{0}',InvCode,POCode,PORow,'',NULL,
  398. '{1}',GETDATE(),'{2}','Y','2999-12-31 00:00:00.000','{3}',
  399. '{4}','{5}',GETDATE(),'',ORDERNO
  400. FROM dbo.ICSPO_PoMain WHERE POCode='{6}' AND PORow='{7}' AND WorkPoint='{3}'",
  401. LotNo, VendorLot, LOTQTY, WorkPoint, MUSER, MUSERNAME, POCode, PORow);
  402. sql += "\r\n";
  403. }
  404. int count = SqlHelper.ExecuteNonQuery(sql);
  405. return count;
  406. }
  407. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  408. {
  409. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  410. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  411. return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  412. }
  413. public string GetVendorCode(string POCode, string PORow, string WorkPoint)
  414. {
  415. string sql = string.Format(@"SELECT VenCode FROM dbo.ICSPO_PoMain
  416. WHERE POCode='{0}' AND PORow='{1}' AND WorkPoint='{2}'", POCode, PORow, WorkPoint);
  417. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  418. string VenCode = string.Empty;
  419. if (dt != null && dt.Rows.Count > 0)
  420. {
  421. VenCode = dt.Rows[0][0].ToString();
  422. }
  423. return VenCode;
  424. }
  425. /// <summary>
  426. /// 删除送货单内的条码或者箱号
  427. /// </summary>
  428. /// <param name="keyValue"></param>
  429. /// <returns></returns>
  430. public string DeleteInfo(string keyValue, string WorkPoint, string objInvCode)
  431. {
  432. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  433. string msg = "";
  434. // string sql = string.Format(@"DELETE
  435. // FROM dbo.ICSInvoice
  436. // WHERE ID IN ({0}) and WorkPoint ='{1}' ", keyValue.TrimEnd(','), WorkPoint);
  437. string sql = string.Format(@"DELETE FROM ICSInvoiceNewDetail WHERE Src_CADocNo IN ({0}) and WorkPoint ='{1}'and InvCode in({2})
  438. DELETE FROM ICSInvoiceNew WHERE ID IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint, objInvCode.TrimEnd(','));
  439. try
  440. {
  441. SqlHelper.ExecuteNonQuery(sql);
  442. }
  443. catch (Exception ex)
  444. {
  445. msg = ex.Message;
  446. }
  447. return msg;
  448. }
  449. /// <summary>
  450. /// 删除对账单
  451. /// </summary>
  452. /// <param name="keyValue"></param>
  453. /// <returns></returns>
  454. public string DeleteDocNo(string keyValue, string WorkPoint)
  455. {
  456. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  457. string msg = "";
  458. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  459. WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
  460. string sql = string.Empty;
  461. if (string.IsNullOrEmpty(msg))
  462. {
  463. sql = string.Format(@"DELETE FROM ICSInvoiceNewDetail WHERE DocNo IN ({0}) and WorkPoint ='{1}'
  464. DELETE FROM ICSInvoiceNew WHERE DocNo IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
  465. SqlHelper.ExecuteNonQuery(sql);
  466. }
  467. return msg;
  468. }
  469. /// <summary>
  470. /// 删除对账单
  471. /// </summary>
  472. /// <param name="keyValue"></param>
  473. /// <returns></returns>
  474. public string UpdatePaperNo(string keyValue, string PaperNo, string WorkPoint, string dVouDate)
  475. {
  476. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  477. string msg = "";
  478. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  479. dVouDate = dVouDate.Substring(1, dVouDate.Length - 2);
  480. string sql = string.Empty;
  481. if (string.IsNullOrEmpty(msg))
  482. {
  483. sql = @"UPDATE ICSInvoiceNew SET PaperNo='{0}',dVouDate='{2}' WHERE DocNo={1}";
  484. sql = string.Format(sql, PaperNo, keyValue.TrimEnd(','), dVouDate);
  485. SqlHelper.ExecuteNonQuery(sql);
  486. }
  487. return msg;
  488. }
  489. public int UpDateByDocNo(string keyValue, string Status, string WorkPoint)
  490. {
  491. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  492. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  493. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  494. WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
  495. string sql = string.Empty;
  496. // try
  497. // {
  498. // sql = @"select c.EATTRIBUTE2
  499. // FROM ICSInvoiceNew a
  500. // left join ICSInvoiceNewDetail b on a.DocNo=b.DocNo and a.WorkPoint=b.WorkPoint
  501. // left join dbo.ICSCANewdetail c on b.Src_CadocNO=c.DocNO and b.WorkPoint=c.WorkPoint
  502. // where a.DocNo={0}";
  503. // DataTable dtcCode = SqlHelper.GetDataTableBySql(sql);
  504. // for (int i = 0; i < dtcCode.Rows.Count; i++)
  505. // {
  506. // if (string.IsNullOrWhiteSpace(dtcCode.Rows[i]["EATTRIBUTE2"].ToString()))
  507. // {
  508. // throw new Exception("采购入库单已发生变更,请联系采购员!");
  509. // }
  510. // }
  511. if (Status == "0")
  512. {
  513. sql = @"UPDATE ICSInvoiceNew SET STATUS = '{1}',PubUser = NULL,PubTime = NULL WHERE DocNo IN ({0})";
  514. sql = string.Format(sql, keyValue.TrimEnd(','), Status);
  515. }
  516. else if (Status == "1")
  517. {
  518. sql = @"UPDATE ICSInvoiceNew SET STATUS = '{1}',PubUser = '{2}',PubTime = GETDATE() WHERE DocNo IN ({0})";
  519. sql = string.Format(sql, keyValue.TrimEnd(','), Status, MUSER);
  520. }
  521. return SqlHelper.ExecuteNonQuery(sql);
  522. //}
  523. //catch (Exception ex)
  524. //{
  525. // throw new Exception(ex.Message);
  526. //}
  527. }
  528. public void UpDateByDocNoBYPush(string keyValue, string Status, string WorkPoint)
  529. {
  530. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  531. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  532. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  533. WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
  534. //string sqlU9 = "SELECT DBIpAddress,DBName FROM dbo.Sys_DataBase WHERE DBSourceName='ERP'";
  535. // DataTable dtU9 = SqlHelper.GetDataTableBySql(sqlU9);
  536. // string U9IP = dtU9.Rows[0]["DBIpAddress"].ToString();
  537. // string DBName = dtU9.Rows[0]["DBName"].ToString();
  538. string DBLANK = SqlHelper.GetItemsDetails("ERP001", WorkPoint);
  539. string Views = SqlHelper.GetItemsDetails("ViewsWorkpoint", WorkPoint);
  540. string sql = string.Empty;
  541. try
  542. {
  543. //sql = @"select d.AutoID as EATTRIBUTE2
  544. // FROM ICSInvoiceNew a
  545. // left join ICSInvoiceNewDetail b on a.DocNo=b.DocNo and a.WorkPoint=b.WorkPoint
  546. // left join dbo.ICSCANewdetail c on b.Src_CadocNO=c.DocNO and b.WorkPoint=c.WorkPoint
  547. // left join {1}.dbo.RdRecords01 d on c.EATTRIBUTE1=d.AutoID
  548. // where a.DocNo={0}";
  549. sql = @"select d.AutoID as EATTRIBUTE2
  550. FROM ICSInvoiceNew a
  551. left join ICSInvoiceNewDetail b on a.DocNo=b.DocNo and a.WorkPoint=b.WorkPoint
  552. left join dbo.ICSCANewdetail c on b.Src_CadocNO=c.DocNO and b.WorkPoint=c.WorkPoint AND b.Src_CADocLineNo=c.DocLineNo
  553. LEFT JOIN " + Views + @" d ON c.EATTRIBUTE1 = d.AutoID
  554. where a.DocNo in ({0})";
  555. sql = string.Format(sql, keyValue.TrimEnd(','), DBLANK);
  556. DataTable dtcCode = SqlHelper.GetDataTableBySql(sql);
  557. for (int i = 0; i < dtcCode.Rows.Count; i++)
  558. {
  559. if (string.IsNullOrWhiteSpace(dtcCode.Rows[i]["EATTRIBUTE2"].ToString()))
  560. {
  561. throw new Exception("采购入库单已发生变更,请联系采购员!");
  562. }
  563. }
  564. if (Status == "0")
  565. {
  566. sql = @"UPDATE ICSInvoiceNew SET STATUS = '{1}',PubUser = NULL,PubTime = NULL WHERE DocNo IN ({0})";
  567. sql = string.Format(sql, keyValue.TrimEnd(','), Status);
  568. }
  569. else if (Status == "1")
  570. {
  571. sql = @"UPDATE ICSInvoiceNew SET STATUS = '{1}',PubUser = '{2}',PubTime = GETDATE() WHERE DocNo IN ({0})";
  572. sql = string.Format(sql, keyValue.TrimEnd(','), Status, MUSER);
  573. }
  574. SqlHelper.ExecuteNonQuery(sql);
  575. }
  576. catch (Exception ex)
  577. {
  578. throw new Exception(ex.Message);
  579. }
  580. }
  581. public int UpDateByDocNoAdmin(string keyValue, string Status)
  582. {
  583. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  584. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  585. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  586. string sql = string.Empty;
  587. if (Status == "2")
  588. {
  589. sql = @"UPDATE ICSInvoiceNew SET STATUS = '{1}',CAComptTime = GETDATE(),CAComptUser = '{2}',ModifyTime = GETDATE(),ModifyUser = '{2}'
  590. WHERE DocNo IN ({0})";
  591. sql = string.Format(sql, keyValue.TrimEnd(','), Status, MUSER);
  592. }
  593. else if (Status == "3")
  594. {
  595. sql = @"UPDATE ICSInvoiceNew SET STATUS = '{1}',CAComptTime = NULL,CAComptUser = NULL,ModifyTime =NULL,ModifyUser = NULL
  596. WHERE DocNo IN ({0})";
  597. sql = string.Format(sql, keyValue.TrimEnd(','), Status);
  598. }
  599. return SqlHelper.ExecuteNonQuery(sql);
  600. }
  601. public void Bookkeeping2(string keyValue, string PaperNo, string WorkPoint)
  602. {
  603. WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
  604. string Views = SqlHelper.GetItemsDetails("ViewsWorkpoint", WorkPoint);
  605. string DBLANK = SqlHelper.GetItemsDetails("ERP001", WorkPoint);
  606. string sql = string.Empty;
  607. string msg = string.Empty;
  608. string U8ConnStr = string.Empty;
  609. //根据站点选择需要生成发票的u8数据库
  610. if (WorkPoint == "01")
  611. {
  612. U8ConnStr = ConfigurationManager.ConnectionStrings["U8connstr"].ConnectionString;
  613. }
  614. else if (WorkPoint == "02")
  615. {
  616. U8ConnStr = ConfigurationManager.ConnectionStrings["U8connstr02"].ConnectionString;
  617. }
  618. else if (WorkPoint == "03")
  619. {
  620. U8ConnStr = ConfigurationManager.ConnectionStrings["U8connstr03"].ConnectionString;
  621. }
  622. else
  623. {
  624. U8ConnStr = ConfigurationManager.ConnectionStrings["U8connstr"].ConnectionString;
  625. }
  626. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  627. PaperNo = PaperNo.Substring(1, PaperNo.Length - 2);
  628. DateTime date = Convert.ToDateTime(DateTime.Now);
  629. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  630. SqlConnection conn = new System.Data.SqlClient.SqlConnection(U8ConnStr);
  631. conn.Open();
  632. SqlTransaction sqlTran = conn.BeginTransaction();
  633. SqlCommand cmd = new SqlCommand();
  634. cmd.Transaction = sqlTran;
  635. cmd.Connection = conn;
  636. try
  637. {
  638. #region [查询发票号和供应商是否存在]
  639. string cContactCode = string.Empty;
  640. string cContactName = string.Empty;
  641. string BIDocNo = keyValue.TrimEnd(',').Replace("'", "");
  642. string[] PrintParas = BIDocNo.Split(',');
  643. PaperNo = PaperNo.TrimEnd(',');
  644. string[] PrintPara = PaperNo.Split(',');
  645. string VenderCode = string.Empty;
  646. for (int i = 0; i <= PrintParas.Length - 1; i++)
  647. {
  648. #region 判断入库单是否发生变更
  649. sql = @"select d.AutoID as EATTRIBUTE2
  650. FROM ICSInvoiceNew a
  651. left join ICSInvoiceNewDetail b on a.DocNo=b.DocNo and a.WorkPoint=b.WorkPoint
  652. left join dbo.ICSCANewdetail c on b.Src_CadocNO=c.DocNO and b.WorkPoint=c.WorkPoint
  653. left join {1}.dbo.RdRecords01 d on c.EATTRIBUTE1=d.AutoID
  654. where a.DocNo='{0}'";
  655. sql = string.Format(sql, PrintParas[i].ToString(), DBLANK);
  656. DataTable dtcCode = SqlHelper.GetDataTableBySql(sql);
  657. for (int s = 0; s < dtcCode.Rows.Count; s++)
  658. {
  659. if (string.IsNullOrWhiteSpace(dtcCode.Rows[s]["EATTRIBUTE2"].ToString()))
  660. {
  661. throw new Exception("采购入库单已发生变更,请联系采购员!");
  662. }
  663. }
  664. #endregion
  665. #region [获取发票的供应商编码]
  666. sql = @"SELECT SupplierCode FROM ICSInvoiceNew WHERE DocNo = '{0}'";
  667. sql = string.Format(sql, PrintParas[i].ToString());
  668. DataTable dtVender = SqlHelper.GetDataTableBySql(sql);
  669. if (dtVender != null && dtVender.Rows.Count > 0 && !string.IsNullOrWhiteSpace(dtVender.Rows[0][0].ToString()))
  670. VenderCode = dtVender.Rows[0][0].ToString();
  671. #endregion
  672. string sqlPurBillVouch = @"SELECT * FROM PurBillVouch WHERE cPBVCode = {0}";
  673. sqlPurBillVouch = string.Format(sqlPurBillVouch, PrintPara[i].ToString().Trim());
  674. DataTable dtPurBillVouch = SqlHelper.GetDataTableBySqlWithConn(U8ConnStr, sqlPurBillVouch);
  675. if (dtPurBillVouch != null && dtPurBillVouch.Rows.Count > 0 && !string.IsNullOrWhiteSpace(dtPurBillVouch.Rows[0][0].ToString()))
  676. {
  677. throw new Exception("发票号" + PrintPara[i].ToString().Trim() + "已存在!");
  678. }
  679. else
  680. {
  681. string sqlVendor = @"SELECT a.cVenCode,b.cContactCode,b.cContactName
  682. FROM Vendor a
  683. LEFT JOIN Ven_Contact b ON a.cVenPerson = b.cContactName
  684. WHERE a.cVenCode='{0}'";
  685. sqlVendor = string.Format(sqlVendor, VenderCode);
  686. DataTable dtVendor = SqlHelper.GetDataTableBySqlWithConn(U8ConnStr, sqlVendor);
  687. if (dtVendor != null && dtVendor.Rows.Count > 0)
  688. {
  689. if (string.IsNullOrWhiteSpace(dtVendor.Rows[0]["cVenCode"].ToString()))
  690. {
  691. throw new Exception("发票号" + PrintParas[i].ToString() + "U8供应商不存在!");
  692. }
  693. //else if (string.IsNullOrWhiteSpace(dtVendor.Rows[0]["cContactCode"].ToString()))
  694. //{
  695. // throw new Exception("发票号" + PrintParas[i].ToString() + "U8供应商联系人不存在!");
  696. //}
  697. else
  698. {
  699. cContactCode = dtVendor.Rows[0]["cContactCode"].ToString();
  700. cContactName = dtVendor.Rows[0]["cContactName"].ToString();
  701. }
  702. }
  703. }
  704. #endregion
  705. #region [回写U8发票]
  706. sql = @"SELECT DISTINCT a.invcode as cinvcode ,b.DocNo,e.InvoiceType,e.SupplierCode,e.Tax,e.ComptUser,c.CreatePerson,f. VenPayCond cVenPayCond,f.VenBank cVenBank,f.VenAccount cVenAccount,c.DepCode GroupCode,c.POCode,
  707. h.cCode as ReturnDoc,
  708. g.irowno as ReturnDocLine,
  709. e.dVouDate,a.Qty as Qty,c.POType SubjectCode
  710. --g.iQuantity as Qty
  711. from ICSInvoiceNewDetail a
  712. LEFT JOIN ICSInvoiceNew e ON a.DocNo = e.DocNo AND a.WorkPoint = e.WorkPoint
  713. LEFT JOIN ICSCANEWdetail b ON a.Src_Cadocno=b.DocNo and a.InvCode =b.InvCode AND a.sRC_CadocLineNO=b.DocLineNo
  714. --LEFT JOIN view_PoMain b ON a.ASNNo = b.DNNO AND a.InvCode = b.InvCode
  715. LEFT JOIN dbo.ICSPurchaseOrder c ON b.POCode=c.POCode AND b.PORow=c.Sequence
  716. LEFT JOIN dbo.ICSVendor f ON c.VenCode=f.VenCode AND c.WorkPoint=f.WorkPoint
  717. -- LEFT JOIN {1}.dbo.rdrecords01 g ON b.EATTRIBUTE1=g.AutoID
  718. --LEFT JOIN {1}.dbo.rdrecord01 h ON g.ID=h.ID
  719. LEFT JOIN (SELECT irowno,iQuantity,AutoID,ID FROM {1}.dbo.rdrecords01 )g ON b.EATTRIBUTE1=g.AutoID
  720. LEFT JOIN (SELECT cCode,ID FROM {1}.dbo.rdrecord01) h ON g.ID=h.ID
  721. WHERE a.DocNO = '{0}'";
  722. sql = string.Format(sql, PrintParas[i].ToString(), DBLANK);
  723. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  724. //int id = 0, did = 0;
  725. //string cVouchType = "PURBILL";
  726. string cAcc_Id = U8ConnStr.Substring(U8ConnStr.IndexOf("UFDATA_") + 7, 3);
  727. //FindInvoiceIDFromERP(U8ConnStr, cVouchType, cAcc_Id, dt.Rows.Count, out id, out did);
  728. //判断是否在U8中开票过
  729. string ISPUR = @" select * from " + Views + @" v
  730. LEFT JOIN ICSCANEWdetail b ON b.EATTRIBUTE1=v.AutoID
  731. LEFT JOIN ICSInvoiceNewDetail c ON c.Src_Cadocno = b.DocNo and c.Src_CADocLineNo=b.DocLineNo AND b.WorkPoint = c.WorkPoint
  732. LEFT JOIN ICSInvoiceNew e ON c.DocNo = e.DocNo AND c.WorkPoint = e.WorkPoint
  733. where e.DocNO ='{0}'";
  734. ISPUR = string.Format(ISPUR, PrintParas[i].ToString(), DBLANK);
  735. DataTable dtPUR = SqlHelper.GetDataTableBySql(ISPUR);
  736. if (dtPUR == null || dtPUR.Rows.Count <= 0)
  737. {
  738. throw new Exception("发票号:" + PrintPara[i].ToString().Trim() + "中的入库单已在U8中开票,无法记账!");
  739. }
  740. sql = "";
  741. string SqlDetail = "";
  742. if (dt != null)
  743. {
  744. Dictionary<string, int> dic = SqlHelper.GetAllCode("" + cAcc_Id + "", "PURBILL", "" + dt.Rows.Count + "");
  745. int iFatherId = Convert.ToInt32(dic["iFatherId"].ToString());
  746. int iChildId = Convert.ToInt32(dic["iChildId"].ToString());
  747. #region [主表]
  748. string cPBVBillType = dt.Rows[0]["InvoiceType"].ToString();
  749. string SubjectCode = dt.Rows[0]["SubjectCode"].ToString();
  750. string cVenCode = dt.Rows[0]["SupplierCode"].ToString();
  751. string iPBVTaxRate = dt.Rows[0]["Tax"].ToString();
  752. string cPBVMaker = dt.Rows[0]["CreatePerson"].ToString();
  753. if (string.IsNullOrWhiteSpace(cPBVMaker))
  754. {
  755. throw new Exception("发票号" + PrintParas[i].ToString() + "制单人不存在!");
  756. }
  757. string DepCode = dt.Rows[0]["GroupCode"].ToString();//部门编码
  758. string VenPayCond = dt.Rows[0]["cVenPayCond"].ToString();//支付方式
  759. string cVenBank = dt.Rows[0]["cVenBank"].ToString();//银行
  760. string cVenAccount = dt.Rows[0]["cVenAccount"].ToString();//银行账号
  761. string dVouDate = dt.Rows[0]["dVouDate"].ToString();//开票时间
  762. // string sqlErp = @" INSERT INTO PurBillVouch (PBVID,cPBVBillType,cPBVCode,cPTCode,dPBVDate,
  763. // cVenCode,cUnitCode,cexch_name,cExchRate,iPBVTaxRate,cPBVMemo,cInCode,cBusType,
  764. // cPBVMaker,bNegative,bOriginal,bFirst,iVTid,cSource,iDiscountTaxType,
  765. // cContactCode,cVenPerson,IsWfControlled)
  766. // select {0},'{1}',{2},'99',GETDATE(),
  767. // '{3}','{3}','人民币',1,{4},'',cCode,'普通采购',
  768. // '{5}',0,0,0,8163,'采购','{6}','{7}','{8}',0
  769. // from RdRecord01 a
  770. // Left join RdRecords01 b on a.ID =b.ID
  771. // Where cCode ='{9}'and irowno='{10}'";
  772. string sqlErp = "";
  773. if (VenPayCond != "")
  774. {
  775. sqlErp = @" INSERT INTO PurBillVouch (PBVID,cPBVBillType,cPBVCode,cPTCode,dPBVDate,
  776. cVenCode,cUnitCode,cexch_name,cExchRate,iPBVTaxRate,cPBVMemo,cInCode,cBusType,
  777. cPBVMaker,bNegative,bOriginal,bFirst,iVTid,cSource,iDiscountTaxType,
  778. cContactCode,cVenPerson,IsWfControlled,cDepCode,cPayCode ,cVenAccount
  779. ,cVenBank,dVouDate,cPersonCode )
  780. VALUES({0},'{1}',{2},'{14}',CONVERT(varchar(12),GETDATE(),23),
  781. '{3}','{3}','',1,{4},'','cInCode','',
  782. '{5}',0,0,0,131468,'',0
  783. ,'{7}','{8}',0,'{9}','{10}','{11}','{12}','{13}','{15}')";
  784. }
  785. else
  786. {
  787. sqlErp = @" INSERT INTO PurBillVouch (PBVID,cPBVBillType,cPBVCode,cPTCode,dPBVDate,
  788. cVenCode,cUnitCode,cexch_name,cExchRate,iPBVTaxRate,cPBVMemo,cInCode,cBusType,
  789. cPBVMaker,bNegative,bOriginal,bFirst,iVTid,cSource,iDiscountTaxType,
  790. cContactCode,cVenPerson,IsWfControlled,cDepCode,cPayCode ,cVenAccount,
  791. cVenBank,dVouDate,cPersonCode )
  792. VALUES({0},'{1}',{2},'{14}',CONVERT(varchar(12),GETDATE(),23),
  793. '{3}','{3}','',1,{4},'','cInCode','',
  794. '{5}',0,0,0,131468,'',0
  795. ,'{7}','{8}',0,'{9}',NUll,'{11}','{12}','{13}','{15}')";
  796. }
  797. sqlErp = string.Format(sqlErp, iFatherId, cPBVBillType, PrintPara[i].ToString().Trim(), cVenCode, Convert.ToDecimal(iPBVTaxRate),
  798. cPBVMaker, cPBVBillType, cContactCode, cContactName, DepCode, VenPayCond, cVenAccount, cVenBank, dVouDate, SubjectCode, MUSER);
  799. cmd.CommandText = sqlErp;
  800. try
  801. {
  802. int count = cmd.ExecuteNonQuery();
  803. if (count <= 0)
  804. {
  805. throw new Exception("发票号" + PrintParas[i].ToString() + "生成发票单表头失败,受影响行数<=0;");
  806. }
  807. }
  808. catch (Exception ex)
  809. {
  810. throw new Exception("发票号" + PrintParas[i].ToString() + "生成发票单表头失败!异常:" + ex.Message + ";SQL:\r\n" + sql, ex);
  811. }
  812. //int main = SqlHelper.ExecuteNonQueryWithConn(U8ConnStr, sqlErp);
  813. //if (main <= 0)
  814. // msg = "主表插入失败!";
  815. #region [子表]
  816. int rowCount = 0;
  817. foreach (DataRow row in dt.Rows)
  818. {
  819. rowCount++;
  820. //string ReturnDoc = row["ReturnDoc"].ToString();
  821. //string ReturnDocLine = row["ReturnDocLine"].ToString();
  822. string cInvCode = row["cinvcode"].ToString();
  823. decimal iPBVQuantity = Convert.ToDecimal(row["Qty"].ToString());
  824. string ReturnDoc = row["ReturnDoc"].ToString();
  825. string ReturnDocLine = row["ReturnDocLine"].ToString();
  826. //string cPBVBillType = dt.Rows[0]["InvoiceType"].ToString();
  827. //string iPBVTaxRate = dt.Rows[0]["Tax"].ToString();
  828. //decimal taxPrice = Convert.ToDecimal(row["TaxPriceSell"].ToString());
  829. //decimal price = 0;
  830. //decimal iOriMoney = 0;
  831. //decimal iOriTaxPrice = 0;
  832. //decimal ioriSum = 0;
  833. //decimal tax = Convert.ToDecimal(iPBVTaxRate) / 100;
  834. //if (cPBVBillType == "01")
  835. //{
  836. // price = taxPrice / (1 + tax);//无税单价
  837. // iOriMoney = Math.Round(price * iPBVQuantity, 2, MidpointRounding.AwayFromZero);//金额
  838. // iOriTaxPrice = Math.Round(decimal.Parse(iOriMoney.ToString()) * tax, 2, MidpointRounding.AwayFromZero);//税额
  839. // ioriSum = Math.Round(decimal.Parse(taxPrice.ToString()) * iPBVQuantity, 2, MidpointRounding.AwayFromZero);//价税合计
  840. //}
  841. //else
  842. //{
  843. // price = taxPrice - taxPrice * tax;
  844. // iOriMoney = Math.Round(price * iPBVQuantity, 2, MidpointRounding.AwayFromZero);//金额
  845. // iOriTaxPrice = Math.Round(taxPrice * tax * iPBVQuantity, 2, MidpointRounding.AwayFromZero);//税额
  846. // ioriSum = Math.Round(decimal.Parse(taxPrice.ToString()) * iPBVQuantity, 2, MidpointRounding.AwayFromZero);//价税合计
  847. //}
  848. string sqlErps = @"
  849. INSERT INTO PurBillVouchs
  850. (ID,PBVID,cInvCode,bExBill,iPBVQuantity,
  851. iNum,iOriCost,iOriTaxCost,iOriTaxPrice,iOriMoney,
  852. iOriSum,iCost,iMoney,iTaxPrice,iSum,
  853. iTaxRate,RdsId,UpSoType,bCosting,bTaxCost,
  854. iinvexchrate,brettax,ivouchrowno,iPOsID)
  855. select {0},{1},'{2}', 0,{3},
  856. 0,b.iOriCost,
  857. ROUND(iOriTaxCost,4) AS iOriTaxCost,--
  858. ROUND(iOriTaxPrice,2) AS iOriTaxPrice ,--
  859. ROUND(iOriMoney,2)AS iOriMoney,--
  860. ROUND(b.iOriSum,2) AS iOriSum,--
  861. ROUND(iUnitCost,4) AS iCost,--
  862. ROUND(b.iPrice,2) AS iMoney,--
  863. ROUND(iTaxPrice,2) AS iTaxPrice, -- 
  864. --round(round(round(iOriCost*a.iExchRate,4)*{3} ,2)*(1+b.iTaxRate /100),2) AS iSum,
  865. round(b.iSum,2) AS iSum,--
  866. b.iTaxRate,
  867. b.AutoID ,'rd',0,1,0,
  868. 0,{4},b.iPOsID
  869. from RdRecord01 a
  870. Left join RdRecords01 b on a.ID =b.ID
  871. LEFT JOIN dbo.exch z ON a.cExch_Name =z.cexch_name AND z.itype='2' AND z.iYear='{7}' AND z.iperiod='{8}'
  872. Where cCode ='{5}'and irowno='{6}'";
  873. sqlErps += @"update b set iSumBillQuantity=isnull(c.iPBVQuantity,0)
  874. from RdRecord01 a inner join RdRecords01 b on a.id=b.ID
  875. Left join RdRecord01 d on a.ID =d.ID
  876. left join (
  877. select RdsId,sum(isnull(iPBVQuantity ,0)) iPBVQuantity from PurBillVouchs group by RdsId) c on b.autoid=c.RdsId
  878. Where d.cCode ='{5}'and b.irowno='{6}'";
  879. sqlErps = string.Format(sqlErps, iChildId, iFatherId, cInvCode, iPBVQuantity, rowCount, ReturnDoc, ReturnDocLine, date.Year, date.Month);
  880. cmd.CommandText = sqlErps;
  881. try
  882. {
  883. int count = cmd.ExecuteNonQuery();
  884. if (count <= 0)
  885. {
  886. throw new Exception("发票号" + PrintParas[i].ToString() + "生成发票单表体失败,受影响行数<=0;");
  887. }
  888. }
  889. catch (Exception ex)
  890. {
  891. throw new Exception("发票号" + PrintParas[i].ToString() + "生成发票单表体失败!异常:" + ex.Message + ";SQL:\r\n" + sql, ex);
  892. }
  893. //int sub = SqlHelper.ExecuteNonQueryWithConn(U8ConnStr, sqlErps);
  894. //if (sub <= 0)
  895. // msg = "子表插入失败!";
  896. iChildId--;
  897. }
  898. SqlDetail = @"update x set iInvQTY=y.iQuantity,fPoValidQuantity=y.iQuantity
  899. from PO_Podetails x inner join (
  900. select a.iPOsID ,sum(a.iQuantity)iQuantity from RdRecords01 a right join PurBillVouchs b on a.autoid=b.RdsId
  901. inner join PurBillVouch c on b.pbvid=c.pbvid where cPBVCode in ({0})
  902. group by a.iPOsID) y on x.ID=y.iPOsID
  903. ";
  904. SqlDetail += @"update aa set iInvMoney=bb.iOriSum,iNatInvMoney=bb.iSum
  905. from PO_Podetails aa
  906. right join
  907. (select iPOsID,sum(isnull(iOriSum ,0)) as iOriSum,sum(isnull(iSum ,0)) as iSum
  908. from PurBillVouch a inner JOIN PurBillVouchs b on a.pbvid=b.pbvid
  909. where cPBVCode in ({0})
  910. group by iPOsID) bb on aa.id=bb.iPOsID
  911. ";
  912. SqlDetail = string.Format(SqlDetail, PrintPara[i].ToString().Trim());
  913. cmd.CommandText = SqlDetail;
  914. try
  915. {
  916. int count = cmd.ExecuteNonQuery();
  917. if (count <= 0)
  918. {
  919. throw new Exception("发票号" + PrintParas[i].ToString() + "回写采购订单失败,受影响行数<=0;");
  920. }
  921. }
  922. catch (Exception ex)
  923. {
  924. throw new Exception("发票号" + PrintParas[i].ToString() + "回写采购订单失败!异常:" + ex.Message + ";SQL:\r\n" + sql, ex);
  925. }
  926. //int subqty = SqlHelper.ExecuteNonQueryWithConn(U8ConnStr, SqlDetail);
  927. //if (subqty <= 0)
  928. // msg = "回写采购订单失败!";
  929. #endregion
  930. }
  931. #endregion
  932. }
  933. cmd.Transaction.Commit();
  934. #endregion
  935. #region [更新发票状态和信息]
  936. sql = @"UPDATE ICSInvoiceNew SET Status = '2',ModifyUser = '{1}',ModifyTime = GETDATE(),
  937. ComptUser = '{1}',ComptTime = GETDATE(),IsERP = 1
  938. WHERE DocNo IN ({0})";
  939. sql = string.Format(sql, keyValue.TrimEnd(','), MUSER);
  940. SqlHelper.ExecuteNonQuery(sql);
  941. #endregion
  942. }
  943. catch (Exception ex)
  944. {
  945. string sqlError = @"UPDATE ICSInvoiceNew SET Status = '1',ModifyUser = NULL,ModifyTime = NULL,
  946. ComptUser = NULL,ComptTime = NULL,IsERP = NULL
  947. WHERE DocNo IN ({0})";
  948. sqlError = string.Format(sqlError, keyValue.TrimEnd(','));
  949. SqlHelper.ExecuteNonQuery(sqlError);
  950. msg += ex.Message;
  951. cmd.Transaction.Rollback();
  952. throw new Exception(ex.Message);
  953. }
  954. finally
  955. {
  956. if (conn.State == ConnectionState.Open)
  957. {
  958. conn.Close();
  959. }
  960. conn.Dispose();
  961. }
  962. }
  963. public string Bookkeeping(string keyValue, string PaperNo, string WorkPoint)
  964. {
  965. string sql = string.Empty;
  966. string sqlUp = string.Empty;
  967. string msg = string.Empty;
  968. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  969. DateTime date = Convert.ToDateTime(DateTime.Now);
  970. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  971. string MUSERName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  972. try
  973. {
  974. sql = @"SELECT DISTINCT
  975. a.DocNo+a.WorkPoint as Costre,
  976. a.DocNo,a.WorkPoint,
  977. e.PaperNo,
  978. e.InvoiceType cPBVBillType,
  979. e.SupplierCode cVenCode,cast(e.Tax as nvarchar(50)) iPBVTaxRate,
  980. e.ComptUser,f. VenPayCond ,f.VenBank cVenBank,
  981. f.VenAccount cVenAccount,c.DepCode DepCode,
  982. e.dVouDate dPBVDate
  983. ,c.POType SubjectCode,
  984. a.invcode as cInvCode ,
  985. cast(a.Qty as nvarchar(50)) as iPBVQuantity,
  986. b.EATTRIBUTE2 as ReturnDocID,
  987. b.EATTRIBUTE1 as ReturnDocLineID,
  988. cast(year(GETDATE()) as nvarchar(50)) [Year],
  989. cast(MONTH(GETDATE()) as nvarchar(50)) [Month]
  990. INTO #TempERP
  991. from ICSInvoiceNewDetail a
  992. LEFT JOIN ICSInvoiceNew e ON a.DocNo = e.DocNo AND a.WorkPoint = e.WorkPoint
  993. LEFT JOIN ICSCANEWdetail b ON a.Src_Cadocno=b.DocNo and a.InvCode =b.InvCode AND a.sRC_CadocLineNO=b.DocLineNo
  994. LEFT JOIN dbo.ICSPurchaseOrder c ON b.POCode=c.POCode AND b.PORow=c.Sequence
  995. LEFT JOIN dbo.ICSVendor f ON c.VenCode=f.VenCode AND c.WorkPoint=f.WorkPoint
  996. where a.DocNo in (" + keyValue.TrimEnd(',') + @")
  997. select distinct Costre,WorkPoint,cPBVBillType,PaperNo as cPBVCode,dPBVDate,cVenCode,iPBVTaxRate,'" + MUSERName + "' as cPBVMaker, '" + MUSER + "' as cContactCode,'" + MUSER + @"' as MUSER,SubjectCode,getdate(),cVenBank,cVenAccount,VenPayCond,DepCode,'' as cContactName FROM #TempERP
  998. select Costre, WorkPoint,cInvCode,iPBVQuantity, ReturnDocID,ReturnDocLineID,Year,Month FROM #TempERP
  999. DROP TABLE #TempERP";
  1000. DataSet DSet = SqlHelper.GetDataSetBySql(sql);
  1001. string Inputstr = SqlHelper.DataSetToJson(DSet, "details", "Costre");
  1002. string APIURL = ConfigurationManager.ConnectionStrings["ERPAPIURL"].ConnectionString + "PurBillVouch/Create";
  1003. string result = HttpPost(APIURL, Inputstr);
  1004. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  1005. string MessAge = Obj["Message"].ToString();
  1006. string Success = Obj["Success"].ToString();
  1007. if (Success.ToUpper() == "FALSE")
  1008. {
  1009. throw new Exception("ERP接口调用失败:" + MessAge);
  1010. }
  1011. else
  1012. {
  1013. sqlUp = @"UPDATE ICSInvoiceNew SET Status = '2',ModifyUser = '{1}',ModifyTime = GETDATE(),
  1014. ComptUser = '{1}',ComptTime = GETDATE(),IsERP = 1
  1015. WHERE DocNo IN ({0})";
  1016. sqlUp = string.Format(sqlUp, keyValue.TrimEnd(','), MUSER);
  1017. SqlHelper.ExecuteNonQuery(sqlUp);
  1018. }
  1019. }
  1020. catch (Exception ex)
  1021. {
  1022. msg = ex.Message;
  1023. }
  1024. return msg;
  1025. }
  1026. public static string HttpPost(string url, string body)
  1027. {
  1028. try
  1029. {
  1030. Encoding encoding = Encoding.UTF8;
  1031. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  1032. request.Method = "POST";
  1033. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  1034. request.ContentType = "application/json; charset=utf-8";
  1035. byte[] buffer = encoding.GetBytes(body);
  1036. request.ContentLength = buffer.Length;
  1037. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  1038. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  1039. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  1040. {
  1041. return reader.ReadToEnd();
  1042. }
  1043. }
  1044. catch (WebException ex)
  1045. {
  1046. throw new Exception(ex.Message);
  1047. }
  1048. }
  1049. public int ReturnByDocNo(string keyValue, string WorkPoint)
  1050. {
  1051. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1052. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1053. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  1054. string sql = @"UPDATE ICSInvoiceNew SET Status = '3',IsERP = NULL
  1055. WHERE DocNo IN ({0})";
  1056. sql = string.Format(sql, keyValue.TrimEnd(','));
  1057. return SqlHelper.ExecuteNonQuery(sql);
  1058. }
  1059. // public static void FindInvoiceIDFromERP(string connectstring, string IDtype, string cAcc_id, int rowCount, out int id, out int DID)
  1060. // {
  1061. // try
  1062. // {
  1063. // string str = @"DECLARE @ID int
  1064. // DECLARE @DID int
  1065. // SET @ID = 0
  1066. // SET @DID = 0
  1067. //
  1068. // IF NOT EXISTS (SELECT * FROM ufsystem..ua_identity WHERE cacc_id = '{0}' AND cVouchType = '{1}')
  1069. // BEGIN
  1070. // INSERT INTO ufsystem..ua_identity(cAcc_Id,cVouchType,iFatherId,iChildId) VALUES('{0}','{1}',1,1)
  1071. //
  1072. // SELECT @ID = ifatherID + 1 ,@DID = ichildID + {2}
  1073. // FROM ufsystem..ua_identity
  1074. // WHERE cVouchType = '{1}'
  1075. // AND cAcc_id = '{0}'
  1076. // END
  1077. // ELSE
  1078. // BEGIN
  1079. // UPDATE ufsystem..ua_identity
  1080. // SET ifatherID = ifatherID + 1,ichildID = ichildID + {2}
  1081. // WHERE cVouchType = '{1}' AND cAcc_id = '{0}'
  1082. // END
  1083. // select ifatherID ID,ichildID DID FROM ufsystem..ua_identity
  1084. // WHERE cVouchType = '{1}' AND cAcc_id = '{0}' ";
  1085. // str = string.Format(str, cAcc_id, IDtype, rowCount.ToString());
  1086. // DataTable dt = SqlHelper.GetDataTableBySqlWithConn(connectstring, str);
  1087. // if (dt.Rows.Count == 0)
  1088. // {
  1089. // throw new Exception("ID取得失败");
  1090. // }
  1091. // id = Convert.ToInt32(dt.Rows[0]["ID"]) + 1000000000;
  1092. // DID = Convert.ToInt32(dt.Rows[0]["DID"]) + 1000000000;
  1093. // }
  1094. // catch (Exception ex)
  1095. // {
  1096. // throw new Exception(ex.Message);
  1097. // }
  1098. // }
  1099. public string ChangeStatusBySTNO(string keyValue)
  1100. {
  1101. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1102. string msg = "";
  1103. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  1104. string sql = string.Empty;
  1105. sql = "SELECT STNO FROM dbo.ICSPOArrive WHERE STNO IN (" + keyValue.TrimEnd(',') + ")";
  1106. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1107. foreach (DataRow dr in dt.Rows)
  1108. {
  1109. string STNO = dr["STNO"].ToString();
  1110. if (!string.IsNullOrEmpty(STNO))
  1111. {
  1112. msg += "送货单号:" + STNO + "已生成到货单,无法删除!";
  1113. }
  1114. }
  1115. if (string.IsNullOrEmpty(msg))
  1116. {
  1117. sql = string.Format(@"DELETE FROM dbo.ICSASNDETAIL WHERE STNO IN ({0}) and WorkPoint ='{1}'
  1118. DELETE FROM dbo.ICSASN WHERE STNO IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
  1119. SqlHelper.ExecuteNonQuery(sql);
  1120. }
  1121. return msg;
  1122. }
  1123. /// <summary>
  1124. /// 删除送货单
  1125. /// </summary>
  1126. /// <param name="keyValue"></param>
  1127. /// <returns></returns>
  1128. public string DeleteCartonNo(string keyValue)
  1129. {
  1130. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1131. string msg = "";
  1132. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  1133. string sql = string.Format(@"SELECT * FROM dbo.ICSASNDETAIL
  1134. WHERE LOTNO IN (
  1135. SELECT LotNO FROM dbo.ICSITEMLot2Carton WHERE CartonNO in ({0}) and WorkPoint='{1}') and WorkPoint='{1}'", keyValue.TrimEnd(','), WorkPoint);
  1136. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1137. if (dt == null || dt.Rows.Count <= 0)
  1138. {
  1139. sql = string.Format(@"DELETE FROM dbo.ICSCarton WHERE CartonNO in ({0}) and WorkPoint='{1}'
  1140. DELETE FROM dbo.ICSITEMLot2Carton WHERE CartonNO in ({0}) and WorkPoint='{1}' ", keyValue.TrimEnd(','), WorkPoint);
  1141. DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1142. }
  1143. else
  1144. {
  1145. msg = "所选箱号中已有加入送货单中,请先在送单号中删除!";
  1146. }
  1147. return msg;
  1148. }
  1149. /// <summary>
  1150. /// 选择明细
  1151. /// </summary>
  1152. /// <returns></returns>
  1153. /// 增加EATTRIBUTE2记录入库单号 判断U8入库单是否有更改
  1154. public DataTable GetInfoByVenCode(string queryJson, ref Pagination jqgridparam, string WorkPoint)
  1155. {
  1156. var queryParam = queryJson.ToJObject();
  1157. WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
  1158. List<DbParameter> parameter = new List<DbParameter>();
  1159. //string sqlU9 = "SELECT DBIpAddress,DBName FROM dbo.Sys_DataBase WHERE DBSourceName='ERP'";
  1160. //DataTable dtU9 = SqlHelper.GetDataTableBySql(sqlU9);
  1161. //string U9IP = dtU9.Rows[0]["DBIpAddress"].ToString();
  1162. //string DBName = dtU9.Rows[0]["DBName"].ToString();
  1163. string DBLANK = SqlHelper.GetItemsDetails("ERP001", WorkPoint);
  1164. string Views = SqlHelper.GetItemsDetails("ViewsWorkpoint", WorkPoint);
  1165. // string sql = @"SELECT b.ID,a.DocNo AS ASDocNo,c.InvCode,d.InvName,d.InvStd,
  1166. // sum(CAST(b.qty AS DECIMAL(18,2))) AS RkQty,
  1167. // d.InvUnit InvUom,CAST(c.UnitPrice AS DECIMAL(18,2)) AS PoPrice,
  1168. // CAST(c.UnitPrice*a.Tax AS DECIMAL(18,2)) AS TotalPrice,
  1169. // CONVERT(VARCHAR(100),a.MTIME,23) AS ASDate,
  1170. // CASE a.Status WHEN 0 THEN '开立' WHEN 1 THEN '发布' WHEN 2 THEN '完成' WHEN 3 THEN '退回' END STATUS,
  1171. // c.POCode AS POCode,CONVERT(VARCHAR(100),c.ReleaseDate,23) AS PODate,a.SupplierCode,f.AutoID as EATTRIBUTE2
  1172. // FROM ICSCANew a
  1173. // INNER JOIN ICSCANewDetail b ON a.DocNo = b.DocNo
  1174. // left join {0}.dbo.RdRecords01 f on b.EATTRIBUTE1=f.AutoID
  1175. // LEFT JOIN dbo.ICSPurchaseOrder c ON b.pocode = c.pocode AND b.porow=c.Sequence
  1176. //LEFT JOIN ICSINVENTORY d ON c.invCode=d.invCode AND d.WorkPoint=c.WorkPoint
  1177. // LEFT JOIN ICSInvoiceNewDetail e ON b.DocNo=e.Src_CADocNo AND b.DocLineNo=e.Src_CADocLineNo
  1178. // WHERE 1=1 AND a.Status = 2 AND e.DocNo IS NULL";
  1179. string sql = @"SELECT b.ID,a.DocNo AS ASDocNo,c.InvCode,d.InvName,d.InvStd,
  1180. sum(CAST(b.qty AS DECIMAL(18,2))) AS RkQty,
  1181. d.InvUnit InvUom,CAST(c.UnitPrice AS DECIMAL(18,2)) AS PoPrice,
  1182. CAST(c.UnitPrice*a.Tax AS DECIMAL(18,2)) AS TotalPrice,
  1183. CONVERT(VARCHAR(100),a.MTIME,23) AS ASDate,
  1184. CASE a.Status WHEN 0 THEN '' WHEN 1 THEN '' WHEN 2 THEN '' WHEN 3 THEN '退' END STATUS,
  1185. c.POCode AS POCode,CONVERT(VARCHAR(100),c.ReleaseDate,23) AS PODate,a.SupplierCode,f.AutoID as EATTRIBUTE2
  1186. FROM ICSCANew a
  1187. INNER JOIN ICSCANewDetail b ON a.DocNo = b.DocNo
  1188. LEFT JOIN " + Views + @" f ON b.EATTRIBUTE1=f.AutoID
  1189. LEFT JOIN dbo.ICSPurchaseOrder c ON b.pocode = c.pocode AND b.porow=c.Sequence
  1190. LEFT JOIN ICSINVENTORY d ON c.invCode=d.invCode AND d.WorkPoint=c.WorkPoint
  1191. LEFT JOIN ICSInvoiceNewDetail e ON b.DocNo=e.Src_CADocNo AND b.DocLineNo=e.Src_CADocLineNo
  1192. WHERE 1=1 AND a.Status = 2 AND e.DocNo IS NULL";
  1193. // --AND a.STNO NOT IN (SELECT Src_ASNDocNo FROM ICSCADetail) AND a.SupplierCode = '51085'
  1194. if (!string.IsNullOrEmpty(queryJson))
  1195. {
  1196. if (!string.IsNullOrWhiteSpace(queryParam["ASDocNo"].ToString()))
  1197. sql += " AND a.DocNo like '%" + queryParam["ASDocNo"].ToString() + "%'";
  1198. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  1199. sql += " AND c.InvCode like '%" + queryParam["InvCode"].ToString() + "%'";
  1200. //if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  1201. // sql += " AND c.InvName like '%" + queryParam["InvName"].ToString() + "%'";
  1202. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  1203. sql += " AND d.InvName like '%" + queryParam["InvName"].ToString() + "%'";
  1204. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  1205. sql += " AND c.POCode like '%" + queryParam["POCode"].ToString() + "%'";
  1206. }
  1207. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  1208. sql += " AND a.SupplierCode in (SELECT VenCode FROM ICSVendor where VenName = '" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'AND WorkPoint=a.WorkPoint)";
  1209. else
  1210. sql += " AND a.SupplierCode = '" + queryParam["VenCode"].ToString() + "'";
  1211. sql += " AND a.WorkPoint='" + WorkPoint + "'";
  1212. sql += @" GROUP BY b.ID,a.DocNo,c.InvCode,d.InvName,d.InvStd,d.InvUnit,c.UnitPrice,a.MTIME,a.Status,
  1213. c.POCode,c.ReleaseDate,a.SupplierCode,a.Tax,f.AutoID ";
  1214. sql = string.Format(sql, DBLANK);
  1215. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1216. }
  1217. /// <summary>
  1218. /// 获取供应商列表
  1219. /// </summary>
  1220. /// <returns></returns>
  1221. public DataTable GetVendor()
  1222. {
  1223. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1224. string sql = @"
  1225. select '' as F_VenCode,'' as cVenName
  1226. union all
  1227. SELECT DISTINCT a.F_VenCode,isnull(b.VenName,'') as cVenName FROM dbo.Sys_SRM_User a
  1228. LEFT JOIN dbo.ICSVendor b ON a.F_VenCode=b.VenCode and a.F_Location=b.WorkPoint
  1229. WHERE a.F_VenCode IS NOT NULL AND a.F_VenCode <>''";
  1230. string role = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
  1231. if (role != "admin")
  1232. {
  1233. sql += " and b.WorkPoint in (" + WorkPoint + ")";
  1234. }
  1235. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1236. return dt;
  1237. }
  1238. public string GetDocNo(string InvoiceType, string WorkPoint, string Vendor)
  1239. {
  1240. string DocNo = string.Empty;
  1241. //string SupplierCode = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
  1242. string SupplierName = string.Empty;
  1243. if (!string.IsNullOrEmpty(Vendor))
  1244. {
  1245. string Date = DateTime.Now.ToString("yy");
  1246. string Pre = "BI" + Vendor + Date;
  1247. DocNo = GetSerialCode(WorkPoint, "ICSInvoiceNew", "DocNo", Pre, 5);
  1248. SupplierName = GetSupplierName(Vendor, WorkPoint);
  1249. }
  1250. if (!string.IsNullOrEmpty(DocNo))
  1251. {
  1252. string sql = string.Empty;
  1253. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1254. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1255. sql = @"INSERT INTO ICSInvoiceNew (ID,DocNo,Status,BizType,SupplierCode,SupplierName,Tax,InvoiceType,MUSER,MUSERName,MTIME,WorkPoint)
  1256. VALUES (NEWID(),'{0}',0,0,'{1}','{2}',17,'{3}','{4}','{5}',GETDATE(),'{6}')";
  1257. sql = string.Format(sql, DocNo, Vendor, SupplierName, InvoiceType, MUSER, MUSERNAME, WorkPoint);
  1258. try
  1259. {
  1260. SqlHelper.ExecuteNonQuery(sql);
  1261. }
  1262. catch (Exception ex)
  1263. {
  1264. throw new Exception(ex.Message);
  1265. }
  1266. }
  1267. return DocNo;
  1268. }
  1269. public string GetDocNoByPerson(string SupplierCode, string InvoiceType, string WorkPoint)
  1270. {
  1271. string DocNo = string.Empty;
  1272. string Date = DateTime.Now.ToString("yy");
  1273. string Pre = "BI" + SupplierCode + Date;
  1274. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1275. DocNo = GetSerialCode(WorkPoint, "ICSInvoiceNew", "DocNo", Pre, 5);
  1276. if (!string.IsNullOrEmpty(DocNo))
  1277. {
  1278. string sql = string.Empty;
  1279. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1280. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1281. string SupplierName = GetSupplierName(SupplierCode, WorkPoint);
  1282. sql = @"INSERT INTO ICSInvoiceNew (ID,DocNo,Status,BizType,SupplierCode,SupplierName,Tax,InvoiceType,MUSER,MUSERName,MTIME,WorkPoint)
  1283. VALUES (NEWID(),'{0}',0,0,'{1}','{2}',0,'{3}','{4}','{5}',GETDATE(),'{6}')";
  1284. sql = string.Format(sql, DocNo, SupplierCode, SupplierName, InvoiceType, MUSER, MUSERNAME, WorkPoint);
  1285. try
  1286. {
  1287. SqlHelper.ExecuteNonQuery(sql);
  1288. }
  1289. catch (Exception ex)
  1290. {
  1291. throw new Exception(ex.Message);
  1292. }
  1293. }
  1294. return DocNo;
  1295. }
  1296. public string GetSupplierName(string SupplierCode, string WorkPoint)
  1297. {
  1298. string sql = @"SELECT VenName as cVenName FROM ICSVendor WHERE VenCode = '{0}' and WorkPoint='{1}'";
  1299. sql = string.Format(sql, SupplierCode, WorkPoint);
  1300. try
  1301. {
  1302. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1303. if (dt != null && dt.Rows.Count > 0 && !string.IsNullOrEmpty(dt.Rows[0][0].ToString()))
  1304. return dt.Rows[0][0].ToString();
  1305. else
  1306. return "";
  1307. }
  1308. catch (Exception ex)
  1309. {
  1310. throw new Exception(ex.Message);
  1311. }
  1312. }
  1313. public string CheckSTNO_ItemCode(string JsonData, string DocNo, string WorkPoint)
  1314. {
  1315. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1316. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1317. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1318. string msg = "";
  1319. string sql = string.Empty;
  1320. // sql = @"INSERT INTO ICSCADetail(ID,DocNo,DocLineNo,Src_ASNDocNo,Src_ASNDocLineNo,
  1321. // InvCode,Qty,InvUom,MUSER,MUSERName,MTIME,WorkPoint)
  1322. // SELECT NEWID(),'{0}',[送货单行],[送货单号],[送货单行],[条码号],[条码数量],[单位],
  1323. // '{1}','{2}',GETDATE(),'{3}'
  1324. // FROM view_PoMain
  1325. // WHERE [条码号] IN (" + JsonData.TrimEnd(',') + ")";
  1326. // sql = string.Format(sql, DocNo, MUSER, MUSERNAME, WorkPoint);
  1327. string[] PrintParas = JsonData.TrimEnd(',').Split(',');
  1328. for (int i = 0; i < PrintParas.Length; i++)
  1329. {
  1330. sql += @"INSERT INTO ICSInvoiceNewDetail (ID,DocNo,DocLineNo,Src_CADocNo,Src_CADocLineNo,InvCode,Qty,InvUom,
  1331. TaxPriceSell,TotalMoneySell,MUSER,MUSERName,MTIME,WorkPoint)
  1332. SELECT NEWID(),'{0}',1,a.DocNo,b.DocLineNo,c.InvCode,
  1333. CAST(b.qty AS DECIMAL(18,2)) AS RkQty,d.InvUnit,
  1334. CAST(c.UnitPrice AS DECIMAL(18,2)) AS PoPrice,
  1335. CAST(c.UnitPrice*b.Qty AS DECIMAL(18,2)) AS TotalPrice,'{1}','{2}',GETDATE(),'{3}'
  1336. FROM ICSCANew a
  1337. LEFT JOIN ICSCANewDetail b ON a.DocNo = b.DocNo
  1338. LEFT JOIN ICSPurchaseOrder c ON b.pocode = c.pocode AND b.porow=c.Sequence
  1339. LEFT JOIN ICSINVENTORY d ON c.invCode=d.invCode AND d.WorkPoint=c.WorkPoint
  1340. WHERE b.ID in({4})";
  1341. sql += @"UPDATE ICSInvoiceNew SET Tax=b.Tax from
  1342. (select a.Tax from dbo.ICSCANew a
  1343. LEFT JOIN ICSCANewDetail b ON a.DOcNo=b.DOcNo AND a.WorkPoint=b.WorkPoint
  1344. WHERE b.ID = {4}) b
  1345. Where ICSInvoiceNew.DocNo='{0}'";
  1346. sql = string.Format(sql, DocNo, MUSER, MUSERNAME, WorkPoint, PrintParas[i]);
  1347. }
  1348. try
  1349. {
  1350. SqlHelper.CmdExecuteNonQueryLi(sql);
  1351. }
  1352. catch (Exception ex)
  1353. {
  1354. msg = ex.Message;
  1355. }
  1356. return msg;
  1357. }
  1358. public string CheckSTNO_CartonNo(string JsonData, string STNO)
  1359. {
  1360. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1361. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1362. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1363. string msg = "";
  1364. string sql = string.Empty;
  1365. sql = @"INSERT INTO dbo.ICSASNDETAIL
  1366. ( ASNDETAILID ,CREATEDATE ,CREATETIME ,CREATEUSER ,
  1367. ITEMCODE ,ITEMNAME ,LOGDATE ,LOGTIME ,LOGUSER ,
  1368. LOTNO ,PLANQTY ,STDSTATUS ,STLINE ,
  1369. STNO ,WorkPoint)
  1370. SELECT NEWID(),GETDATE(),GETDATE(),'" + MUSER + @"',
  1371. a.INVCODE,b.INVNAME,GETDATE(),GETDATE(),'" + MUSER + @"',
  1372. a.LotNO,c.LOTQTY,'0',0,
  1373. '" + STNO + "','" + WorkPoint + @"'
  1374. FROM dbo.ICSITEMLot2Carton a
  1375. LEFT JOIN dbo.ICSINVENTORY b ON a.INVCODE=b.INVCODE AND a.WorkPoint=b.WorkPoint
  1376. LEFT JOIN dbo.ICSITEMLot c ON a.LotNo_ID=c.ID AND a.WorkPoint=c.WorkPoint
  1377. WHERE a.CartonNO IN (" + JsonData.TrimEnd(',') + ") and a.WorkPoint='" + WorkPoint + "'";
  1378. try
  1379. {
  1380. SqlHelper.ExecuteNonQuery(sql);
  1381. }
  1382. catch (Exception ex)
  1383. {
  1384. throw new Exception(ex.Message);
  1385. }
  1386. return msg;
  1387. }
  1388. /// <summary>
  1389. /// 获取箱号主表信息
  1390. /// </summary>
  1391. /// <param name="queryJson"></param>
  1392. /// <param name="jqgridparam"></param>
  1393. /// <returns></returns>
  1394. public DataTable GetCartonGridJson(string queryJson, ref Pagination jqgridparam)
  1395. {
  1396. DataTable dt = new DataTable();
  1397. var queryParam = queryJson.ToJObject();
  1398. List<DbParameter> parameter = new List<DbParameter>();
  1399. string sql = @"SELECT Serial,a.CartonNO,CartonStatus,PrintTimes,
  1400. lastPrintTime,a.MUSERName,a.MTIME,EATTRIBUTE8
  1401. FROM dbo.ICSCarton a
  1402. LEFT JOIN
  1403. (SELECT COUNT(x.LotNO) AS LotNoCount,CartonNO,x.WorkPoint FROM dbo.ICSITEMLot2Carton x
  1404. LEFT JOIN dbo.ICSITEMLot y ON x.LotNO=y.LotNO AND x.WorkPoint=y.WorkPoint
  1405. GROUP BY CartonNO,x.WorkPoint) b ON a.CartonNO=b.CartonNO AND a.WorkPoint=b.WorkPoint
  1406. WHERE b.LotNoCount>0 and a.EATTRIBUTE3='SRM'
  1407. AND a.CartonNo not IN
  1408. (SELECT b.CartonNO FROM dbo.ICSASNDETAIL a inner JOIN dbo.ICSITEMLot2Carton b ON a.LOTNO =b.LotNO AND a.WorkPoint=b.WorkPoint)
  1409. ";
  1410. if (!string.IsNullOrWhiteSpace(queryJson))
  1411. {
  1412. if (!string.IsNullOrWhiteSpace(queryParam["CartonNo"].ToString()))
  1413. {
  1414. sql += " and a.CartonNO like '%" + queryParam["CartonNo"].ToString() + "%' ";
  1415. }
  1416. if (!string.IsNullOrWhiteSpace(queryParam["OrderNo"].ToString()))
  1417. {
  1418. sql += " and b.OrderNO like '%" + queryParam["OrderNo"].ToString() + "%' ";
  1419. }
  1420. if (!string.IsNullOrWhiteSpace(queryParam["TransNo"].ToString()))
  1421. {
  1422. sql += " and b.TransNO like '%" + queryParam["TransNO"].ToString() + "%' ";
  1423. }
  1424. if (!string.IsNullOrWhiteSpace(queryParam["TransLine"].ToString()))
  1425. {
  1426. sql += " and b.TransLine like '%" + queryParam["TransLine"].ToString() + "%' ";
  1427. }
  1428. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  1429. {
  1430. sql += " and a.EATTRIBUTE8 like '%" + queryParam["VenCode"].ToString() + "%' ";
  1431. }
  1432. }
  1433. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  1434. {
  1435. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  1436. }
  1437. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1438. }
  1439. /// <summary>
  1440. /// 箱号子表查询
  1441. /// </summary>
  1442. /// <param name="CartonNo"></param>
  1443. /// <param name="jqgridparam"></param>
  1444. /// <returns></returns>
  1445. public DataTable GetCartonSubGridJson(string CartonNo, ref Pagination jqgridparam)
  1446. {
  1447. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1448. DataTable dt = new DataTable();
  1449. //var queryParam = queryJson.ToJObject();
  1450. List<DbParameter> parameter = new List<DbParameter>();
  1451. string sql = @"SELECT a.LotNO, a.ID,c.ItemCODE,d.INVNAME,c.VenderLotNO,c.LOTQTY,
  1452. c.TYPE,b.EATTRIBUTE8,c.ORDERNO,c.TransNO,c.TransLine,d.INVDESC,d.INVTYPE,e.MEMO,d.INVSTD,d.INVPARSETYPE
  1453. FROM dbo.ICSITEMLot2Carton a
  1454. LEFT JOIN dbo.ICSCarton b ON a.CartonNO=b.CartonNO AND a.WorkPoint=b.WorkPoint
  1455. LEFT JOIN dbo.ICSITEMLot c ON a.LotNo_ID=c.ID AND a.WorkPoint=c.WorkPoint
  1456. LEFT JOIN dbo.ICSINVENTORY d ON c.ItemCODE=d.INVCODE AND a.WorkPoint=d.WorkPoint
  1457. LEFT JOIN dbo.ICSPO_PoMain e ON c.TransNO=e.POCode AND c.TransLine =e.PORow AND a.WorkPoint=e.WorkPoint
  1458. WHERE a.CartonNO='" + CartonNo + "' and a.WorkPoint='" + WorkPoint + "'";
  1459. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1460. }
  1461. public DataTable GetASNListGridJson(string queryJson, ref Pagination jqgridparam)
  1462. {
  1463. var queryParam = queryJson.ToJObject();
  1464. List<DbParameter> parameter = new List<DbParameter>();
  1465. string sql = @"SELECT a.ASNDETAILID, a.STNO,a.ITEMCODE,d.INVNAME,d.INVTYPE,d.INVDESC,h.ReMark,a.LOTNO,b.VenderLotNO,
  1466. b.LOTQTY,c.CartonNO,e.VENDORCODE,f.cVenName,
  1467. b.TransNO,b.TransLine,g.F_RealName,CONVERT(NVARCHAR(50),e.CREATETIME,23) as CREATETIME,d.INVSTD,d.INVPARSETYPE,case
  1468. when a.RECEIVEQTY is null then '否'
  1469. else '是'
  1470. end as IsReceive
  1471. FROM dbo.ICSASNDETAIL a
  1472. LEFT JOIN dbo.ICSITEMLot b ON a.LOTNO=b.LotNO AND a.WorkPoint=b.WorkPoint
  1473. LEFT JOIN dbo.ICSITEMLot2Carton c ON a.LOTNO=c.LotNO AND a.WorkPoint=c.WorkPoint
  1474. LEFT JOIN dbo.ICSINVENTORY d ON a.ITEMCODE=d.INVCODE AND a.WorkPoint=d.WorkPoint
  1475. LEFT JOIN dbo.ICSASN e ON a.STNO=e.STNO AND a.WorkPoint=e.WorkPoint
  1476. LEFT JOIN dbo.ICSVendor f ON e.VENDORCODE=f.VenCode AND a.WorkPoint=f.WorkPoint
  1477. LEFT JOIN dbo.Sys_SRM_User g ON e.LOGUSER=g.F_Account and g.F_Location=a.WorkPoint
  1478. LEFT JOIN dbo.ICSPO_PoMain h ON b.TransNO=h.POCode AND b.TransLine=h.PORow AND a.WorkPoint=h.WorkPoint where 1=1";
  1479. if (!string.IsNullOrWhiteSpace(queryJson))
  1480. {
  1481. if (!string.IsNullOrWhiteSpace(queryParam["STNO"].ToString()))
  1482. {
  1483. sql += " and a.STNO like '%" + queryParam["STNO"].ToString() + "%' ";
  1484. }
  1485. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  1486. {
  1487. sql += " and e.VENDORCODE like '%" + queryParam["VenCode"].ToString() + "%' ";
  1488. }
  1489. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  1490. {
  1491. sql += " and f.cVenName like '%" + queryParam["VenName"].ToString() + "%' ";
  1492. }
  1493. if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  1494. {
  1495. sql += " and e.CREATETIME >= '%" + queryParam["BeginDate"].ToString() + "%' ";
  1496. }
  1497. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  1498. {
  1499. sql += " and e.CREATETIME <= '%" + queryParam["EndDate"].ToString() + "%' ";
  1500. }
  1501. if (!string.IsNullOrWhiteSpace(queryParam["VenderLotNO"].ToString()))
  1502. {
  1503. sql += " and b.VenderLotNO = '%" + queryParam["VenderLotNO"].ToString() + "%' ";
  1504. }
  1505. if (!string.IsNullOrWhiteSpace(queryParam["IsReceive"].ToString()))
  1506. {
  1507. string IsReceive = queryParam["IsReceive"].ToString();
  1508. if (IsReceive == "1")
  1509. {
  1510. sql += " and isnull(a.RECEIVEQTY,0) <>0 ";
  1511. }
  1512. else if (IsReceive == "2")
  1513. {
  1514. sql += " and isnull(a.RECEIVEQTY,0)=0 ";
  1515. }
  1516. }
  1517. }
  1518. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  1519. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  1520. {
  1521. sql += " and e.VenCode in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'AND WorkPoint=a.WorkPoint)";
  1522. }
  1523. //DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1524. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1525. }
  1526. public DataTable GetASNListExport(string keyVaule)
  1527. {
  1528. //var queryParam = queryJson.ToJObject();
  1529. List<DbParameter> parameter = new List<DbParameter>();
  1530. string sql = @"SELECT a.STNO AS 送货单号,a.ITEMCODE 物料编码,d.INVNAME 物料名称,d.INVSTD AS 规格型号,
  1531. d.INVPARSETYPE AS
  1532. ,d.INVTYPE 1,d.INVDESC 2,h.ReMark ,case
  1533. when a.RECEIVEQTY is null then '否'
  1534. else '是'
  1535. end as ,
  1536. a.LOTNO ,b.VenderLotNO ,
  1537. b.LOTQTY ,c.CartonNO ,e.VENDORCODE ,f.cVenName ,
  1538. b.TransNO ,b.TransLine ,g.F_RealName , CONVERT(NVARCHAR(50),e.CREATETIME,23) as CREATETIME
  1539. FROM dbo.ICSASNDETAIL a
  1540. LEFT JOIN dbo.ICSITEMLot b ON a.LOTNO=b.LotNO AND a.WorkPoint=b.WorkPoint
  1541. LEFT JOIN dbo.ICSITEMLot2Carton c ON a.LOTNO=c.LotNO AND a.WorkPoint=c.WorkPoint
  1542. LEFT JOIN dbo.ICSINVENTORY d ON a.ITEMCODE=d.INVCODE AND a.WorkPoint=d.WorkPoint
  1543. LEFT JOIN dbo.ICSASN e ON a.STNO=e.STNO AND a.WorkPoint=e.WorkPoint
  1544. LEFT JOIN dbo.ICSVendor f ON e.VENDORCODE=f.VenCode AND a.WorkPoint=f.WorkPoint
  1545. LEFT JOIN dbo.Sys_SRM_User g ON e.LOGUSER=g.F_Account
  1546. LEFT JOIN dbo.ICSPO_PoMain h ON b.TransNO=h.POCode AND b.TransLine=h.PORow AND a.WorkPoint=h.WorkPoint where 1=1";
  1547. sql += " and a.ASNDETAILID in (" + keyVaule + ")";
  1548. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  1549. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1550. return dt;
  1551. }
  1552. public DataTable GetASNListExport(string ORDERNO, string STNO, string BeginDate, string EndDate, string VenCode, string VenName, string VenderLotNO, string IsReceive)
  1553. {
  1554. //var queryParam = queryJson.ToJObject();
  1555. List<DbParameter> parameter = new List<DbParameter>();
  1556. string sql = @"SELECT a.STNO AS 送货单号,h.ORDERNO as 项目号,a.ITEMCODE 物料编码,d.INVNAME 物料名称,
  1557. d.INVSTD AS ,d.INVPARSETYPE AS ,
  1558. d.INVTYPE 1,d.INVDESC 2,h.ReMark ,case
  1559. when a.RECEIVEQTY is null then '否'
  1560. else '是'
  1561. end as ,
  1562. a.LOTNO ,b.VenderLotNO ,
  1563. b.LOTQTY ,c.CartonNO ,e.VENDORCODE ,f.cVenName ,
  1564. b.TransNO ,b.TransLine ,g.F_RealName ,CONVERT(NVARCHAR(50),e.CREATETIME,23) as CREATETIME
  1565. FROM dbo.ICSASNDETAIL a
  1566. LEFT JOIN dbo.ICSITEMLot b ON a.LOTNO=b.LotNO AND a.WorkPoint=b.WorkPoint
  1567. LEFT JOIN dbo.ICSITEMLot2Carton c ON a.LOTNO=c.LotNO AND a.WorkPoint=c.WorkPoint
  1568. LEFT JOIN dbo.ICSINVENTORY d ON a.ITEMCODE=d.INVCODE AND a.WorkPoint=d.WorkPoint
  1569. LEFT JOIN dbo.ICSASN e ON a.STNO=e.STNO AND a.WorkPoint=e.WorkPoint
  1570. LEFT JOIN dbo.ICSVendor f ON e.VENDORCODE=f.VenCode AND a.WorkPoint=f.WorkPoint
  1571. LEFT JOIN dbo.Sys_SRM_User g ON e.LOGUSER=g.F_Account
  1572. LEFT JOIN dbo.ICSPO_PoMain h ON b.TransNO=h.POCode AND b.TransLine=h.PORow AND a.WorkPoint=h.WorkPoint where 1=1";
  1573. if (!string.IsNullOrWhiteSpace(ORDERNO))
  1574. sql += " and a.ORDERNO like '%" + ORDERNO + "%'";
  1575. if (!string.IsNullOrWhiteSpace(STNO))
  1576. sql += " and a.STNO like '%" + STNO + "%'";
  1577. if (!string.IsNullOrWhiteSpace(BeginDate))
  1578. sql += " and e.CREATETIME >= '" + BeginDate + "'";
  1579. if (!string.IsNullOrWhiteSpace(BeginDate))
  1580. sql += " and e.CREATETIME <= '" + EndDate + "'";
  1581. if (!string.IsNullOrWhiteSpace(VenCode))
  1582. sql += " and e.VENDORCODE like '%" + VenCode + "%'";
  1583. if (!string.IsNullOrWhiteSpace(VenCode))
  1584. sql += " and f.cVenName like '%" + VenName + "%'";
  1585. if (!string.IsNullOrWhiteSpace(VenderLotNO))
  1586. sql += " and b.VenderLotNO like '%" + VenderLotNO + "%'";
  1587. if (IsReceive == "1")
  1588. {
  1589. sql += " and isnull(a.RECEIVEQTY,0)<>0";
  1590. }
  1591. else if (IsReceive == "2")
  1592. {
  1593. sql += " and isnull(a.RECEIVEQTY,0)=0";
  1594. }
  1595. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  1596. {
  1597. sql += " and e.VenCode in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'AND WorkPoint=a.WorkPoint)";
  1598. }
  1599. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  1600. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1601. return dt;
  1602. }
  1603. public string CheckIsAll(string STNO)
  1604. {
  1605. string sql = @"SELECT * FROM dbo.ICSASNDETAIL WHERE STNO='" + STNO + "' AND ISNULL(RECEIVEQTY,0)<>0";
  1606. sql += " and WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  1607. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1608. if (dt != null && dt.Rows.Count > 0)
  1609. {
  1610. return "0";
  1611. }
  1612. else
  1613. {
  1614. return "1";
  1615. }
  1616. }
  1617. // public void ISInvoice(string queryJson, string WorkPoint)
  1618. // {
  1619. // string sql = string.Empty;
  1620. // WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
  1621. // queryJson = queryJson.Substring(1, queryJson.Length - 2);
  1622. // string msg = string.Empty;
  1623. // try
  1624. // {
  1625. // try
  1626. // {
  1627. // sql = @"SELECT * FROM dbo.ICSInvoiceNewDetail a
  1628. // WHERE a.Src_CADocNo in({0}) and WorkPoint='{1}'
  1629. // ";
  1630. // sql = string.Format(sql, queryJson.TrimEnd(','), WorkPoint);
  1631. // DataTable dtID = SqlHelper.GetDataTableBySql(sql);
  1632. // if (dtID.Rows.Count > 0)
  1633. // {
  1634. // throw new Exception("对账单已加入发发票");
  1635. // }
  1636. // }
  1637. // catch (Exception ex)
  1638. // {
  1639. // throw new Exception(ex.Message);
  1640. // }
  1641. // }
  1642. // catch (Exception ex)
  1643. // {
  1644. // throw new Exception(ex.Message);
  1645. // }
  1646. // }
  1647. /// <summary>
  1648. /// 判断发票是否存在
  1649. /// </summary>
  1650. /// <param name="TEMPVENDORCODE"></param>
  1651. /// <param name="jqgridparam"></param>
  1652. /// <returns></returns>
  1653. public DataTable ISPaperNo(string PaperNo)
  1654. {
  1655. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1656. DataTable dt = new DataTable();
  1657. List<DbParameter> parameter = new List<DbParameter>();
  1658. string sql = @"SELECT * FROM ICSInvoiceNew WHERE PaperNo='" + PaperNo + "' ";
  1659. dt = SqlHelper.GetDataTableBySql(sql);
  1660. return dt;
  1661. }
  1662. public string GetVendorWorkPoint(string WorkPoint)
  1663. {
  1664. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1665. string msg = "";
  1666. string VenCode = "";
  1667. string sql = " SELECT VenCode FROM dbo.ICSVendor WHERE VenName='" + MUSERNAME + "'and WorkPoint='" + WorkPoint + "'";
  1668. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1669. if (dt.Rows.Count > 0)
  1670. {
  1671. VenCode = dt.Rows[0]["VenCode"].ToString();
  1672. }
  1673. else
  1674. {
  1675. msg = "该站点没有供应商信息,请确认!";
  1676. }
  1677. var JsonData = new
  1678. {
  1679. VenCode = VenCode,
  1680. mag = msg
  1681. };
  1682. return (JsonData.ToJson());
  1683. }
  1684. /// <summary>
  1685. /// 获取文件路径
  1686. /// </summary>
  1687. /// <param name="DocNo"></param>
  1688. /// <returns></returns>
  1689. public DataTable GetInvoiceFile(string DocNo)
  1690. {
  1691. //string Vendor = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
  1692. DataTable dt = new DataTable();
  1693. string sql = @"SELECT Filename FROM ICSSORRFQ WHERE RFQCODE='{0}'";
  1694. sql = string.Format(sql, DocNo);
  1695. dt = SqlHelper.GetDataTableBySql(sql);
  1696. return dt;
  1697. }
  1698. /// <summary>
  1699. /// 上传文件变更订单状态为确认中,新增上传次数
  1700. /// </summary>
  1701. /// <param name="PoCode"></param>
  1702. /// <param name="FileName"></param>
  1703. /// <param name="FilePath"></param>
  1704. /// <returns></returns>
  1705. public string UpLoadFile(string PoCode, string FileName, string FilePath, string WorkPoint)
  1706. {
  1707. string msg = "";
  1708. try
  1709. {
  1710. string sql = @"UPDATE ICSInvoiceNew SET Filename = '{1}',FilePath = '{2}' WHERE DocNo = '{0}' and WorkPoint='{3}'";
  1711. sql = string.Format(sql, PoCode, FileName, FilePath,WorkPoint);
  1712. int count = SqlHelper.ExecuteNonQuery(sql);
  1713. if (count <= 0)
  1714. msg = "上传失败";
  1715. }
  1716. catch (Exception ex)
  1717. {
  1718. msg = ex.Message.ToString();
  1719. }
  1720. return msg;
  1721. }
  1722. }
  1723. }