纽威
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.

1034 lines
64 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. using NFine.Repository;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Data;
  8. using NFine.Code;
  9. using System.Data.Common;
  10. using NFine.Domain._03_Entity.SRM;
  11. using System.Configuration;
  12. using System.Net;
  13. using Newtonsoft.Json.Linq;
  14. using Newtonsoft.Json;
  15. using System.IO;
  16. using NFine.Domain._03_Entity.WMS;
  17. using NFine.Data.Extensions;
  18. namespace NFine.Application.WMS
  19. {
  20. public class WMSDeleteReceipts : RepositoryFactory<ICSVendor>
  21. {
  22. public int DeleteReceipt(string codes, string type)
  23. {
  24. try
  25. {
  26. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  27. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  28. DateTime MTime = DateTime.Now;
  29. StringBuilder sqlString = new StringBuilder();
  30. #region 工单领料 售后领料
  31. if (type == "2"||type=="12")
  32. {
  33. #region SAP(三层结构)
  34. string IsSuccess = "";
  35. string ErrorMessage = "";
  36. string sql1 = $@"select DISTINCT A.ApplyCode from ICSMOApply A
  37. WHERE A.ApplyCode in({codes})";
  38. DataTable Sapdt1 = Repository().FindDataSetBySql(sql1).Tables[0];
  39. if (Sapdt1.Rows.Count == 0)
  40. {
  41. throw new Exception("单据查询失败");//单据查询失败
  42. }
  43. for (int i = 0; i < Sapdt1.Rows.Count; i++)
  44. {
  45. var code = Sapdt1.Rows[i]["ApplyCode"].ToString();
  46. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ();
  47. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ1();
  48. Info.NEWID = Guid.NewGuid().ToString();
  49. Info.DANJU = Sapdt1.Rows[i]["ApplyCode"].ToString();
  50. Info.STATE = "0";
  51. string sql = $@"select A.ID,A.ApplyCode,A.InvCode,A.Sequence,A.SAPSequence,A.Quantity,A.IssueQuantity
  52. ,ISNULL(B.BatchCode,'') AS BatchCode,A.WorkPoint,A.WHCode from ICSMOApply A
  53. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
  54. WHERE A.ApplyCode ='{code}'";
  55. DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
  56. if (Sapdt.Rows.Count == 0)
  57. {
  58. throw new Exception("单据查询失败");//单据查询失败
  59. }
  60. List<SAPCallBackDocVPNCS.ZWMS_PZ> ItemList = new List<SAPCallBackDocVPNCS.ZWMS_PZ>();
  61. List<SAPCallBackDocVPNCS.ZWEBS_GERNR> ItemLineList = new List<SAPCallBackDocVPNCS.ZWEBS_GERNR>();
  62. Info.Z_FLAG = new SAPCallBackDocVPNCS.ZWEB_RETURN[1];
  63. foreach (DataRow dr in Sapdt.Rows)
  64. {
  65. if (Convert.ToDecimal(dr["IssueQuantity"].ToString()) != Convert.ToDecimal(dr["Quantity"].ToString()))
  66. {
  67. string id = dr["ID"].ToString();
  68. string dnCode = dr["ApplyCode"].ToString();
  69. string invCode = dr["INVCode"].ToString();
  70. string workPoint = dr["WorkPoint"].ToString();
  71. string whCode = dr["WHCode"].ToString();
  72. decimal quantity = dr["Quantity"].ToDecimal();
  73. string sequence = dr["SAPSequence"].ToString();
  74. string batchCode = dr["BatchCode"].ToString();
  75. decimal dnQuantity = dr["IssueQuantity"].ToDecimal();
  76. SAPCallBackDocVPNCS.ZWMS_PZ Item = new SAPCallBackDocVPNCS.ZWMS_PZ();
  77. SAPCallBackDocVPNCS.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPNCS.ZWEBS_GERNR();
  78. Item.DANJU = dr["ApplyCode"].ToString();
  79. Item.POSNR = dr["SAPSequence"].ToString();
  80. Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["IssueQuantity"].ToString()), 3);
  81. ItemList.Add(Item);
  82. if (dr["BatchCode"].ToString() != "")
  83. {
  84. ItemLine.DANJU = dr["ApplyCode"].ToString();
  85. ItemLine.POSNR = dr["SAPSequence"].ToString();
  86. ItemLine.MATNR = dr["InvCode"].ToString();
  87. ItemLine.GERNR = dr["BatchCode"].ToString();
  88. ItemLineList.Add(ItemLine);
  89. }
  90. sqlString.Append($@"DELETE FROM ICSMOApply WHERE ID='{id}';");
  91. sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','2','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
  92. }
  93. }
  94. if (ItemList.Count > 0)
  95. {
  96. Info.Z_ITEM = ItemList.ToArray();
  97. if (ItemLineList.Count > 0)
  98. {
  99. Info.Z_GERNR = ItemLineList.ToArray();
  100. }
  101. else
  102. {
  103. Info.Z_GERNR = new SAPCallBackDocVPNCS.ZWEBS_GERNR[1];
  104. }
  105. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZResponse();
  106. result = Client.CallZWMS_SK_WS_PZ(Info);
  107. if (result.Z_NULL == "N")
  108. {
  109. foreach (SAPCallBackDocVPNCS.ZWEB_RETURN resultItem in result.Z_FLAG)
  110. {
  111. IsSuccess = "N";
  112. ErrorMessage += resultItem.L_MESSAGE + "/r/n";
  113. }
  114. }
  115. }
  116. }
  117. if (IsSuccess == "N")
  118. {
  119. throw new Exception(ErrorMessage);
  120. }
  121. #endregion
  122. if (sqlString.IsEmpty())
  123. {
  124. return 0;
  125. }
  126. int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
  127. return count;
  128. }
  129. #endregion
  130. #region 委外领料
  131. else if (type == "5")
  132. {
  133. #region SAP(三层结构)
  134. string IsSuccess = "";
  135. string ErrorMessage = "";
  136. string sql1 = $@"select DISTINCT A.ApplyCode from ICSOApply A
  137. WHERE A.ApplyCode in({codes})";
  138. DataTable Sapdt1 = Repository().FindDataSetBySql(sql1).Tables[0];
  139. if (Sapdt1.Rows.Count == 0)
  140. {
  141. throw new Exception("单据查询失败");//单据查询失败
  142. }
  143. for (int i = 0; i < Sapdt1.Rows.Count; i++)
  144. {
  145. var code = Sapdt1.Rows[i]["ApplyCode"].ToString();
  146. string sql = $@" select Distinct A.ApplyCode,A.WorkPoint from ICSOApply A
  147. where A.ApplyCode='{code}'";
  148. DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
  149. for (int j = 0; j < dt.Rows.Count; j++)
  150. {
  151. string chksql = @"select SUM(Quantity) AS Quantity,SUM(IssueQuantity) AS IssueQuantity from ICSOApply
  152. where ApplyCode='{0}' and WorkPoint='{1}'
  153. GROUP BY ApplyCode,WorkPoint";
  154. chksql = string.Format(chksql, dt.Rows[j]["ApplyCode"].ToString(), dt.Rows[j]["WorkPoint"].ToString());
  155. DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
  156. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ();
  157. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ1();
  158. Info.NEWID = Guid.NewGuid().ToString();
  159. Info.DANJU = dt.Rows[j]["ApplyCode"].ToString();
  160. Info.STATE = "0";
  161. List<SAPCallBackDocVPNCS.ZWMS_PZ> ItemList = new List<SAPCallBackDocVPNCS.ZWMS_PZ>();
  162. List<SAPCallBackDocVPNCS.ZWEBS_GERNR> ItemLineList = new List<SAPCallBackDocVPNCS.ZWEBS_GERNR>();
  163. Info.Z_FLAG = new SAPCallBackDocVPNCS.ZWEB_RETURN[1];
  164. sql = @" select A.ApplyCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.IssueQuantity
  165. ,ISNULL(B.BatchCode,'') AS BatchCode,A.ID,A.WorkPoint,A.WHCode from ICSOApply A
  166. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
  167. WHERE ApplyCode='{0}' AND A.WorkPoint='{1}'";
  168. sql = string.Format(sql, dt.Rows[j]["ApplyCode"].ToString(), dt.Rows[j]["WorkPoint"].ToString());
  169. DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
  170. foreach (DataRow dr in Sapdt.Rows)
  171. {
  172. if (Convert.ToDecimal(dr["IssueQuantity"].ToString()) != Convert.ToDecimal(dr["Quantity"].ToString()))
  173. {
  174. string id = dr["ID"].ToString();
  175. string dnCode = dr["ApplyCode"].ToString();
  176. string invCode = dr["INVCode"].ToString();
  177. string workPoint = dr["WorkPoint"].ToString();
  178. string whCode = dr["WHCode"].ToString();
  179. decimal quantity = dr["Quantity"].ToDecimal();
  180. string sequence = dr["SAPSequence"].ToString();
  181. string batchCode = dr["BatchCode"].ToString();
  182. decimal dnQuantity = dr["IssueQuantity"].ToDecimal();
  183. SAPCallBackDocVPNCS.ZWMS_PZ Item = new SAPCallBackDocVPNCS.ZWMS_PZ();
  184. SAPCallBackDocVPNCS.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPNCS.ZWEBS_GERNR();
  185. Item.DANJU = dr["ApplyCode"].ToString();
  186. Item.POSNR = dr["SAPSequence"].ToString();
  187. Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["IssueQuantity"].ToString()), 3);
  188. ItemList.Add(Item);
  189. ItemLine.DANJU = dr["ApplyCode"].ToString();
  190. ItemLine.POSNR = dr["SAPSequence"].ToString();
  191. ItemLine.MATNR = dr["InvCode"].ToString();
  192. ItemLine.GERNR = dr["BatchCode"].ToString();
  193. ItemLineList.Add(ItemLine);
  194. sqlString.Append($@"DELETE FROM ICSOApply WHERE ID='{id}';");
  195. sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','5','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
  196. }
  197. }
  198. if (ItemList.Count > 0)
  199. {
  200. Info.Z_ITEM = ItemList.ToArray();
  201. if (ItemLineList.Count > 0)
  202. {
  203. Info.Z_GERNR = ItemLineList.ToArray();
  204. }
  205. else
  206. {
  207. Info.Z_GERNR = new SAPCallBackDocVPNCS.ZWEBS_GERNR[1];
  208. }
  209. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZResponse();
  210. result = Client.CallZWMS_SK_WS_PZ(Info);
  211. if (result.Z_NULL == "N")
  212. {
  213. foreach (SAPCallBackDocVPNCS.ZWEB_RETURN resultItem in result.Z_FLAG)
  214. {
  215. IsSuccess = "N";
  216. ErrorMessage += resultItem.L_MESSAGE + "/r/n";
  217. }
  218. }
  219. }
  220. }
  221. }
  222. if (IsSuccess == "N")
  223. {
  224. throw new Exception(ErrorMessage);
  225. }
  226. #endregion
  227. if (sqlString.IsEmpty())
  228. {
  229. return 0;
  230. }
  231. int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
  232. return count;
  233. }
  234. #endregion
  235. #region 销售发货
  236. else if (type == "7")
  237. {
  238. string IsSuccess = "";
  239. string ErrorMessage = "";
  240. string sql = $@" select Distinct A.SDNCode,A.WorkPoint from ICSSDN A
  241. where A.SDNCode in {codes}";
  242. DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
  243. for (int i = 0; i < dt.Rows.Count; i++)
  244. {
  245. string chksql = @"select SUM(Quantity) AS Quantity,SUM(SDNQuantity) AS SDNQuantity from ICSSDN
  246. where SDNCode='{0}' and WorkPoint='{1}'
  247. GROUP BY SDNCode,WorkPoint";
  248. chksql = string.Format(chksql, dt.Rows[i]["SDNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  249. DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
  250. if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["SDNQuantity"]))
  251. {
  252. SAPCallBackDispatchVPNCS.ZWMS_SK_DO_GZ Client = new SAPCallBackDispatchVPNCS.ZWMS_SK_DO_GZ();
  253. SAPCallBackDispatchVPNCS.ZWMS_SK_DO_GZ1 Info = new SAPCallBackDispatchVPNCS.ZWMS_SK_DO_GZ1();
  254. List<SAPCallBackDispatchVPNCS.ZWMS_DO_HEAD> headlist = new List<SAPCallBackDispatchVPNCS.ZWMS_DO_HEAD>();
  255. SAPCallBackDispatchVPNCS.ZWMS_DO_HEAD head = new SAPCallBackDispatchVPNCS.ZWMS_DO_HEAD();
  256. head.VBELN = dt.Rows[i]["SDNCode"].ToString();
  257. headlist.Add(head);
  258. Info.T_HEAD = headlist.ToArray();
  259. List<SAPCallBackDispatchVPNCS.ZWMS_DO_ITEM> ItemList = new List<SAPCallBackDispatchVPNCS.ZWMS_DO_ITEM>();
  260. List<SAPCallBackDispatchVPNCS.ZWMS_DO_GERNR> ItemLineList = new List<SAPCallBackDispatchVPNCS.ZWMS_DO_GERNR>();
  261. Info.T_RETURN = new SAPCallBackDispatchVPNCS.ZWMS_DO_RETURN[1];
  262. sql = @" select A.ID,A.WorkPoint,A.WHCode, A.SDNCode,A.InvCode,A.SAPSequence,A.Sequence,A.Quantity,A.SDNQuantity
  263. ,ISNULL(B.BatchCode,'') AS BatchCode from ICSSDN A
  264. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
  265. WHERE SDNCode='{0}' AND A.WorkPoint='{1}'";
  266. sql = string.Format(sql, dt.Rows[i]["SDNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  267. DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
  268. foreach (DataRow dr in Sapdt.Rows)
  269. {
  270. if (Convert.ToDecimal(dr["Quantity"].ToString()) != Convert.ToDecimal(dr["SDNQuantity"].ToString()))
  271. {
  272. string id = dr["ID"].ToString();
  273. string dnCode = dr["SDNCode"].ToString();
  274. string invCode = dr["INVCode"].ToString();
  275. string workPoint = dr["WorkPoint"].ToString();
  276. string whCode = dr["WHCode"].ToString();
  277. decimal quantity = dr["Quantity"].ToDecimal();
  278. string sequence = dr["SAPSequence"].ToString();
  279. string batchCode = dr["BatchCode"].ToString();
  280. decimal dnQuantity = dr["SDNQuantity"].ToDecimal();
  281. SAPCallBackDispatchVPNCS.ZWMS_DO_GERNR ItemLine = new SAPCallBackDispatchVPNCS.ZWMS_DO_GERNR();
  282. SAPCallBackDispatchVPNCS.ZWMS_DO_ITEM Item = new SAPCallBackDispatchVPNCS.ZWMS_DO_ITEM();
  283. Item.VBELN = dr["SDNCode"].ToString();
  284. Item.POSNR = dr["SAPSequence"].ToString();
  285. Item.LFIMG = System.Decimal.Round(Convert.ToDecimal(dr["SDNQuantity"].ToString()), 3);
  286. ItemList.Add(Item);
  287. if (dr["BatchCode"].ToString() != "")
  288. {
  289. ItemLine.VBELN = dr["SDNCode"].ToString();
  290. ItemLine.POSNR = dr["SAPSequence"].ToString();
  291. ItemLine.GERNR = dr["BatchCode"].ToString();
  292. ItemLineList.Add(ItemLine);
  293. }
  294. sqlString.Append($@"DELETE FROM ICSSDN WHERE ID='{id}';");
  295. sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','7','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
  296. }
  297. }
  298. if (ItemList.Count > 0)
  299. {
  300. Info.T_ITEM = ItemList.ToArray();
  301. if (ItemLineList.Count > 0)
  302. {
  303. Info.T_GERNR = ItemLineList.ToArray();
  304. }
  305. SAPCallBackDispatchVPNCS.ZWMS_SK_DO_GZResponse result = new SAPCallBackDispatchVPNCS.ZWMS_SK_DO_GZResponse();
  306. result = Client.CallZWMS_SK_DO_GZ(Info);
  307. foreach (SAPCallBackDispatchVPNCS.ZWMS_DO_RETURN resultItem in result.T_RETURN)
  308. {
  309. if (resultItem.ZFLG == "N")
  310. {
  311. IsSuccess = "N";
  312. ErrorMessage += resultItem.ZMESS + "/r/n";
  313. }
  314. }
  315. }
  316. }
  317. }
  318. if (IsSuccess == "N")
  319. {
  320. throw new Exception(ErrorMessage);
  321. }
  322. if (sqlString.IsEmpty())
  323. {
  324. return 0;
  325. }
  326. int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
  327. return count;
  328. }
  329. #endregion
  330. #region 其他出库
  331. else if (type == "8")
  332. {
  333. string IsSuccess = "";
  334. string ErrorMessage = "";
  335. string sql = $@" select Distinct A.OutCode,A.WorkPoint from ICSOtherOut A
  336. where A.OutCode in ({codes})";
  337. DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
  338. for (int i = 0; i < dt.Rows.Count; i++)
  339. {
  340. string chksql = @"select SUM(Quantity) AS Quantity,SUM(OutQuantity) AS OutQuantity from ICSOtherOut
  341. where OutCode='{0}' and WorkPoint='{1}'
  342. GROUP BY OutCode,WorkPoint";
  343. chksql = string.Format(chksql, dt.Rows[i]["OutCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  344. DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
  345. if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["OutQuantity"]))
  346. {
  347. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ();
  348. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ1();
  349. Info.NEWID = Guid.NewGuid().ToString();
  350. Info.DANJU = dt.Rows[i]["OutCode"].ToString();
  351. Info.STATE = "0";
  352. List<SAPCallBackDocVPNCS.ZWMS_PZ> ItemList = new List<SAPCallBackDocVPNCS.ZWMS_PZ>();
  353. List<SAPCallBackDocVPNCS.ZWEBS_GERNR> ItemLineList = new List<SAPCallBackDocVPNCS.ZWEBS_GERNR>();
  354. Info.Z_FLAG = new SAPCallBackDocVPNCS.ZWEB_RETURN[1];
  355. sql = @"select A.ID, A.OutCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.OutQuantity
  356. ,ISNULL(B.BatchCode,'') AS BatchCode,A.WorkPoint,A.WHCode from ICSOtherOut A
  357. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
  358. WHERE OutCode='{0}' AND A.WorkPoint='{1}'";
  359. sql = string.Format(sql, dt.Rows[i]["OutCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  360. DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
  361. foreach (DataRow dr in Sapdt.Rows)
  362. {
  363. if (Convert.ToDecimal(dr["Quantity"].ToString()) != Convert.ToDecimal(dr["OutQuantity"].ToString()))
  364. {
  365. string id = dr["ID"].ToString();
  366. string dnCode = dr["OutCode"].ToString();
  367. string invCode = dr["INVCode"].ToString();
  368. string workPoint = dr["WorkPoint"].ToString();
  369. string whCode = dr["WHCode"].ToString();
  370. decimal quantity = dr["Quantity"].ToDecimal();
  371. string sequence = dr["SAPSequence"].ToString();
  372. string batchCode = dr["BatchCode"].ToString();
  373. decimal dnQuantity = dr["OutQuantity"].ToDecimal();
  374. SAPCallBackDocVPNCS.ZWMS_PZ Item = new SAPCallBackDocVPNCS.ZWMS_PZ();
  375. SAPCallBackDocVPNCS.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPNCS.ZWEBS_GERNR();
  376. Item.DANJU = dr["OutCode"].ToString();
  377. Item.POSNR = dr["SAPSequence"].ToString();
  378. Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["OutQuantity"].ToString()), 3);
  379. ItemList.Add(Item);
  380. if (dr["BatchCode"].ToString() != "")
  381. {
  382. ItemLine.DANJU = dr["OutCode"].ToString();
  383. ItemLine.POSNR = dr["SAPSequence"].ToString();
  384. ItemLine.MATNR = dr["InvCode"].ToString();
  385. ItemLine.GERNR = dr["BatchCode"].ToString();
  386. ItemLineList.Add(ItemLine);
  387. }
  388. sqlString.Append($@"DELETE FROM ICSOtherOut WHERE ID='{id}';");
  389. sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','8','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
  390. }
  391. }
  392. if (ItemList.Count > 0)
  393. {
  394. Info.Z_ITEM = ItemList.ToArray();
  395. if (ItemLineList.Count > 0)
  396. {
  397. Info.Z_GERNR = ItemLineList.ToArray();
  398. }
  399. else
  400. {
  401. Info.Z_GERNR = new SAPCallBackDocVPNCS.ZWEBS_GERNR[1];
  402. }
  403. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZResponse();
  404. result = Client.CallZWMS_SK_WS_PZ(Info);
  405. if (result.Z_NULL == "N")
  406. {
  407. foreach (SAPCallBackDocVPNCS.ZWEB_RETURN resultItem in result.Z_FLAG)
  408. {
  409. IsSuccess = "N";
  410. ErrorMessage += resultItem.L_MESSAGE + "/r/n";
  411. }
  412. }
  413. }
  414. }
  415. }
  416. if (IsSuccess == "N")
  417. {
  418. throw new Exception(ErrorMessage);
  419. }
  420. if (sqlString.IsEmpty())
  421. {
  422. return 0;
  423. }
  424. int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
  425. return count;
  426. }
  427. #endregion
  428. #region 物料调拨
  429. else if (type == "10")
  430. {
  431. string IsSuccess = "";
  432. string ErrorMessage = "";
  433. string sql = $@" select Distinct A.TransferNO,A.WorkPoint from ICSTransfer A
  434. where A.TransferNO in ({codes})";
  435. DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
  436. for (int i = 0; i < dt.Rows.Count; i++)
  437. {
  438. string chksql = @"select SUM(Quantity) AS Quantity,SUM(TransferQuantity) AS TransferQuantity from ICSTransfer
  439. where TransferNO='{0}' and WorkPoint='{1}'
  440. GROUP BY TransferNO,WorkPoint";
  441. chksql = string.Format(chksql, dt.Rows[i]["TransferNO"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  442. DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
  443. if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["TransferQuantity"]))
  444. {
  445. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ();
  446. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ1();
  447. Info.NEWID = Guid.NewGuid().ToString();
  448. Info.DANJU = dt.Rows[i]["TransferNO"].ToString();
  449. Info.STATE = "0";
  450. List<SAPCallBackDocVPNCS.ZWMS_PZ> ItemList = new List<SAPCallBackDocVPNCS.ZWMS_PZ>();
  451. List<SAPCallBackDocVPNCS.ZWEBS_GERNR> ItemLineList = new List<SAPCallBackDocVPNCS.ZWEBS_GERNR>();
  452. Info.Z_FLAG = new SAPCallBackDocVPNCS.ZWEB_RETURN[1];
  453. sql = @" select A.ID,A.WorkPoint,A.FromWarehouseCode, A.TransferNO,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.TransferQuantity
  454. ,ISNULL(B.BatchCode,'') AS BatchCode from ICSTransfer A
  455. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
  456. WHERE TransferNO='{0}' AND A.WorkPoint='{1}'";
  457. sql = string.Format(sql, dt.Rows[i]["TransferNO"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  458. DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
  459. foreach (DataRow dr in Sapdt.Rows)
  460. {
  461. if (Convert.ToDecimal(dr["Quantity"].ToString()) != Convert.ToDecimal(dr["TransferQuantity"].ToString()))
  462. {
  463. string id = dr["ID"].ToString();
  464. string dnCode = dr["TransferNO"].ToString();
  465. string invCode = dr["INVCode"].ToString();
  466. string workPoint = dr["WorkPoint"].ToString();
  467. string whCode = dr["FromWarehouseCode"].ToString();
  468. decimal quantity = dr["Quantity"].ToDecimal();
  469. string sequence = dr["SAPSequence"].ToString();
  470. string batchCode = dr["BatchCode"].ToString();
  471. decimal dnQuantity = dr["TransferQuantity"].ToDecimal();
  472. SAPCallBackDocVPNCS.ZWMS_PZ Item = new SAPCallBackDocVPNCS.ZWMS_PZ();
  473. SAPCallBackDocVPNCS.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPNCS.ZWEBS_GERNR();
  474. Item.DANJU = dr["TransferNO"].ToString();
  475. Item.POSNR = dr["SAPSequence"].ToString();
  476. Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["TransferQuantity"].ToString()), 3);
  477. ItemList.Add(Item);
  478. if (dr["BatchCode"].ToString() != "")
  479. {
  480. ItemLine.DANJU = dr["TransferNO"].ToString();
  481. ItemLine.POSNR = dr["SAPSequence"].ToString();
  482. ItemLine.MATNR = dr["InvCode"].ToString();
  483. ItemLine.GERNR = dr["BatchCode"].ToString();
  484. ItemLineList.Add(ItemLine);
  485. }
  486. sqlString.Append($@"DELETE FROM ICSTransfer WHERE ID='{id}';");
  487. sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','10','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
  488. }
  489. }
  490. if (ItemList.Count > 0)
  491. {
  492. Info.Z_ITEM = ItemList.ToArray();
  493. if (ItemLineList.Count > 0)
  494. {
  495. Info.Z_GERNR = ItemLineList.ToArray();
  496. }
  497. else
  498. {
  499. Info.Z_GERNR = new SAPCallBackDocVPNCS.ZWEBS_GERNR[1];
  500. }
  501. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZResponse();
  502. result = Client.CallZWMS_SK_WS_PZ(Info);
  503. if (result.Z_NULL == "N")
  504. {
  505. foreach (SAPCallBackDocVPNCS.ZWEB_RETURN resultItem in result.Z_FLAG)
  506. {
  507. IsSuccess = "N";
  508. ErrorMessage += resultItem.L_MESSAGE + "/r/n";
  509. }
  510. }
  511. }
  512. }
  513. }
  514. if (IsSuccess == "N")
  515. {
  516. throw new Exception(ErrorMessage);
  517. }
  518. if (sqlString.IsEmpty())
  519. {
  520. return 0;
  521. }
  522. int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
  523. return count;
  524. }
  525. #endregion
  526. #region 检验合格单
  527. else if (type == "13")
  528. {
  529. #region SAP(检验合格单为两层结构 一行对应一个序列号)
  530. string IsSuccess = "";
  531. string ErrorMessage = "";
  532. string sql = $@" select A.DNCode,A.WorkPoint,Quantity,A.Sequence,A.WHCode,A.ID,A.INVCode,A.RCVQuantity
  533. from ICSDeliveryNotice A
  534. where A.DNCode in ({codes})";
  535. DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
  536. for (int i = 0; i < dt.Rows.Count; i++)
  537. {
  538. string chksql = @"select SUM(Quantity) AS Quantity,SUM(RCVQuantity) AS RCVQuantity from ICSDeliveryNotice
  539. where DNCode='{0}' and WorkPoint='{1}'
  540. GROUP BY DNCode,WorkPoint";
  541. chksql = string.Format(chksql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  542. DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
  543. sql = @"select A.DNCode,
  544. CASE WHEN SUM(Convert(decimal(18,6),A.SAPSequence)) IS NULL THEN SUM(A.RCVQuantity)
  545. ELSE SUM(Convert(decimal(18,6),A.SAPSequence)) END AS RCVQuantity,B.BatchCode from ICSDeliveryNotice A
  546. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
  547. WHERE DNCode='{0}' AND A.WorkPoint='{1}'
  548. GROUP BY A.DNCode,B.BatchCode";
  549. sql = string.Format(sql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  550. DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
  551. if (Sapdt.Rows.Count == 0)
  552. {
  553. throw new Exception("单据查询失败");//单据查询失败
  554. }
  555. string id = dt.Rows[i]["ID"].ToString();
  556. string dnCode = dt.Rows[i]["DNCode"].ToString();
  557. string invCode = dt.Rows[i]["INVCode"].ToString();
  558. string workPoint = dt.Rows[i]["WorkPoint"].ToString();
  559. string whCode = dt.Rows[i]["WHCode"].ToString();
  560. string quantity = dt.Rows[i]["Quantity"].ToString();
  561. string sequence = dt.Rows[i]["Sequence"].ToString();
  562. decimal dnQuantity = dt.Rows[i]["RCVQuantity"].ToDecimal();
  563. sqlString.Append($@"DELETE FROM ICSDeliveryNotice WHERE ID='{id}';");
  564. sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','13','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
  565. SAPCallBackJYHGDVPNCS.ZWMS_SK_WS_RUKU Client = new SAPCallBackJYHGDVPNCS.ZWMS_SK_WS_RUKU();
  566. SAPCallBackJYHGDVPNCS.ZWMS_SK_WS_RUKU1 Info = new SAPCallBackJYHGDVPNCS.ZWMS_SK_WS_RUKU1();
  567. Info.NEWID = Guid.NewGuid().ToString();
  568. Info.PRUEFLOS = Sapdt.Rows[0]["DNCode"].ToString();
  569. Info.L_LME = System.Decimal.Round(Convert.ToDecimal(Sapdt.Rows[0]["RCVQuantity"].ToString()), 3);
  570. Info.SERNP = Sapdt.Rows[0]["BatchCode"].ToString();
  571. Info.Z_GERNR = new SAPCallBackJYHGDVPNCS.ZWEBS_GERNR[0];
  572. SAPCallBackJYHGDVPNCS.ZWMS_SK_WS_RUKUResponse result = new SAPCallBackJYHGDVPNCS.ZWMS_SK_WS_RUKUResponse();
  573. result = Client.CallZWMS_SK_WS_RUKU(Info);
  574. if (result.Z_NULL == "N")
  575. {
  576. IsSuccess = "N";
  577. ErrorMessage += result.L_MESSAGE;
  578. }
  579. }
  580. if (IsSuccess == "N")
  581. {
  582. throw new Exception(ErrorMessage);
  583. }
  584. #endregion
  585. if (sqlString.IsEmpty())
  586. {
  587. return 0;
  588. }
  589. int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
  590. return count;
  591. }
  592. #endregion
  593. #region 机加工入库
  594. else if (type == "14")
  595. {
  596. string IsSuccess = "";
  597. string ErrorMessage = "";
  598. string sql = $@" select Distinct A.RCVCode,A.WorkPoint from ICSManufactureReceive A
  599. where A.RCVCode in ({codes})";
  600. DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
  601. for (int i = 0; i < dt.Rows.Count; i++)
  602. {
  603. string chksql = @"select SUM(Quantity) AS Quantity,SUM(RCVQuantity) AS RCVQuantity from ICSManufactureReceive
  604. where RCVCode='{0}' and WorkPoint='{1}'
  605. GROUP BY RCVCode,WorkPoint";
  606. chksql = string.Format(chksql, dt.Rows[i]["RCVCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  607. DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
  608. if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["RCVQuantity"]))
  609. {
  610. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ();
  611. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ1();
  612. Info.NEWID = Guid.NewGuid().ToString();
  613. Info.DANJU = dt.Rows[i]["RCVCode"].ToString();
  614. Info.STATE = "0";
  615. List<SAPCallBackDocVPNCS.ZWMS_PZ> ItemList = new List<SAPCallBackDocVPNCS.ZWMS_PZ>();
  616. List<SAPCallBackDocVPNCS.ZWEBS_GERNR> ItemLineList = new List<SAPCallBackDocVPNCS.ZWEBS_GERNR>();
  617. Info.Z_FLAG = new SAPCallBackDocVPNCS.ZWEB_RETURN[1];
  618. sql = @"select A.ID,A.WorkPoint,A.WHCode,A.RCVCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.RCVQuantity
  619. ,ISNULL(B.BatchCode,'') AS BatchCode from ICSManufactureReceive A
  620. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
  621. WHERE RCVCode='{0}' AND A.WorkPoint='{1}'";
  622. sql = string.Format(sql, dt.Rows[i]["RCVCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  623. DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
  624. foreach (DataRow dr in Sapdt.Rows)
  625. {
  626. if (Convert.ToDecimal(dr["Quantity"].ToString()) !=Convert.ToDecimal(dr["RCVQuantity"].ToString()))
  627. {
  628. string id = dr["ID"].ToString();
  629. string dnCode = dr["RCVCode"].ToString();
  630. string invCode = dr["INVCode"].ToString();
  631. string workPoint = dr["WorkPoint"].ToString();
  632. string whCode = dr["WHCode"].ToString();
  633. decimal quantity = dr["Quantity"].ToDecimal();
  634. string sequence = dr["SAPSequence"].ToString();
  635. string batchCode = dr["BatchCode"].ToString();
  636. decimal dnQuantity = dr["RCVQuantity"].ToDecimal();
  637. SAPCallBackDocVPNCS.ZWMS_PZ Item = new SAPCallBackDocVPNCS.ZWMS_PZ();
  638. SAPCallBackDocVPNCS.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPNCS.ZWEBS_GERNR();
  639. Item.DANJU = dr["RCVCode"].ToString();
  640. Item.POSNR = dr["SAPSequence"].ToString();
  641. Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["RCVQuantity"].ToString()), 3);
  642. ItemList.Add(Item);
  643. if (dr["BatchCode"].ToString() != "")
  644. {
  645. ItemLine.DANJU = dr["RCVCode"].ToString();
  646. ItemLine.POSNR = dr["SAPSequence"].ToString();
  647. ItemLine.MATNR = dr["InvCode"].ToString();
  648. ItemLine.GERNR = dr["BatchCode"].ToString();
  649. ItemLineList.Add(ItemLine);
  650. }
  651. sqlString.Append($@"DELETE FROM ICSManufactureReceive WHERE ID='{id}';");
  652. sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','14','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
  653. }
  654. }
  655. if (ItemList.Count > 0)
  656. {
  657. Info.Z_ITEM = ItemList.ToArray();
  658. if (ItemLineList.Count > 0)
  659. {
  660. Info.Z_GERNR = ItemLineList.ToArray();
  661. }
  662. else
  663. {
  664. Info.Z_GERNR = new SAPCallBackDocVPNCS.ZWEBS_GERNR[1];
  665. }
  666. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZResponse();
  667. result = Client.CallZWMS_SK_WS_PZ(Info);
  668. if (result.Z_NULL == "N")
  669. {
  670. foreach (SAPCallBackDocVPNCS.ZWEB_RETURN resultItem in result.Z_FLAG)
  671. {
  672. IsSuccess = "N";
  673. ErrorMessage += resultItem.L_MESSAGE + "/r/n";
  674. }
  675. }
  676. }
  677. }
  678. }
  679. if (IsSuccess == "N")
  680. {
  681. throw new Exception(ErrorMessage);
  682. }
  683. if (sqlString.IsEmpty())
  684. {
  685. return 0;
  686. }
  687. int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
  688. return count;
  689. }
  690. #endregion
  691. #region 成本中心退料
  692. else if (type == "15")
  693. {
  694. #region SAP(三层结构)
  695. string IsSuccess = "";
  696. string ErrorMessage = "";
  697. string sql = $@" select Distinct A.InCode,A.WorkPoint from ICSOtherIn A
  698. where A.InCode in ({codes})";
  699. DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
  700. for (int i = 0; i < dt.Rows.Count; i++)
  701. {
  702. var applyCode = dt.Rows[i]["InCode"].ToString();
  703. var applyWorkPoint = dt.Rows[i]["WorkPoint"].ToString();
  704. string chksql = @"select SUM(Quantity) AS Quantity,SUM(InQuantity) AS InQuantity from ICSOtherIn
  705. where InCode='{0}' and WorkPoint='{1}'
  706. GROUP BY InCode,WorkPoint";
  707. chksql = string.Format(chksql, applyCode, applyWorkPoint);
  708. DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
  709. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ();
  710. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ1();
  711. Info.NEWID = Guid.NewGuid().ToString();
  712. Info.DANJU = dt.Rows[i]["InCode"].ToString();
  713. Info.STATE = "0";
  714. List<SAPCallBackDocVPNCS.ZWMS_PZ> ItemList = new List<SAPCallBackDocVPNCS.ZWMS_PZ>();
  715. List<SAPCallBackDocVPNCS.ZWEBS_GERNR> ItemLineList = new List<SAPCallBackDocVPNCS.ZWEBS_GERNR>();
  716. Info.Z_FLAG = new SAPCallBackDocVPNCS.ZWEB_RETURN[1];
  717. sql = @"select A.InCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.InQuantity
  718. ,ISNULL(B.BatchCode,'') AS BatchCode,A.ID,A.WHCode,A.WorkPoint from ICSOtherIn A
  719. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
  720. WHERE InCode='{0}' AND A.WorkPoint='{1}'";
  721. sql = string.Format(sql, dt.Rows[i]["InCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  722. DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
  723. foreach (DataRow dr in Sapdt.Rows)
  724. {
  725. if (Convert.ToDecimal(dr["InQuantity"].ToString()) != Convert.ToDecimal(dr["Quantity"].ToString()))
  726. {
  727. string id = dr["ID"].ToString();
  728. string dnCode = dr["InCode"].ToString();
  729. string invCode = dr["INVCode"].ToString();
  730. string workPoint = dr["WorkPoint"].ToString();
  731. string whCode = dr["WHCode"].ToString();
  732. decimal quantity = dr["Quantity"].ToDecimal();
  733. string sequence = dr["SAPSequence"].ToString();
  734. string batchCode = dr["BatchCode"].ToString();
  735. decimal dnQuantity = dr["InQuantity"].ToDecimal();
  736. SAPCallBackDocVPNCS.ZWMS_PZ Item = new SAPCallBackDocVPNCS.ZWMS_PZ();
  737. SAPCallBackDocVPNCS.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPNCS.ZWEBS_GERNR();
  738. Item.DANJU = dnCode;
  739. Item.POSNR = sequence;
  740. Item.LINGYSL = dnQuantity;
  741. ItemList.Add(Item);
  742. if (dr["BatchCode"].ToString() != "")
  743. {
  744. ItemLine.DANJU = dnCode;
  745. ItemLine.POSNR = sequence;
  746. ItemLine.MATNR = invCode;
  747. ItemLine.GERNR = batchCode;
  748. ItemLineList.Add(ItemLine);
  749. }
  750. sqlString.Append($@"DELETE FROM ICSOtherIn WHERE ID='{id}';");
  751. sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','15','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
  752. }
  753. }
  754. if (ItemList.Count > 0)
  755. {
  756. Info.Z_ITEM = ItemList.ToArray();
  757. if (ItemLineList.Count > 0)
  758. {
  759. Info.Z_GERNR = ItemLineList.ToArray();
  760. }
  761. else
  762. {
  763. Info.Z_GERNR = new SAPCallBackDocVPNCS.ZWEBS_GERNR[1];
  764. }
  765. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZResponse();
  766. result = Client.CallZWMS_SK_WS_PZ(Info);
  767. if (result.Z_NULL == "N")
  768. {
  769. foreach (SAPCallBackDocVPNCS.ZWEB_RETURN resultItem in result.Z_FLAG)
  770. {
  771. IsSuccess = "N";
  772. ErrorMessage += resultItem.L_MESSAGE + "/r/n";
  773. }
  774. }
  775. }
  776. }
  777. if (IsSuccess == "N")
  778. {
  779. throw new Exception(ErrorMessage);
  780. }
  781. #endregion
  782. if (sqlString.IsEmpty())
  783. {
  784. return 0;
  785. }
  786. int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
  787. return count;
  788. }
  789. #endregion、
  790. #region 退料单
  791. else if (type == "16")
  792. {
  793. #region SAP(三层结构)
  794. string IsSuccess = "";
  795. string ErrorMessage = "";
  796. string sql = $@" select Distinct A.ApplyNegCode,A.WorkPoint from ICSMOApplyNeg A
  797. where A.ApplyNegCode in ({codes})";
  798. DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
  799. for (int i = 0; i < dt.Rows.Count; i++)
  800. {
  801. var applyCode = dt.Rows[i]["ApplyNegCode"].ToString();
  802. var applyWorkPoint = dt.Rows[i]["WorkPoint"].ToString();
  803. string chksql = @"select SUM(B.Quantity) AS Quantity,SUM(B.IssueNegQuantity) AS IssueQuantity from ICSMOApplyNeg A
  804. LEFT JOIN ICSMOApplyNegDetail B ON B.ApplyNegCode=A.ApplyNegCode AND B.WorkPoint=A.WorkPoint
  805. where A.ApplyNegCode='{0}' and A.WorkPoint='{1}'
  806. GROUP BY A.ApplyNegCode,A.WorkPoint";
  807. chksql = string.Format(chksql, applyCode, applyWorkPoint);
  808. DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
  809. if (Convert.ToDecimal(chkdt.Rows[0]["IssueQuantity"].ToString()) == 0)
  810. {
  811. //删除主表
  812. sqlString.Append($@"DELETE FROM ICSMOApplyNeg WHERE ApplyNegCode='{applyCode}' and WorkPoint='{applyWorkPoint}';");
  813. }
  814. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ();
  815. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZ1();
  816. Info.NEWID = Guid.NewGuid().ToString();
  817. Info.DANJU = dt.Rows[i]["ApplyNegCode"].ToString();
  818. Info.STATE = "0";
  819. List<SAPCallBackDocVPNCS.ZWMS_PZ> ItemList = new List<SAPCallBackDocVPNCS.ZWMS_PZ>();
  820. List<SAPCallBackDocVPNCS.ZWEBS_GERNR> ItemLineList = new List<SAPCallBackDocVPNCS.ZWEBS_GERNR>();
  821. Info.Z_FLAG = new SAPCallBackDocVPNCS.ZWEB_RETURN[1];
  822. sql = @" select A.ApplyNegCode,B.SAPSequence,B.InvCode,B.Sequence,B.Quantity,B.IssueNegQuantity
  823. ,ISNULL(C.BatchCode,'') AS BatchCode,B.WorkPoint,B.ID,B.WHCode from ICSMOApplyNeg A
  824. LEFT JOIN ICSMOApplyNegDetail B ON B.ApplyNegCode=A.ApplyNegCode AND B.WorkPoint=A.WorkPoint
  825. LEFT JOIN ICSExtension C ON C.ID=B.ExtensionID AND C.WorkPoint=B.WorkPoint
  826. WHERE A.ApplyNegCode='{0}' AND A.WorkPoint='{1}'";
  827. sql = string.Format(sql, dt.Rows[i]["ApplyNegCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  828. DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
  829. foreach (DataRow dr in Sapdt.Rows)
  830. {
  831. if (Convert.ToDecimal(dr["IssueNegQuantity"].ToString()) != Convert.ToDecimal(dr["Quantity"].ToString()))
  832. {
  833. string id = dr["ID"].ToString();
  834. string dnCode = dr["ApplyNegCode"].ToString();
  835. string invCode = dr["INVCode"].ToString();
  836. string workPoint = dr["WorkPoint"].ToString();
  837. string whCode = dr["WHCode"].ToString();
  838. decimal quantity = dr["Quantity"].ToDecimal();
  839. string sequence = dr["SAPSequence"].ToString();
  840. string batchCode = dr["BatchCode"].ToString();
  841. decimal dnQuantity = dr["IssueNegQuantity"].ToDecimal();
  842. SAPCallBackDocVPNCS.ZWMS_PZ Item = new SAPCallBackDocVPNCS.ZWMS_PZ();
  843. SAPCallBackDocVPNCS.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPNCS.ZWEBS_GERNR();
  844. Item.DANJU = dnCode;
  845. Item.POSNR = sequence;
  846. Item.LINGYSL = dnQuantity;
  847. ItemList.Add(Item);
  848. if (dr["BatchCode"].ToString() != "")
  849. {
  850. ItemLine.DANJU = dnCode;
  851. ItemLine.POSNR = sequence;
  852. ItemLine.MATNR = invCode;
  853. ItemLine.GERNR = batchCode;
  854. ItemLineList.Add(ItemLine);
  855. }
  856. sqlString.Append($@"DELETE FROM ICSMOApplyNegDetail WHERE ID='{id}';");
  857. sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','16','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
  858. }
  859. }
  860. if (ItemList.Count > 0)
  861. {
  862. Info.Z_ITEM = ItemList.ToArray();
  863. if (ItemLineList.Count > 0)
  864. {
  865. Info.Z_GERNR = ItemLineList.ToArray();
  866. }
  867. else
  868. {
  869. Info.Z_GERNR = new SAPCallBackDocVPNCS.ZWEBS_GERNR[1];
  870. }
  871. SAPCallBackDocVPNCS.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPNCS.ZWMS_SK_WS_PZResponse();
  872. result = Client.CallZWMS_SK_WS_PZ(Info);
  873. if (result.Z_NULL == "N")
  874. {
  875. foreach (SAPCallBackDocVPNCS.ZWEB_RETURN resultItem in result.Z_FLAG)
  876. {
  877. IsSuccess = "N";
  878. ErrorMessage += resultItem.L_MESSAGE + "/r/n";
  879. }
  880. }
  881. }
  882. }
  883. if (IsSuccess == "N")
  884. {
  885. throw new Exception(ErrorMessage);
  886. }
  887. #endregion
  888. if (sqlString.IsEmpty())
  889. {
  890. return 0;
  891. }
  892. int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
  893. return count;
  894. }
  895. #endregion
  896. #region 销售退货单
  897. else
  898. {
  899. string IsSuccess = "";
  900. string ErrorMessage = "";
  901. string sql = $@" select Distinct A.SDNCode,A.WorkPoint from ICSSDN A
  902. where A.SDNCode in ({codes})";
  903. DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
  904. for (int i = 0; i < dt.Rows.Count; i++)
  905. {
  906. string chksql = @"select SUM(Quantity) AS Quantity,SUM(SDNQuantity) AS SDNQuantity from ICSSDN
  907. where SDNCode='{0}' and WorkPoint='{1}'
  908. GROUP BY SDNCode,WorkPoint";
  909. chksql = string.Format(chksql, dt.Rows[i]["SDNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  910. DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
  911. if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["SDNQuantity"]))
  912. {
  913. SAPCallBackDispatchVPNCS.ZWMS_SK_DO_GZ Client = new SAPCallBackDispatchVPNCS.ZWMS_SK_DO_GZ();
  914. SAPCallBackDispatchVPNCS.ZWMS_SK_DO_GZ1 Info = new SAPCallBackDispatchVPNCS.ZWMS_SK_DO_GZ1();
  915. List<SAPCallBackDispatchVPNCS.ZWMS_DO_HEAD> headlist = new List<SAPCallBackDispatchVPNCS.ZWMS_DO_HEAD>();
  916. SAPCallBackDispatchVPNCS.ZWMS_DO_HEAD head = new SAPCallBackDispatchVPNCS.ZWMS_DO_HEAD();
  917. head.VBELN = dt.Rows[i]["SDNCode"].ToString();
  918. headlist.Add(head);
  919. Info.T_HEAD = headlist.ToArray();
  920. List<SAPCallBackDispatchVPNCS.ZWMS_DO_ITEM> ItemList = new List<SAPCallBackDispatchVPNCS.ZWMS_DO_ITEM>();
  921. List<SAPCallBackDispatchVPNCS.ZWMS_DO_GERNR> ItemLineList = new List<SAPCallBackDispatchVPNCS.ZWMS_DO_GERNR>();
  922. Info.T_RETURN = new SAPCallBackDispatchVPNCS.ZWMS_DO_RETURN[1];
  923. sql = @" select A.ID,A.WorkPoint,A.WHCode, A.SDNCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.SDNQuantity
  924. ,ISNULL(B.BatchCode,'') AS BatchCode from ICSSDN A
  925. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
  926. WHERE SDNCode='{0}' AND A.WorkPoint='{1}'";
  927. sql = string.Format(sql, dt.Rows[i]["SDNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  928. DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
  929. foreach (DataRow dr in Sapdt.Rows)
  930. {
  931. if (Convert.ToDecimal(dr["Quantity"].ToString()) != Convert.ToDecimal(dr["SDNQuantity"].ToString()))
  932. {
  933. string id = dr["ID"].ToString();
  934. string dnCode = dr["SDNCode"].ToString();
  935. string invCode = dr["INVCode"].ToString();
  936. string workPoint = dr["WorkPoint"].ToString();
  937. string whCode = dr["WHCode"].ToString();
  938. decimal quantity = dr["Quantity"].ToDecimal();
  939. string sequence = dr["SAPSequence"].ToString();
  940. string batchCode = dr["BatchCode"].ToString();
  941. decimal dnQuantity = dr["SDNQuantity"].ToDecimal();
  942. SAPCallBackDispatchVPNCS.ZWMS_DO_ITEM Item = new SAPCallBackDispatchVPNCS.ZWMS_DO_ITEM();
  943. SAPCallBackDispatchVPNCS.ZWMS_DO_GERNR ItemLine = new SAPCallBackDispatchVPNCS.ZWMS_DO_GERNR();
  944. Item.VBELN = dr["SDNCode"].ToString();
  945. Item.POSNR = dr["SAPSequence"].ToString();
  946. Item.LFIMG = System.Decimal.Round(Convert.ToDecimal(dr["SDNQuantity"].ToString()), 3);
  947. ItemList.Add(Item);
  948. if (dr["BatchCode"].ToString() != "")
  949. {
  950. ItemLine.VBELN = dr["SDNCode"].ToString();
  951. ItemLine.POSNR = dr["SAPSequence"].ToString();
  952. ItemLine.GERNR = dr["BatchCode"].ToString();
  953. ItemLineList.Add(ItemLine);
  954. }
  955. sqlString.Append($@"DELETE FROM ICSSDN WHERE ID='{id}';");
  956. sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','17','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
  957. }
  958. }
  959. if (ItemList.Count > 0)
  960. {
  961. Info.T_ITEM = ItemList.ToArray();
  962. if (ItemLineList.Count > 0)
  963. {
  964. Info.T_GERNR = ItemLineList.ToArray();
  965. }
  966. else
  967. {
  968. Info.T_GERNR = new SAPCallBackDispatchVPNCS.ZWMS_DO_GERNR[1];
  969. }
  970. SAPCallBackDispatchVPNCS.ZWMS_SK_DO_GZResponse result = new SAPCallBackDispatchVPNCS.ZWMS_SK_DO_GZResponse();
  971. result = Client.CallZWMS_SK_DO_GZ(Info);
  972. foreach (SAPCallBackDispatchVPNCS.ZWMS_DO_RETURN resultItem in result.T_RETURN)
  973. {
  974. if (resultItem.ZFLG == "N")
  975. {
  976. IsSuccess = "N";
  977. ErrorMessage += resultItem.ZMESS + "/r/n";
  978. }
  979. }
  980. }
  981. }
  982. }
  983. if (IsSuccess == "N")
  984. {
  985. throw new Exception(ErrorMessage);
  986. }
  987. if (sqlString.IsEmpty())
  988. {
  989. return 0;
  990. }
  991. int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
  992. return count;
  993. }
  994. #endregion
  995. }
  996. catch (Exception ex)
  997. {
  998. throw new Exception(ex.Message);
  999. }
  1000. }
  1001. }
  1002. }