纽威

1145 lines
68 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. using ICSSoft.Common;
  2. using ICSSoft.Entity;
  3. using Newtonsoft.Json;
  4. using Newtonsoft.Json.Linq;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Data.SqlClient;
  9. using System.Linq;
  10. using System.Net.Http;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. namespace ICSSoft.DataProject
  14. {
  15. /// <summary>
  16. /// 使用中
  17. /// 采购模块
  18. /// </summary>
  19. public class ICSPurchaseService
  20. {
  21. private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
  22. #region 采购到货
  23. /// <summary>
  24. /// 采购到货接口
  25. /// </summary>
  26. /// <param name="TransType"></param>
  27. /// <param name="Identification"></param>
  28. /// <param name="cmd"></param>
  29. public static void DeliveryNoticeERP(string DNCode, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  30. {
  31. try
  32. {
  33. #region ERP
  34. string sql = @"SELECT a.VenCode+a.DepCode+y.POCode+a.MUSER AS Costre,a.VenCode,a.DepCode,y.POCode,a.MUSER,a.MTIME,
  35. a.Sequence,a.InvCode,a.Quantity,a.Amount,ISNULL(a.UnitPrice,0) AS UnitPrice,a.Currency,a.PODetailID
  36. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  37. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  38. INTO #TempERP
  39. FROM ICSDeliveryNotice a
  40. INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
  41. LEFT JOIN ICSInventory invBat ON a.InvCode=invBat.InvCode AND a.WorkPoint=invBat.WorkPoint
  42. INNER JOIN ICSPurchaseOrder y ON a.PODetailID=y.PODetailID AND a.WorkPoint=y.WorkPoint
  43. WHERE a.DNCode='{0}' AND a.WorkPoint='{1}'
  44. SELECT DISTINCT Costre,WorkPoint,VenCode,DepCode,POCode,MUSER AS [User],SYSDATETIME() AS MTime FROM #TempERP
  45. SELECT Costre,Sequence,InvCode,Quantity,Amount,UnitPrice,Currency,PODetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10
  46. FROM #TempERP
  47. DROP TABLE #TempERP";
  48. sql = string.Format(sql, DNCode, WorkPoint);
  49. DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  50. string Inputstr = DataToJsonHelper.DataSetToJson(ds, "details", "Costre");
  51. string resultStr = HTTPHelper.HttpPost("采购到货", ERPUrl.CreatePOArrivURL, Inputstr);
  52. Result result = new Result();
  53. result = JsonConvert.DeserializeObject<Result>(resultStr);
  54. if (result.Success)
  55. {
  56. try
  57. {
  58. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  59. foreach (var item in res)
  60. {
  61. JObject jo = (JObject)item;
  62. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  63. foreach (var detail in resdetail)
  64. {
  65. JObject det = (JObject)detail;
  66. string ERPupdate = @"update ICSDeliveryNotice set DNCode='{0}',Sequence='{1}',DNID='{2}',DNDetailID='{3}'
  67. where PODetailID='{4}' AND DNType='1' AND DNCode='{5}' ";
  68. ERPupdate = string.Format(ERPupdate, jo["DNCode"], det["Sequence"], jo["ID"], det["DetailID"], det["PODetailID"], DNCode);
  69. if (!DBHelper.ExecuteNonQuery(ERPupdate, cmd))
  70. {
  71. throw new Exception(language.GetNameByCode("WMSAPIInfo079"));//"到货单更新失败!");
  72. }
  73. }
  74. }
  75. }
  76. catch (Exception ex)
  77. {
  78. log.Debug(ex.ToString());
  79. log.Debug(resultStr);
  80. }
  81. }
  82. else
  83. {
  84. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  85. }
  86. #endregion
  87. }
  88. catch (Exception)
  89. {
  90. throw;
  91. }
  92. }
  93. #endregion
  94. #region 采购入库
  95. /// <summary>
  96. /// 采购入库
  97. /// </summary>
  98. /// <param name="TransCode"></param>
  99. /// <param name="TransSequence"></param>
  100. /// <param name="Quantity"></param>
  101. /// <param name="WorkPoint"></param>
  102. /// <param name="cmd"></param>
  103. public static void PurchaseReceiveDoc(string LotNo, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  104. {
  105. try
  106. {
  107. string sql = @"DECLARE @Status VARCHAR(10)
  108. SELECT @Status=c.Status FROM ICSInventoryLot a
  109. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  110. INNER JOIN ICSPurchaseOrder c ON b.TransCode=c.POCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  111. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  112. IF (@Status IS NULL)
  113. BEGIN
  114. RAISERROR('" + language.GetNameByCode("WMSAPIInfo081") + @"',16,1);
  115. RETURN
  116. END
  117. ELSE IF (@Status='3')
  118. BEGIN
  119. RAISERROR('" + language.GetNameByCode("WMSAPIInfo082") + @"',16,1);
  120. RETURN
  121. END
  122. UPDATE c SET InQuantity=ISNULL(InQuantity,0)+'{2}'
  123. FROM ICSInventoryLot a
  124. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  125. INNER JOIN ICSPurchaseOrder c ON b.TransCode=c.POCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  126. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  127. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  128. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  129. INNER JOIN ICSPurchaseOrder c ON b.TransCode=c.POCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  130. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.Quantity<c.InQuantity)
  131. BEGIN
  132. RAISERROR('" + language.GetNameByCode("WMSAPIInfo083") + @"',16,1);
  133. END";
  134. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  135. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  136. {
  137. throw new Exception(language.GetNameByCode("WMSAPIInfo104"));//"采购入库单更新失败!");
  138. }
  139. }
  140. catch (Exception)
  141. {
  142. throw;
  143. }
  144. }
  145. /// <summary>
  146. /// 采购入库接口
  147. /// </summary>
  148. /// <param name="TransType"></param>
  149. /// <param name="Identification"></param>
  150. /// <param name="cmd"></param>
  151. public static void PurchaseReceiveDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  152. {
  153. try
  154. {
  155. #region ERP
  156. string sql = @"SELECT c.VenCode+a.ToWarehouseCode+c.POCode+a.MUSER+CASE WHEN(LEN(f.DNID)>=20) THEN '' ELSE f.DNCode END AS Costre,c.VenCode,a.ToWarehouseCode AS WarehouseCode,c.POCode,CASE WHEN(LEN(f.DNID)>=20) THEN '' ELSE f.DNCode END AS DNCode,CASE WHEN(LEN(f.DNID)>=20) THEN '1' ELSE '0' END AS HasDN,a.MUSER,CASE WHEN(LEN(f.DNID)>=20) THEN '' ELSE f.Sequence END AS DNSequence,ROW_NUMBER() OVER (ORDER BY c.VenCode,a.ToWarehouseCode,c.POCode,c.PODetailID,a.InvCode) AS Sequence,
  157. a.InvCode,SUM(a.Quantity) AS Quantity,SUM(a.Quantity*(lot.Amount/lot.Quantity)) AS Amount,isnull((c.UnitPrice),0) as UnitPrice,c.Currency,c.PODetailID,con.Enable AS UpdateTodoQuantity,conn.Enable
  158. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  159. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  160. INTO #TempERP
  161. FROM ICSWareHouseLotInfoLog a
  162. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  163. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  164. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  165. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  166. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  167. INNER JOIN ICSASNDetail g ON a.LotNo=g.LotNo AND a.WorkPoint=g.WorkPoint
  168. INNER JOIN ICSDeliveryNotice f ON g.ASNCode=f.ASNCode AND g.WorkPoint=f.WorkPoint
  169. INNER JOIN ICSPurchaseOrder c ON b.TransCode=c.POCode AND b.TransSequence=c.Sequence AND f.PODetailID=c.PODetailID AND b.WorkPoint=c.WorkPoint
  170. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  171. INNER JOIN ICSConfiguration conn ON con.WorkPoint=conn.WorkPoint AND conn.Code='Escrow001'
  172. WHERE a.Identification='{0}' AND ERPUpload='0' AND BusinessCode='{1}'
  173. GROUP BY c.VenCode,a.ToWarehouseCode,c.POCode,CASE WHEN(LEN(f.DNID)>=20) THEN '' ELSE f.DNCode END,f.DNID,a.MUSER,a.InvCode,CASE WHEN(LEN(f.DNID)>=20) THEN '' ELSE f.Sequence END,c.PODetailID,isnull((c.UnitPrice),0),c.Currency,con.Enable,conn.Enable
  174. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  175. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  176. SELECT DISTINCT Costre,WorkPoint,VenCode,WarehouseCode AS WHCode,POCode,DNCode,MUSER AS [User],SYSDATETIME() AS MTime,Enable,UpdateTodoQuantity FROM #TempERP
  177. SELECT Costre,Sequence,DNSequence,InvCode,Quantity,Amount,PODetailID,Currency,UnitPrice,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10
  178. FROM #TempERP
  179. SELECT HasDN FROM #TempERP
  180. DROP TABLE #TempERP";
  181. sql = string.Format(sql, Identification, BusinessCode);
  182. DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  183. string Inputstr = DataToJsonHelper.DataSetToJson(ds, "details", "Costre");
  184. var IsDNCode = ds.Tables[2];
  185. if (IsDNCode == null || IsDNCode.Rows.Count != 1)
  186. {
  187. throw new Exception(language.GetNameByCode("WMSAPIInfo463"));//ERP到货单只能选择启用或不启用中的一种!
  188. }
  189. string dncode = Convert.ToString(IsDNCode.Rows[0]["HasDN"]);
  190. if (dncode.Equals(""))
  191. {
  192. string resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.DeliveryNoticeURL, Inputstr);
  193. Result result = new Result();
  194. result = JsonConvert.DeserializeObject<Result>(resultStr);
  195. if (result.Success)
  196. {
  197. try
  198. {
  199. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  200. foreach (var item in res)
  201. {
  202. JObject jo = (JObject)item;
  203. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  204. foreach (var detail in resdetail)
  205. {
  206. JObject det = (JObject)detail;
  207. string allcol = jo["cWhCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  208. + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  209. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["DNDetailID"].ToString(), Identification, jo["ID"].ToString(),
  210. det["DetailID"].ToString(), jo["RCVTCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  211. }
  212. }
  213. }
  214. catch (Exception ex)
  215. {
  216. log.Debug(ex.ToString());
  217. log.Debug(resultStr);
  218. }
  219. }
  220. else
  221. {
  222. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  223. }
  224. }
  225. else
  226. {
  227. string resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.PurchaseOrderURL, Inputstr);
  228. Result result = new Result();
  229. result = JsonConvert.DeserializeObject<Result>(resultStr);
  230. if (result.Success)
  231. {
  232. try
  233. {
  234. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  235. foreach (var item in res)
  236. {
  237. JObject jo = (JObject)item;
  238. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  239. foreach (var detail in resdetail)
  240. {
  241. JObject det = (JObject)detail;
  242. string allcol = jo["cWhCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  243. + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  244. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["PODetailID"].ToString(), Identification, jo["ID"].ToString(),
  245. det["DetailID"].ToString(), jo["RCVTCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  246. }
  247. }
  248. }
  249. catch (Exception ex)
  250. {
  251. log.Debug(ex.ToString());
  252. log.Debug(resultStr);
  253. }
  254. }
  255. else
  256. {
  257. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  258. }
  259. }
  260. #endregion
  261. }
  262. catch (Exception)
  263. {
  264. throw;
  265. }
  266. }
  267. #endregion
  268. /// <summary>
  269. /// 审核的到货单(货柜)
  270. /// </summary>
  271. /// <param name="TransCode"></param>
  272. /// <param name="TransSequence"></param>
  273. /// <param name="Quantity"></param>
  274. /// <param name="WorkPoint"></param>
  275. /// <param name="cmd"></param>
  276. public static void DeliveryNoticeInForHG(string DocNO, string TransLine, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  277. {
  278. try
  279. {
  280. string sql = @" IF EXISTS (SELECT ID FROM ICSDeliveryNotice WHERE RCVQuantity=Quantity AND DNCode='{0}' AND Sequence='{1}' and WorkPoint='{2}' )
  281. BEGIN
  282. RAISERROR('" + language.GetNameByCode("WMSAPIInfo471") + @"',16,1);
  283. RETURN
  284. END;
  285. UPDATE ICSDeliveryNotice set RCVQuantity=Quantity
  286. Where DNCode='{0}' AND Sequence='{1}' and WorkPoint='{2}'";
  287. sql = string.Format(sql, DocNO, TransLine, WorkPoint);
  288. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  289. {
  290. throw new Exception(language.GetNameByCode("WMSAPIInfo079"));//"到货单更新失败!");
  291. }
  292. }
  293. catch (Exception)
  294. {
  295. throw;
  296. }
  297. }
  298. #region 审核的到货单
  299. /// <summary>
  300. /// 审核的到货单
  301. /// </summary>
  302. /// <param name="TransCode"></param>
  303. /// <param name="TransSequence"></param>
  304. /// <param name="Quantity"></param>
  305. /// <param name="WorkPoint"></param>
  306. /// <param name="cmd"></param>
  307. public static void DeliveryNoticeIn(string LotNo, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  308. {
  309. try
  310. {
  311. string sql = @"DECLARE @Status VARCHAR(10)
  312. SELECT @Status=c.Status FROM ICSInventoryLot a
  313. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  314. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  315. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.DNType='1'
  316. IF (@Status IS NULL)
  317. BEGIN
  318. RAISERROR('" + language.GetNameByCode("WMSAPIInfo081") + @"',16,1);
  319. RETURN
  320. END
  321. ELSE IF (@Status='3')
  322. BEGIN
  323. RAISERROR('" + language.GetNameByCode("WMSAPIInfo082") + @"',16,1);
  324. RETURN
  325. END
  326. UPDATE c SET RCVQuantity=ISNULL(RCVQuantity,0)+'{2}'
  327. FROM ICSInventoryLot a
  328. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  329. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  330. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.DNType='1'
  331. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  332. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  333. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  334. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.DNType='1' AND c.Quantity<c.RCVQuantity)
  335. BEGIN
  336. RAISERROR('" + language.GetNameByCode("WMSAPIInfo083") + @"',16,1);
  337. END";
  338. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  339. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  340. {
  341. throw new Exception(language.GetNameByCode("WMSAPIInfo079"));//"到货单更新失败!");
  342. }
  343. }
  344. catch (Exception)
  345. {
  346. throw;
  347. }
  348. }
  349. /// <summary>
  350. /// 审核的到货单接口(平库,传给SAP单据行总数)
  351. /// </summary>
  352. /// <param name="TransType"></param>
  353. /// <param name="Identification"></param>
  354. /// <param name="cmd"></param>
  355. public static void DeliveryNoticeInERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  356. {
  357. try
  358. {
  359. #region SAP(检验合格单为两层结构 一行对应一个序列号)
  360. string IsSuccess = "";
  361. string ErrorMessage = "";
  362. string sql = @" select A.DNCode,A.WorkPoint,SUM(B.Quantity) AS Quantity from ICSDeliveryNotice A
  363. LEFT JOIN ICSWareHouseLotInfoLog B ON B.TransCode=A.DNCode AND B.WorkPoint=A.WorkPoint
  364. where B.Identification='{0}' AND BusinessCode='2'
  365. GROUP BY A.DNCode,A.WorkPoint";
  366. sql = string.Format(sql, Identification);
  367. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  368. if (dt.Rows.Count > 1)
  369. {
  370. throw new Exception(language.GetNameByCode("WMSAPIInfo202"));//单次提交单据数量卡控(只允许一张单据)
  371. }
  372. for (int i = 0; i < dt.Rows.Count; i++)
  373. {
  374. string chksql = @"select SUM(Quantity) AS Quantity,SUM(RCVQuantity) AS RCVQuantity from ICSDeliveryNotice
  375. where DNCode='{0}' and WorkPoint='{1}'
  376. GROUP BY DNCode,WorkPoint";
  377. chksql = string.Format(chksql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  378. DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd);
  379. if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["RCVQuantity"]))
  380. {
  381. return;
  382. }
  383. sql = @"select A.DNCode,
  384. CASE WHEN SUM(Convert(decimal(18,6),A.SAPSequence)) IS NULL THEN SUM(A.RCVQuantity)
  385. ELSE SUM(Convert(decimal(18,6),A.SAPSequence)) END AS RCVQuantity,B.BatchCode from ICSDeliveryNotice A
  386. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
  387. WHERE DNCode='{0}' AND A.WorkPoint='{1}'
  388. GROUP BY A.DNCode,B.BatchCode";
  389. sql = string.Format(sql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  390. DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd);
  391. if (Sapdt.Rows.Count == 0)
  392. {
  393. throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo205"), dt.Rows[i]["DNCode"].ToString()));//单据查询失败
  394. }
  395. SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU Client = new SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU();
  396. SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU1 Info = new SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU1();
  397. Info.NEWID = Identification;
  398. Info.PRUEFLOS = Sapdt.Rows[0]["DNCode"].ToString();
  399. Info.L_LME = System.Decimal.Round(Convert.ToDecimal(Sapdt.Rows[0]["RCVQuantity"].ToString()), 3);
  400. Info.SERNP = Sapdt.Rows[0]["BatchCode"].ToString();
  401. Info.Z_GERNR = new SAPCallBackJYHGDVPN.ZWEBS_GERNR[0];
  402. SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKUResponse result = new SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKUResponse();
  403. result = Client.CallZWMS_SK_WS_RUKU(Info);
  404. if (result.Z_NULL == "N")
  405. {
  406. IsSuccess = "N";
  407. ErrorMessage += result.L_MESSAGE;
  408. }
  409. }
  410. if (IsSuccess == "N")
  411. {
  412. throw new Exception(ErrorMessage);
  413. }
  414. #endregion
  415. }
  416. catch (Exception)
  417. {
  418. throw;
  419. }
  420. }
  421. /// <summary>
  422. /// 审核的到货单接口(货柜,传给SAP本次入库数量)
  423. /// </summary>
  424. /// <param name="TransType"></param>
  425. /// <param name="Identification"></param>
  426. /// <param name="cmd"></param>
  427. public static void DeliveryNoticeInERPHG(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  428. {
  429. try
  430. {
  431. #region SAP(检验合格单为两层结构 一行对应一个序列号)
  432. string IsSuccess = "";
  433. string ErrorMessage = "";
  434. string sql = @" select A.DNCode,A.WorkPoint,SUM(B.Quantity) AS Quantity from ICSDeliveryNotice A
  435. LEFT JOIN ICSWareHouseLotInfoLog B ON B.TransCode=A.DNCode AND B.WorkPoint=A.WorkPoint
  436. where B.Identification='{0}' AND BusinessCode='2'
  437. GROUP BY A.DNCode,A.WorkPoint";
  438. sql = string.Format(sql, Identification);
  439. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  440. if (dt.Rows.Count > 1)
  441. {
  442. throw new Exception(language.GetNameByCode("WMSAPIInfo202"));//单次提交单据数量卡控(只允许一张单据)
  443. }
  444. for (int i = 0; i < dt.Rows.Count; i++)
  445. {
  446. string chksql = @"select SUM(Quantity) AS Quantity,SUM(RCVQuantity) AS RCVQuantity from ICSDeliveryNotice
  447. where DNCode='{0}' and WorkPoint='{1}'
  448. GROUP BY DNCode,WorkPoint";
  449. chksql = string.Format(chksql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  450. DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd);
  451. if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["RCVQuantity"]))
  452. {
  453. return;
  454. }
  455. sql = @"select A.DNCode,SUM(A.RCVQuantity) AS RCVQuantity,B.BatchCode from ICSDeliveryNotice A
  456. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
  457. WHERE DNCode='{0}' AND A.WorkPoint='{1}'
  458. GROUP BY A.DNCode,B.BatchCode";
  459. sql = string.Format(sql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  460. DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd);
  461. if (Sapdt.Rows.Count == 0)
  462. {
  463. throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo205"), dt.Rows[i]["DNCode"].ToString()));//单据查询失败
  464. }
  465. SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU Client = new SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU();
  466. SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU1 Info = new SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU1();
  467. Info.NEWID = Identification;
  468. Info.PRUEFLOS = Sapdt.Rows[0]["DNCode"].ToString();
  469. Info.L_LME = System.Decimal.Round(Convert.ToDecimal(dt.Rows[0]["Quantity"].ToString()), 3);
  470. Info.SERNP = Sapdt.Rows[0]["BatchCode"].ToString();
  471. Info.Z_GERNR = new SAPCallBackJYHGDVPN.ZWEBS_GERNR[0];
  472. SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKUResponse result = new SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKUResponse();
  473. result = Client.CallZWMS_SK_WS_RUKU(Info);
  474. if (result.Z_NULL == "N")
  475. {
  476. IsSuccess = "N";
  477. ErrorMessage += result.L_MESSAGE;
  478. }
  479. }
  480. if (IsSuccess == "N")
  481. {
  482. throw new Exception(ErrorMessage);
  483. }
  484. #endregion
  485. }
  486. catch (Exception)
  487. {
  488. throw;
  489. }
  490. }
  491. #endregion
  492. #region 叉车采购入库
  493. /// <summary>
  494. /// 叉车采购入库
  495. /// </summary>
  496. /// <param name="TransCode"></param>
  497. /// <param name="TransSequence"></param>
  498. /// <param name="Quantity"></param>
  499. /// <param name="WorkPoint"></param>
  500. /// <param name="cmd"></param>
  501. public static void DeliveryNoticeForkLift(string ContainerCode, SqlCommand cmd, Dictionary<string, string> language)
  502. {
  503. try
  504. {
  505. string lotsql = @" select A.LotNo,C.Quantity,B.WorkPoint from ICSContainerLot A
  506. LEFT JOIN ICSContainer B ON B.ID=A.ContainerID AND B.WorkPoint=A.WorkPoint
  507. LEFT JOIN ICSInventoryLot C ON C.LotNo=A.LotNo AND C.WorkPoint=A.WorkPoint
  508. where B.ContainerCode='{0}'";
  509. lotsql = string.Format(lotsql, ContainerCode);
  510. DataTable lotdt = DBHelper.SQlReturnData(lotsql, cmd);
  511. if (lotdt.Rows.Count == 0)
  512. {
  513. throw new Exception("托盘号不存在或者尚未绑定条码!");
  514. }
  515. foreach (DataRow dr in lotdt.Rows)
  516. {
  517. string sql = @" UPDATE c SET RCVQuantity=ISNULL(RCVQuantity,0)+'{2}'
  518. FROM ICSInventoryLot a
  519. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  520. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  521. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.DNType='1'
  522. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  523. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  524. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  525. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.DNType='1' AND c.Quantity<c.RCVQuantity)
  526. BEGIN
  527. RAISERROR('" + language.GetNameByCode("WMSAPIInfo083") + @"',16,1);
  528. END";
  529. sql = string.Format(sql, dr["LotNo"].ToString(), dr["WorkPoint"].ToString(), dr["Quantity"].ToString());
  530. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  531. {
  532. throw new Exception(language.GetNameByCode("WMSAPIInfo079"));//"到货单更新失败!");
  533. }
  534. }
  535. }
  536. catch (Exception)
  537. {
  538. throw;
  539. }
  540. }
  541. #endregion
  542. #region 采购拒收
  543. /// <summary>
  544. /// 采购拒收
  545. /// </summary>
  546. /// <param name="TransCode"></param>
  547. /// <param name="TransSequence"></param>
  548. /// <param name="Quantity"></param>
  549. /// <param name="WorkPoint"></param>
  550. /// <param name="cmd"></param>
  551. public static void PurchaseRejectDocIn(string LotNo, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  552. {
  553. try
  554. {
  555. string sql = @"DECLARE @Status VARCHAR(10)
  556. SELECT @Status=c.Status FROM ICSInventoryLot a
  557. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  558. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  559. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.DNType='3'
  560. IF (@Status IS NULL)
  561. BEGIN
  562. RAISERROR('" + language.GetNameByCode("WMSAPIInfo081") + @"',16,1);
  563. RETURN
  564. END
  565. ELSE IF (@Status='3')
  566. BEGIN
  567. RAISERROR('" + language.GetNameByCode("WMSAPIInfo082") + @"',16,1);
  568. RETURN
  569. END
  570. UPDATE c SET RCVQuantity=ISNULL(RCVQuantity,0)+'{2}'
  571. FROM ICSInventoryLot a
  572. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  573. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  574. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.DNType='3'
  575. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  576. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  577. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  578. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.DNType='3' AND c.Quantity<c.RCVQuantity)
  579. BEGIN
  580. RAISERROR('" + language.GetNameByCode("WMSAPIInfo083") + @"',16,1);
  581. END";
  582. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  583. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  584. {
  585. throw new Exception(language.GetNameByCode("WMSAPIInfo084"));//"拒收单更新失败!");
  586. }
  587. }
  588. catch (Exception)
  589. {
  590. throw;
  591. }
  592. }
  593. /// <summary>
  594. /// 采购拒收接口
  595. /// </summary>
  596. /// <param name="TransType"></param>
  597. /// <param name="Identification"></param>
  598. /// <param name="cmd"></param>
  599. public static void PurchaseRejectDocInNewERP(string DNCode, string JDNCode, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  600. {
  601. //try
  602. //{
  603. // #region ERP
  604. // string sql = @"SELECT c.VenCode+a.ToWarehouseCode+c.DNCode+a.MUSER AS Costre,c.VenCode,a.ToWarehouseCode AS WarehouseCode,d.DNCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY c.VenCode,a.ToWarehouseCode,c.DNCode,c.DNDetailID,a.InvCode) AS Sequence,
  605. // a.InvCode,SUM(a.Quantity) AS Quantity,SUM(a.Quantity*(lot.Amount/lot.Quantity)) AS Amount,isnull((c.UnitPrice),0) as UnitPrice,c.Currency,d.DNDetailID,con.Enable AS UpdateTodoQuantity
  606. // ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  607. // ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10,conv.Enable AS VerificationEnable
  608. // INTO #TempERP
  609. // FROM ICSWareHouseLotInfoLog a
  610. // INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  611. // INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  612. // INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  613. // INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  614. // LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  615. // INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  616. // INNER JOIN ICSDeliveryNotice d ON c.PODetailID=d.DNDetailID AND d.WorkPoint=c.WorkPoint
  617. // INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  618. // INNER JOIN ICSConfiguration conv ON con.Code='CompleteVerification' AND a.WorkPoint=conv.WorkPoint
  619. // WHERE a.Identification='{0}' AND ERPUpload='0'
  620. // GROUP BY c.VenCode,a.ToWarehouseCode,c.DNCode,d.DNCode,a.MUSER,lot.Amount,lot.Quantity,a.InvCode,d.DNDetailID,c.DNDetailID,isnull((c.UnitPrice),0),c.Currency,con.Enable,conv.Enable
  621. // ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  622. // ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  623. // SELECT DISTINCT Costre,VenCode,WarehouseCode AS WHCode,DNCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,VerificationEnable,WorkPoint FROM #TempERP
  624. // SELECT Costre,Sequence,InvCode,Quantity,Amount,DNDetailID,Currency,UnitPrice,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10
  625. // FROM #TempERP
  626. // DROP TABLE #TempERP";
  627. // sql = string.Format(sql, Identification);
  628. // DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  629. // string Inputstr = DataToJsonHelper.DataSetToJson(ds, "Vouchs", "Costre");
  630. // string resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.CreatePuArrivalVouchURL, Inputstr);
  631. // Result result = new Result();
  632. // result = JsonConvert.DeserializeObject<Result>(resultStr);
  633. // if (result.Success)
  634. // {
  635. // try
  636. // {
  637. // JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  638. // foreach (var item in res)
  639. // {
  640. // JObject jo = (JObject)item;
  641. // JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  642. // foreach (var detail in resdetail)
  643. // {
  644. // JObject det = (JObject)detail;
  645. // ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["DNDetailID"].ToString(), Identification, jo["ID"].ToString(), det["DetailID"].ToString(), jo["RCVTCode"].ToString(), det["Sequence"].ToString(), cmd, language);
  646. // }
  647. // }
  648. // }
  649. // catch (Exception ex)
  650. // {
  651. // log.Debug(ex.ToString());
  652. // log.Debug(resultStr);
  653. // }
  654. // }
  655. // else
  656. // {
  657. // throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  658. // }
  659. // #endregion
  660. //}
  661. //catch (Exception)
  662. //{
  663. // throw;
  664. //}
  665. try
  666. {
  667. #region ERP
  668. string sql = @"SELECT a.VenCode+a.DepCode+a.DNCode+a.MUSER AS Costre,a.VenCode,a.DepCode,a.DNCode,a.MUSER,a.MTIME,
  669. a.Sequence,a.InvCode,Sum(x.Quantity) AS Quantity,a.Amount,ISNULL(a.UnitPrice,0) AS UnitPrice,a.Currency,a.DNDetailID
  670. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  671. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  672. INTO #TempERP
  673. FROM ICSDeliveryNotice a
  674. INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
  675. INNER JOIN ICSInventory invBat ON a.InvCode=invBat.InvCode AND a.WorkPoint=invBat.WorkPoint
  676. INNER JOIN ICSDeliveryNotice x ON a.DNDetailID=x.PODetailID AND a.WorkPoint=x.WorkPoint
  677. WHERE a.DNCode='{0}' AND a.WorkPoint='{1}'
  678. GROUP BY a.VenCode,a.DepCode,a.DNCode,a.MUSER,a.MTIME,a.Sequence,a.InvCode,a.Amount,a.Quantity,a.UnitPrice,a.Currency,a.DNDetailID,
  679. a.WorkPoint,ISNULL(ext.ProjectCode, ''),ISNULL(invBat.BatchEnable, ''),ISNULL(ext.BatchCode, ''),ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  680. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  681. SELECT DISTINCT Costre,WorkPoint,VenCode,DepCode,DNCode,MUSER AS [User],SYSDATETIME() AS MTime FROM #TempERP
  682. SELECT Costre,Sequence,InvCode,Quantity,Amount,UnitPrice,Currency,DNDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10
  683. FROM #TempERP
  684. DROP TABLE #TempERP";
  685. sql = string.Format(sql, DNCode, WorkPoint);
  686. DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  687. string Inputstr = DataToJsonHelper.DataSetToJson(ds, "Vouchs", "Costre");
  688. string resultStr = HTTPHelper.HttpPost("采购拒收", ERPUrl.CreatePuArrivalVouchURL, Inputstr);
  689. Result result = new Result();
  690. result = JsonConvert.DeserializeObject<Result>(resultStr);
  691. if (result.Success)
  692. {
  693. try
  694. {
  695. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  696. foreach (var item in res)
  697. {
  698. JObject jo = (JObject)item;
  699. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  700. foreach (var detail in resdetail)
  701. {
  702. JObject det = (JObject)detail;
  703. //ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["DNDetailID"].ToString(), Identification, jo["ID"].ToString(), det["DetailID"].ToString(), jo["RJTCode"].ToString(), det["Sequence"].ToString(), cmd, language);
  704. string ERPupdate = @"update ICSDeliveryNotice set DNCode='{0}',Sequence='{1}',DNID='{2}',DNDetailID='{3}'
  705. where PODetailID='{4}' AND DNType='3' AND DNCode='{5}' ";
  706. ERPupdate = string.Format(ERPupdate, jo["RJTCode"], det["Sequence"], jo["ID"], det["DetailID"], det["DNDetailID"], JDNCode);
  707. if (!DBHelper.ExecuteNonQuery(ERPupdate, cmd))
  708. {
  709. throw new Exception(language.GetNameByCode("WMSAPIInfo079"));//"到货单更新失败!");
  710. }
  711. }
  712. }
  713. }
  714. catch (Exception ex)
  715. {
  716. log.Debug(ex.ToString());
  717. log.Debug(resultStr);
  718. }
  719. }
  720. else
  721. {
  722. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  723. }
  724. #endregion
  725. }
  726. catch (Exception)
  727. {
  728. throw;
  729. }
  730. }
  731. /// <summary>
  732. /// 采购拒收接口
  733. /// </summary>
  734. /// <param name="TransType"></param>
  735. /// <param name="Identification"></param>
  736. /// <param name="cmd"></param>
  737. public static void PurchaseRejectDocInERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  738. {
  739. //try
  740. //{
  741. // #region ERP
  742. // string sql = @"SELECT c.VenCode+a.ToWarehouseCode+c.DNCode+a.MUSER AS Costre,c.VenCode,a.ToWarehouseCode AS WarehouseCode,d.DNCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY c.VenCode,a.ToWarehouseCode,c.DNCode,c.DNDetailID,a.InvCode) AS Sequence,
  743. // a.InvCode,SUM(a.Quantity) AS Quantity,SUM(a.Quantity*(lot.Amount/lot.Quantity)) AS Amount,isnull((c.UnitPrice),0) as UnitPrice,c.Currency,d.DNDetailID,con.Enable AS UpdateTodoQuantity
  744. // ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  745. // ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10,conv.Enable AS VerificationEnable
  746. // INTO #TempERP
  747. // FROM ICSWareHouseLotInfoLog a
  748. // INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  749. // INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  750. // INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  751. // INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  752. // LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  753. // INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  754. // INNER JOIN ICSDeliveryNotice d ON c.PODetailID=d.DNDetailID AND d.WorkPoint=c.WorkPoint
  755. // INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  756. // INNER JOIN ICSConfiguration conv ON con.Code='CompleteVerification' AND a.WorkPoint=conv.WorkPoint
  757. // WHERE a.Identification='{0}' AND ERPUpload='0'
  758. // GROUP BY c.VenCode,a.ToWarehouseCode,c.DNCode,d.DNCode,a.MUSER,a.InvCode,d.DNDetailID,c.DNDetailID,isnull((c.UnitPrice),0),c.Currency,con.Enable,conv.Enable
  759. // ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  760. // ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  761. // SELECT DISTINCT Costre,VenCode,WarehouseCode AS WHCode,DNCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,VerificationEnable,WorkPoint FROM #TempERP
  762. // SELECT Costre,Sequence,InvCode,Quantity,Amount,DNDetailID,Currency,UnitPrice,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10
  763. // FROM #TempERP
  764. // DROP TABLE #TempERP";
  765. // sql = string.Format(sql, Identification);
  766. // DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  767. // string Inputstr = DataToJsonHelper.DataSetToJson(ds, "Vouchs", "Costre");
  768. // string resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.CreatePuArrivalVouchURL, Inputstr);
  769. // Result result = new Result();
  770. // result = JsonConvert.DeserializeObject<Result>(resultStr);
  771. // if (result.Success)
  772. // {
  773. // try
  774. // {
  775. // JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  776. // foreach (var item in res)
  777. // {
  778. // JObject jo = (JObject)item;
  779. // JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  780. // foreach (var detail in resdetail)
  781. // {
  782. // JObject det = (JObject)detail;
  783. // ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["DNDetailID"].ToString(), Identification, jo["ID"].ToString(), det["DetailID"].ToString(), jo["RCVTCode"].ToString(), det["Sequence"].ToString(), cmd, language);
  784. // }
  785. // }
  786. // }
  787. // catch (Exception ex)
  788. // {
  789. // log.Debug(ex.ToString());
  790. // log.Debug(resultStr);
  791. // }
  792. // }
  793. // else
  794. // {
  795. // throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  796. // }
  797. // #endregion
  798. //}
  799. //catch (Exception)
  800. //{
  801. // throw;
  802. //}
  803. }
  804. #endregion
  805. #region 采购退货
  806. /// <summary>
  807. /// 采购退货
  808. /// </summary>
  809. /// <param name="TransCode"></param>
  810. /// <param name="TransSequence"></param>
  811. /// <param name="Quantity"></param>
  812. /// <param name="WorkPoint"></param>
  813. /// <param name="cmd"></param>
  814. public static void PurchaseReceiveDoctNegative(string TransCode, string TransSequence, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  815. {
  816. try
  817. {
  818. string sql = @"DECLARE @Status VARCHAR(10)
  819. SELECT @Status=Status FROM ICSDeliveryNotice WHERE DNCode='{0}' AND DNType='2' AND WorkPoint='{1}'
  820. IF (@Status IS NULL)
  821. BEGIN
  822. RAISERROR('" + language.GetNameByCode("WMSAPIInfo085") + @"',16,1);
  823. RETURN
  824. END
  825. ELSE IF (@Status!='2')
  826. BEGIN
  827. RAISERROR('" + language.GetNameByCode("WMSAPIInfo086") + @"',16,1);
  828. RETURN
  829. END
  830. UPDATE a SET RCVQuantity=ISNULL(RCVQuantity,0)+'{2}'
  831. FROM ICSDeliveryNotice a
  832. WHERE a.DNCode='{0}' AND a.Sequence='{3}' AND a.WorkPoint='{1}' AND DNType='2'
  833. IF EXISTS(SELECT a.ID FROM ICSDeliveryNotice a
  834. WHERE a.DNCode='{0}' AND a.Sequence='{3}' and a.WorkPoint='{1}' AND a.Quantity<a.RCVQuantity AND DNType='2')
  835. BEGIN
  836. RAISERROR('" + language.GetNameByCode("WMSAPIInfo087") + @"',16,1);
  837. RETURN
  838. END";
  839. sql = string.Format(sql, TransCode, WorkPoint, Quantity, TransSequence);
  840. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  841. {
  842. throw new Exception(language.GetNameByCode("WMSAPIInfo088"));//"采购退货单更新失败!");
  843. }
  844. }
  845. catch (Exception)
  846. {
  847. throw;
  848. }
  849. }
  850. /// <summary>
  851. /// 采购退货(货柜)
  852. /// </summary>
  853. /// <param name="TransCode"></param>
  854. /// <param name="TransSequence"></param>
  855. /// <param name="Quantity"></param>
  856. /// <param name="WorkPoint"></param>
  857. /// <param name="cmd"></param>
  858. public static void PurchaseReceiveDoctNegativeHG(string TransCode, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  859. {
  860. try
  861. {
  862. string sql = @" IF EXISTS (SELECT ID FROM ICSDeliveryNotice WHERE RCVQuantity=Quantity AND DNCode='{0}' AND WorkPoint='{1}' )
  863. BEGIN
  864. RAISERROR('" + language.GetNameByCode("WMSAPIInfo471") + @"',16,1);
  865. RETURN
  866. END;
  867. UPDATE ICSDeliveryNotice SET RCVQuantity=Quantity
  868. WHERE DNCode='{0}' AND WorkPoint='{1}'";
  869. sql = string.Format(sql, TransCode, WorkPoint);
  870. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  871. {
  872. throw new Exception(language.GetNameByCode("WMSAPIInfo088"));//"采购退货单更新失败!");
  873. }
  874. }
  875. catch (Exception)
  876. {
  877. throw;
  878. }
  879. }
  880. /// <summary>
  881. /// 采购退货接口
  882. /// </summary>
  883. /// <param name="TransType"></param>
  884. /// <param name="Identification"></param>
  885. /// <param name="cmd"></param>
  886. public static void PurchaseReceiveDoctNegativeERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  887. {
  888. try
  889. {
  890. #region SAP(三层结构)
  891. string IsSuccess = "";
  892. string ErrorMessage = "";
  893. string sql = @" select A.DNCode,A.WorkPoint,SUM(B.Quantity) AS Quantity from ICSDeliveryNotice A
  894. LEFT JOIN ICSWareHouseLotInfoLog B ON B.TransCode=A.DNCode AND B.WorkPoint=A.WorkPoint
  895. where B.Identification='{0}' AND BusinessCode='3'
  896. GROUP BY A.DNCode,A.WorkPoint";
  897. sql = string.Format(sql, Identification);
  898. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  899. if (dt.Rows.Count > 1)
  900. {
  901. throw new Exception(language.GetNameByCode("WMSAPIInfo202"));//单次提交单据数量卡控(只允许一张单据)
  902. }
  903. for (int i = 0; i < dt.Rows.Count; i++)
  904. {
  905. string chksql = @"select SUM(Quantity) AS Quantity,SUM(RCVQuantity) AS RCVQuantity from ICSDeliveryNotice
  906. where DNCode='{0}' and WorkPoint='{1}'
  907. GROUP BY DNCode,WorkPoint";
  908. chksql = string.Format(chksql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  909. DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd);
  910. if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) == Convert.ToDecimal(chkdt.Rows[0]["RCVQuantity"]))
  911. {
  912. SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ();
  913. SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1();
  914. Info.NEWID = Identification;
  915. Info.DANJU = dt.Rows[i]["DNCode"].ToString();
  916. Info.STATE = "0";
  917. List<SAPCallBackDocVPN.ZWMS_PZ> ItemList = new List<SAPCallBackDocVPN.ZWMS_PZ>();
  918. List<SAPCallBackDocVPN.ZWEBS_GERNR> ItemLineList = new List<SAPCallBackDocVPN.ZWEBS_GERNR>();
  919. Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1];
  920. sql = @"select A.DNCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.RCVQuantity
  921. ,ISNULL(B.BatchCode,'') AS BatchCode from ICSDeliveryNotice A
  922. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
  923. WHERE DNCode='{0}' AND A.WorkPoint='{1}'";
  924. sql = string.Format(sql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  925. DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd);
  926. foreach (DataRow dr in Sapdt.Rows)
  927. {
  928. if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["RCVQuantity"].ToString()))
  929. {
  930. SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ();
  931. SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR();
  932. Item.DANJU = dr["DNCode"].ToString();
  933. Item.POSNR = dr["SAPSequence"].ToString();
  934. Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dt.Rows[0]["Quantity"].ToString()), 3);
  935. ItemList.Add(Item);
  936. if (dr["BatchCode"].ToString() != "")
  937. {
  938. ItemLine.DANJU = dr["DNCode"].ToString();
  939. ItemLine.POSNR = dr["SAPSequence"].ToString();
  940. ItemLine.MATNR = dr["InvCode"].ToString();
  941. ItemLine.GERNR = dr["BatchCode"].ToString();
  942. ItemLineList.Add(ItemLine);
  943. }
  944. }
  945. }
  946. if (ItemList.Count > 0)
  947. {
  948. Info.Z_ITEM = ItemList.ToArray();
  949. if (ItemLineList.Count > 0)
  950. {
  951. Info.Z_GERNR = ItemLineList.ToArray();
  952. }
  953. else
  954. {
  955. Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1];
  956. }
  957. SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse();
  958. result = Client.CallZWMS_SK_WS_PZ(Info);
  959. if (result.Z_NULL == "N")
  960. {
  961. foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG)
  962. {
  963. IsSuccess = "N";
  964. ErrorMessage += resultItem.L_MESSAGE + "/r/n";
  965. }
  966. }
  967. }
  968. }
  969. }
  970. if (IsSuccess == "N")
  971. {
  972. throw new Exception(ErrorMessage);
  973. }
  974. #endregion
  975. }
  976. catch (Exception)
  977. {
  978. throw;
  979. }
  980. }
  981. #endregion
  982. #region 开立红字入库
  983. /// <summary>
  984. /// 开立红字入库
  985. /// </summary>
  986. /// <param name="TransCode"></param>
  987. /// <param name="TransSequence"></param>
  988. /// <param name="Quantity"></param>
  989. /// <param name="WorkPoint"></param>
  990. /// <param name="cmd"></param>
  991. public static void PurchaseReceive(string TransCode, string TransSequence, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  992. {
  993. try
  994. {
  995. string sql = @"DECLARE @Status VARCHAR(10)
  996. SELECT @Status=a.Status FROM ICSPurchaseReceive a
  997. WHERE a.RCVCode='{0}' AND a.Sequence='{3}' AND a.WorkPoint='{1}' AND a.Type='2'
  998. IF (@Status IS NULL)
  999. BEGIN
  1000. RAISERROR('" + language.GetNameByCode("WMSAPIInfo089") + @"',16,1);
  1001. RETURN
  1002. END
  1003. ELSE IF (@Status!='1')
  1004. BEGIN
  1005. RAISERROR('" + language.GetNameByCode("WMSAPIInfo090") + @"',16,1);
  1006. RETURN
  1007. END
  1008. UPDATE a SET RCVQuantity=ISNULL(RCVQuantity,0)+'{2}'
  1009. FROM ICSPurchaseReceive a
  1010. WHERE a.RCVCode='{0}' AND a.Sequence='{3}' AND a.WorkPoint='{1}' AND a.Type='2'
  1011. IF EXISTS(SELECT a.ID FROM ICSPurchaseReceive a
  1012. WHERE a.RCVCode='{0}' AND a.Sequence='{3}' and a.WorkPoint='{1}' AND a.Type='2' AND a.Quantity<a.RCVQuantity)
  1013. BEGIN
  1014. RAISERROR('" + language.GetNameByCode("WMSAPIInfo091") + @"',16,1);
  1015. RETURN
  1016. END";
  1017. sql = string.Format(sql, TransCode, WorkPoint, Quantity, TransSequence);
  1018. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1019. {
  1020. throw new Exception(language.GetNameByCode("WMSAPIInfo092"));//"红字入库单更新失败!");
  1021. }
  1022. }
  1023. catch (Exception)
  1024. {
  1025. throw;
  1026. }
  1027. }
  1028. /// <summary>
  1029. /// 开立红字入库接口
  1030. /// </summary>
  1031. /// <param name="TransType"></param>
  1032. /// <param name="Identification"></param>
  1033. /// <param name="cmd"></param>
  1034. public static void PurchaseReceiveERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  1035. {
  1036. try
  1037. {
  1038. #region ERP开立状态单据审核
  1039. string sql = @"IF EXISTS(SELECT b.ID FROM ICSWareHouseLotInfoLog a
  1040. INNER JOIN ICSPurchaseReceive b ON a.TransCode=b.RCVCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  1041. WHERE a.Identification='{0}' AND b.Quantity!=b.RCVQuantity)
  1042. BEGIN
  1043. RAISERROR('" + language.GetNameByCode("WMSAPIInfo093") + @"',16,1);
  1044. RETURN
  1045. END
  1046. SELECT b.RCVID AS ID,a.MUSER AS [User],SYSDATETIME() AS MTime,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,a.WorkPoint
  1047. FROM ICSWareHouseLotInfoLog a
  1048. INNER JOIN ICSPurchaseReceive b ON a.TransCode=b.RCVCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  1049. INNER JOIN ICSConfiguration con ON con.Code='Stock002' AND a.WorkPoint=con.WorkPoint
  1050. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock001' AND a.WorkPoint=conStock.WorkPoint
  1051. WHERE a.Identification='{0}' AND ERPUpload='0' AND a.BusinessCode = '4'
  1052. GROUP BY b.RCVID,a.MUSER,con.Enable,conStock.Enable,a.WorkPoint";
  1053. sql = string.Format(sql, Identification);
  1054. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  1055. string Inputstr = JsonConvert.SerializeObject(dt);
  1056. string resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.PurchaseReceiveDoctNegativeURL, Inputstr);
  1057. Result result = new Result();
  1058. result = JsonConvert.DeserializeObject<Result>(resultStr);
  1059. if (result.Success)
  1060. {
  1061. try
  1062. {
  1063. foreach (DataRow dr in dt.Rows)
  1064. {
  1065. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, dr["ID"].ToString(), Identification, "", "", "", "", "", cmd, language, BusinessCode);
  1066. }
  1067. }
  1068. catch (Exception ex)
  1069. {
  1070. log.Debug(ex.ToString());
  1071. log.Debug(resultStr);
  1072. }
  1073. }
  1074. else
  1075. {
  1076. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  1077. }
  1078. #endregion
  1079. }
  1080. catch (Exception)
  1081. {
  1082. throw;
  1083. }
  1084. }
  1085. #endregion
  1086. }
  1087. }