纽威

1148 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
2 years ago
2 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
2 years ago
10 months ago
10 months ago
2 years ago
10 months ago
3 years ago
3 years ago
3 years ago
10 months ago
10 months ago
3 years ago
10 months 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
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,string quantity)
  277. {
  278. try
  279. {
  280. decimal iquantity = Convert.ToDecimal(quantity);
  281. string sql = @" IF EXISTS (SELECT ID FROM ICSDeliveryNotice WHERE RCVQuantity=Quantity AND DNCode='{0}' AND Sequence='{1}' and WorkPoint='{2}' )
  282. BEGIN
  283. RAISERROR('" + language.GetNameByCode("WMSAPIInfo471") + @"',16,1);
  284. RETURN
  285. END;
  286. UPDATE ICSDeliveryNotice set RCVQuantity=RCVQuantity+{3}
  287. Where DNCode='{0}' AND Sequence='{1}' and WorkPoint='{2}'";
  288. sql = string.Format(sql, DocNO, TransLine, WorkPoint, iquantity);
  289. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  290. {
  291. throw new Exception(language.GetNameByCode("WMSAPIInfo079"));//"到货单更新失败!");
  292. }
  293. }
  294. catch (Exception)
  295. {
  296. throw;
  297. }
  298. }
  299. #region 审核的到货单
  300. /// <summary>
  301. /// 审核的到货单
  302. /// </summary>
  303. /// <param name="TransCode"></param>
  304. /// <param name="TransSequence"></param>
  305. /// <param name="Quantity"></param>
  306. /// <param name="WorkPoint"></param>
  307. /// <param name="cmd"></param>
  308. public static void DeliveryNoticeIn(string LotNo, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  309. {
  310. try
  311. {
  312. string sql = @"DECLARE @Status VARCHAR(10)
  313. SELECT @Status=c.Status FROM ICSInventoryLot a
  314. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  315. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  316. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.DNType='1'
  317. IF (@Status IS NULL)
  318. BEGIN
  319. RAISERROR('" + language.GetNameByCode("WMSAPIInfo081") + @"',16,1);
  320. RETURN
  321. END
  322. ELSE IF (@Status='3')
  323. BEGIN
  324. RAISERROR('" + language.GetNameByCode("WMSAPIInfo082") + @"',16,1);
  325. RETURN
  326. END
  327. UPDATE c SET RCVQuantity=ISNULL(RCVQuantity,0)+'{2}'
  328. FROM ICSInventoryLot a
  329. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  330. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  331. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.DNType='1'
  332. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  333. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  334. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  335. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.DNType='1' AND c.Quantity<c.RCVQuantity)
  336. BEGIN
  337. RAISERROR('" + language.GetNameByCode("WMSAPIInfo083") + @"',16,1);
  338. END";
  339. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  340. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  341. {
  342. throw new Exception(language.GetNameByCode("WMSAPIInfo079"));//"到货单更新失败!");
  343. }
  344. }
  345. catch (Exception)
  346. {
  347. throw;
  348. }
  349. }
  350. /// <summary>
  351. /// 审核的到货单接口(平库,传给SAP单据行总数)
  352. /// </summary>
  353. /// <param name="TransType"></param>
  354. /// <param name="Identification"></param>
  355. /// <param name="cmd"></param>
  356. public static void DeliveryNoticeInERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  357. {
  358. try
  359. {
  360. #region SAP(检验合格单为两层结构 一行对应一个序列号)
  361. string IsSuccess = "";
  362. string ErrorMessage = "";
  363. string sql = @" select A.DNCode,A.WorkPoint,SUM(B.Quantity) AS Quantity from ICSDeliveryNotice A
  364. LEFT JOIN ICSWareHouseLotInfoLog B ON B.TransCode=A.DNCode AND B.WorkPoint=A.WorkPoint
  365. where B.Identification='{0}' AND BusinessCode='2'
  366. GROUP BY A.DNCode,A.WorkPoint";
  367. sql = string.Format(sql, Identification);
  368. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  369. if (dt.Rows.Count > 1)
  370. {
  371. throw new Exception(language.GetNameByCode("WMSAPIInfo202"));//单次提交单据数量卡控(只允许一张单据)
  372. }
  373. for (int i = 0; i < dt.Rows.Count; i++)
  374. {
  375. string chksql = @"select SUM(Quantity) AS Quantity,SUM(RCVQuantity) AS RCVQuantity from ICSDeliveryNotice
  376. where DNCode='{0}' and WorkPoint='{1}'
  377. GROUP BY DNCode,WorkPoint";
  378. chksql = string.Format(chksql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  379. DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd);
  380. if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["RCVQuantity"]))
  381. {
  382. return;
  383. }
  384. sql = @"select A.DNCode,
  385. CASE WHEN SUM(Convert(decimal(18,6),A.SAPSequence)) IS NULL THEN SUM(A.RCVQuantity)
  386. ELSE SUM(Convert(decimal(18,6),A.SAPSequence)) END AS RCVQuantity,B.BatchCode,A.WHCode from ICSDeliveryNotice A
  387. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
  388. WHERE DNCode='{0}' AND A.WorkPoint='{1}'
  389. GROUP BY A.DNCode,B.BatchCode,A.WHCode";
  390. sql = string.Format(sql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  391. DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd);
  392. if (Sapdt.Rows.Count == 0)
  393. {
  394. throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo205"), dt.Rows[i]["DNCode"].ToString()));//单据查询失败
  395. }
  396. SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU Client = new SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU();
  397. SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU1 Info = new SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU1();
  398. Info.NEWID = Identification;
  399. Info.PRUEFLOS = Sapdt.Rows[0]["DNCode"].ToString();
  400. Info.L_LME = System.Decimal.Round(Convert.ToDecimal(Sapdt.Rows[0]["RCVQuantity"].ToString()), 3);
  401. Info.SERNP = Sapdt.Rows[0]["BatchCode"].ToString();
  402. Info.LGORT = Sapdt.Rows[0]["WHCode"].ToString(); ;//仓库
  403. Info.Z_GERNR = new SAPCallBackJYHGDVPN.ZWEBS_GERNR[0];
  404. SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKUResponse result = new SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKUResponse();
  405. result = Client.CallZWMS_SK_WS_RUKU(Info);
  406. if (result.Z_NULL == "N")
  407. {
  408. IsSuccess = "N";
  409. ErrorMessage += result.L_MESSAGE;
  410. }
  411. }
  412. if (IsSuccess == "N")
  413. {
  414. throw new Exception(ErrorMessage);
  415. }
  416. #endregion
  417. }
  418. catch (Exception)
  419. {
  420. throw;
  421. }
  422. }
  423. /// <summary>
  424. /// 审核的到货单接口(货柜,传给SAP本次入库数量)
  425. /// </summary>
  426. /// <param name="TransType"></param>
  427. /// <param name="Identification"></param>
  428. /// <param name="cmd"></param>
  429. public static void DeliveryNoticeInERPHG(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  430. {
  431. try
  432. {
  433. #region SAP(检验合格单为两层结构 一行对应一个序列号)
  434. string IsSuccess = "";
  435. string ErrorMessage = "";
  436. string sql = @" select A.DNCode,A.WorkPoint,SUM(B.Quantity) AS Quantity from ICSDeliveryNotice A
  437. LEFT JOIN ICSWareHouseLotInfoLog B ON B.TransCode=A.DNCode AND B.WorkPoint=A.WorkPoint
  438. where B.Identification='{0}' AND BusinessCode='2'
  439. GROUP BY A.DNCode,A.WorkPoint";
  440. sql = string.Format(sql, Identification);
  441. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  442. if (dt.Rows.Count > 1)
  443. {
  444. throw new Exception(language.GetNameByCode("WMSAPIInfo202"));//单次提交单据数量卡控(只允许一张单据)
  445. }
  446. for (int i = 0; i < dt.Rows.Count; i++)
  447. {
  448. string chksql = @"select SUM(Quantity) AS Quantity,SUM(RCVQuantity) AS RCVQuantity from ICSDeliveryNotice
  449. where DNCode='{0}' and WorkPoint='{1}'
  450. GROUP BY DNCode,WorkPoint";
  451. chksql = string.Format(chksql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  452. DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd);
  453. if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["RCVQuantity"]))
  454. {
  455. return;
  456. }
  457. sql = @"select A.DNCode,SUM(A.RCVQuantity) AS RCVQuantity,B.BatchCode,A.WHCode from ICSDeliveryNotice A
  458. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
  459. WHERE DNCode='{0}' AND A.WorkPoint='{1}'
  460. GROUP BY A.DNCode,B.BatchCode,A.WHCode";
  461. sql = string.Format(sql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  462. DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd);
  463. if (Sapdt.Rows.Count == 0)
  464. {
  465. throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo205"), dt.Rows[i]["DNCode"].ToString()));//单据查询失败
  466. }
  467. SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU Client = new SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU();
  468. SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU1 Info = new SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU1();
  469. Info.NEWID = Identification;
  470. Info.PRUEFLOS = Sapdt.Rows[0]["DNCode"].ToString();
  471. Info.L_LME = System.Decimal.Round(Convert.ToDecimal(dt.Rows[0]["Quantity"].ToString()), 3);
  472. Info.SERNP = Sapdt.Rows[0]["BatchCode"].ToString();
  473. Info.LGORT = Sapdt.Rows[0]["WHCode"].ToString(); ;//仓库
  474. Info.Z_GERNR = new SAPCallBackJYHGDVPN.ZWEBS_GERNR[0];
  475. SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKUResponse result = new SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKUResponse();
  476. result = Client.CallZWMS_SK_WS_RUKU(Info);
  477. if (result.Z_NULL == "N")
  478. {
  479. IsSuccess = "N";
  480. ErrorMessage += result.L_MESSAGE;
  481. }
  482. }
  483. if (IsSuccess == "N")
  484. {
  485. throw new Exception(ErrorMessage);
  486. }
  487. #endregion
  488. }
  489. catch (Exception)
  490. {
  491. throw;
  492. }
  493. }
  494. #endregion
  495. #region 叉车采购入库
  496. /// <summary>
  497. /// 叉车采购入库
  498. /// </summary>
  499. /// <param name="TransCode"></param>
  500. /// <param name="TransSequence"></param>
  501. /// <param name="Quantity"></param>
  502. /// <param name="WorkPoint"></param>
  503. /// <param name="cmd"></param>
  504. public static void DeliveryNoticeForkLift(string ContainerCode, SqlCommand cmd, Dictionary<string, string> language)
  505. {
  506. try
  507. {
  508. string lotsql = @" select A.LotNo,C.Quantity,B.WorkPoint from ICSContainerLot A
  509. LEFT JOIN ICSContainer B ON B.ID=A.ContainerID AND B.WorkPoint=A.WorkPoint
  510. LEFT JOIN ICSInventoryLot C ON C.LotNo=A.LotNo AND C.WorkPoint=A.WorkPoint
  511. where B.ContainerCode='{0}'";
  512. lotsql = string.Format(lotsql, ContainerCode);
  513. DataTable lotdt = DBHelper.SQlReturnData(lotsql, cmd);
  514. if (lotdt.Rows.Count == 0)
  515. {
  516. throw new Exception("托盘号不存在或者尚未绑定条码!");
  517. }
  518. foreach (DataRow dr in lotdt.Rows)
  519. {
  520. string sql = @" UPDATE c SET RCVQuantity=ISNULL(RCVQuantity,0)+'{2}'
  521. FROM ICSInventoryLot a
  522. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  523. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  524. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.DNType='1'
  525. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  526. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  527. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  528. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.DNType='1' AND c.Quantity<c.RCVQuantity)
  529. BEGIN
  530. RAISERROR('" + language.GetNameByCode("WMSAPIInfo083") + @"',16,1);
  531. END";
  532. sql = string.Format(sql, dr["LotNo"].ToString(), dr["WorkPoint"].ToString(), dr["Quantity"].ToString());
  533. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  534. {
  535. throw new Exception(language.GetNameByCode("WMSAPIInfo079"));//"到货单更新失败!");
  536. }
  537. }
  538. }
  539. catch (Exception)
  540. {
  541. throw;
  542. }
  543. }
  544. #endregion
  545. #region 采购拒收
  546. /// <summary>
  547. /// 采购拒收
  548. /// </summary>
  549. /// <param name="TransCode"></param>
  550. /// <param name="TransSequence"></param>
  551. /// <param name="Quantity"></param>
  552. /// <param name="WorkPoint"></param>
  553. /// <param name="cmd"></param>
  554. public static void PurchaseRejectDocIn(string LotNo, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  555. {
  556. try
  557. {
  558. string sql = @"DECLARE @Status VARCHAR(10)
  559. SELECT @Status=c.Status FROM ICSInventoryLot a
  560. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  561. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  562. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.DNType='3'
  563. IF (@Status IS NULL)
  564. BEGIN
  565. RAISERROR('" + language.GetNameByCode("WMSAPIInfo081") + @"',16,1);
  566. RETURN
  567. END
  568. ELSE IF (@Status='3')
  569. BEGIN
  570. RAISERROR('" + language.GetNameByCode("WMSAPIInfo082") + @"',16,1);
  571. RETURN
  572. END
  573. UPDATE c SET RCVQuantity=ISNULL(RCVQuantity,0)+'{2}'
  574. FROM ICSInventoryLot a
  575. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  576. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  577. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.DNType='3'
  578. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  579. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  580. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  581. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.DNType='3' AND c.Quantity<c.RCVQuantity)
  582. BEGIN
  583. RAISERROR('" + language.GetNameByCode("WMSAPIInfo083") + @"',16,1);
  584. END";
  585. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  586. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  587. {
  588. throw new Exception(language.GetNameByCode("WMSAPIInfo084"));//"拒收单更新失败!");
  589. }
  590. }
  591. catch (Exception)
  592. {
  593. throw;
  594. }
  595. }
  596. /// <summary>
  597. /// 采购拒收接口
  598. /// </summary>
  599. /// <param name="TransType"></param>
  600. /// <param name="Identification"></param>
  601. /// <param name="cmd"></param>
  602. public static void PurchaseRejectDocInNewERP(string DNCode, string JDNCode, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  603. {
  604. //try
  605. //{
  606. // #region ERP
  607. // 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,
  608. // 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
  609. // ,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,
  610. // 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
  611. // INTO #TempERP
  612. // FROM ICSWareHouseLotInfoLog a
  613. // INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  614. // INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  615. // INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  616. // INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  617. // LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  618. // INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  619. // INNER JOIN ICSDeliveryNotice d ON c.PODetailID=d.DNDetailID AND d.WorkPoint=c.WorkPoint
  620. // INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  621. // INNER JOIN ICSConfiguration conv ON con.Code='CompleteVerification' AND a.WorkPoint=conv.WorkPoint
  622. // WHERE a.Identification='{0}' AND ERPUpload='0'
  623. // 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
  624. // ,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, ''),
  625. // 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, '')
  626. // SELECT DISTINCT Costre,VenCode,WarehouseCode AS WHCode,DNCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,VerificationEnable,WorkPoint FROM #TempERP
  627. // SELECT Costre,Sequence,InvCode,Quantity,Amount,DNDetailID,Currency,UnitPrice,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10
  628. // FROM #TempERP
  629. // DROP TABLE #TempERP";
  630. // sql = string.Format(sql, Identification);
  631. // DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  632. // string Inputstr = DataToJsonHelper.DataSetToJson(ds, "Vouchs", "Costre");
  633. // string resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.CreatePuArrivalVouchURL, Inputstr);
  634. // Result result = new Result();
  635. // result = JsonConvert.DeserializeObject<Result>(resultStr);
  636. // if (result.Success)
  637. // {
  638. // try
  639. // {
  640. // JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  641. // foreach (var item in res)
  642. // {
  643. // JObject jo = (JObject)item;
  644. // JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  645. // foreach (var detail in resdetail)
  646. // {
  647. // JObject det = (JObject)detail;
  648. // ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["DNDetailID"].ToString(), Identification, jo["ID"].ToString(), det["DetailID"].ToString(), jo["RCVTCode"].ToString(), det["Sequence"].ToString(), cmd, language);
  649. // }
  650. // }
  651. // }
  652. // catch (Exception ex)
  653. // {
  654. // log.Debug(ex.ToString());
  655. // log.Debug(resultStr);
  656. // }
  657. // }
  658. // else
  659. // {
  660. // throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  661. // }
  662. // #endregion
  663. //}
  664. //catch (Exception)
  665. //{
  666. // throw;
  667. //}
  668. try
  669. {
  670. #region ERP
  671. string sql = @"SELECT a.VenCode+a.DepCode+a.DNCode+a.MUSER AS Costre,a.VenCode,a.DepCode,a.DNCode,a.MUSER,a.MTIME,
  672. a.Sequence,a.InvCode,Sum(x.Quantity) AS Quantity,a.Amount,ISNULL(a.UnitPrice,0) AS UnitPrice,a.Currency,a.DNDetailID
  673. ,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,
  674. 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
  675. INTO #TempERP
  676. FROM ICSDeliveryNotice a
  677. INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
  678. INNER JOIN ICSInventory invBat ON a.InvCode=invBat.InvCode AND a.WorkPoint=invBat.WorkPoint
  679. INNER JOIN ICSDeliveryNotice x ON a.DNDetailID=x.PODetailID AND a.WorkPoint=x.WorkPoint
  680. WHERE a.DNCode='{0}' AND a.WorkPoint='{1}'
  681. 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,
  682. a.WorkPoint,ISNULL(ext.ProjectCode, ''),ISNULL(invBat.BatchEnable, ''),ISNULL(ext.BatchCode, ''),ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  683. 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, '')
  684. SELECT DISTINCT Costre,WorkPoint,VenCode,DepCode,DNCode,MUSER AS [User],SYSDATETIME() AS MTime FROM #TempERP
  685. SELECT Costre,Sequence,InvCode,Quantity,Amount,UnitPrice,Currency,DNDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10
  686. FROM #TempERP
  687. DROP TABLE #TempERP";
  688. sql = string.Format(sql, DNCode, WorkPoint);
  689. DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  690. string Inputstr = DataToJsonHelper.DataSetToJson(ds, "Vouchs", "Costre");
  691. string resultStr = HTTPHelper.HttpPost("采购拒收", ERPUrl.CreatePuArrivalVouchURL, Inputstr);
  692. Result result = new Result();
  693. result = JsonConvert.DeserializeObject<Result>(resultStr);
  694. if (result.Success)
  695. {
  696. try
  697. {
  698. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  699. foreach (var item in res)
  700. {
  701. JObject jo = (JObject)item;
  702. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  703. foreach (var detail in resdetail)
  704. {
  705. JObject det = (JObject)detail;
  706. //ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["DNDetailID"].ToString(), Identification, jo["ID"].ToString(), det["DetailID"].ToString(), jo["RJTCode"].ToString(), det["Sequence"].ToString(), cmd, language);
  707. string ERPupdate = @"update ICSDeliveryNotice set DNCode='{0}',Sequence='{1}',DNID='{2}',DNDetailID='{3}'
  708. where PODetailID='{4}' AND DNType='3' AND DNCode='{5}' ";
  709. ERPupdate = string.Format(ERPupdate, jo["RJTCode"], det["Sequence"], jo["ID"], det["DetailID"], det["DNDetailID"], JDNCode);
  710. if (!DBHelper.ExecuteNonQuery(ERPupdate, cmd))
  711. {
  712. throw new Exception(language.GetNameByCode("WMSAPIInfo079"));//"到货单更新失败!");
  713. }
  714. }
  715. }
  716. }
  717. catch (Exception ex)
  718. {
  719. log.Debug(ex.ToString());
  720. log.Debug(resultStr);
  721. }
  722. }
  723. else
  724. {
  725. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  726. }
  727. #endregion
  728. }
  729. catch (Exception)
  730. {
  731. throw;
  732. }
  733. }
  734. /// <summary>
  735. /// 采购拒收接口
  736. /// </summary>
  737. /// <param name="TransType"></param>
  738. /// <param name="Identification"></param>
  739. /// <param name="cmd"></param>
  740. public static void PurchaseRejectDocInERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  741. {
  742. //try
  743. //{
  744. // #region ERP
  745. // 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,
  746. // 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
  747. // ,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,
  748. // 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
  749. // INTO #TempERP
  750. // FROM ICSWareHouseLotInfoLog a
  751. // INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  752. // INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  753. // INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  754. // INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  755. // LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  756. // INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  757. // INNER JOIN ICSDeliveryNotice d ON c.PODetailID=d.DNDetailID AND d.WorkPoint=c.WorkPoint
  758. // INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  759. // INNER JOIN ICSConfiguration conv ON con.Code='CompleteVerification' AND a.WorkPoint=conv.WorkPoint
  760. // WHERE a.Identification='{0}' AND ERPUpload='0'
  761. // 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
  762. // ,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, ''),
  763. // 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, '')
  764. // SELECT DISTINCT Costre,VenCode,WarehouseCode AS WHCode,DNCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,VerificationEnable,WorkPoint FROM #TempERP
  765. // SELECT Costre,Sequence,InvCode,Quantity,Amount,DNDetailID,Currency,UnitPrice,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10
  766. // FROM #TempERP
  767. // DROP TABLE #TempERP";
  768. // sql = string.Format(sql, Identification);
  769. // DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  770. // string Inputstr = DataToJsonHelper.DataSetToJson(ds, "Vouchs", "Costre");
  771. // string resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.CreatePuArrivalVouchURL, Inputstr);
  772. // Result result = new Result();
  773. // result = JsonConvert.DeserializeObject<Result>(resultStr);
  774. // if (result.Success)
  775. // {
  776. // try
  777. // {
  778. // JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  779. // foreach (var item in res)
  780. // {
  781. // JObject jo = (JObject)item;
  782. // JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  783. // foreach (var detail in resdetail)
  784. // {
  785. // JObject det = (JObject)detail;
  786. // ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["DNDetailID"].ToString(), Identification, jo["ID"].ToString(), det["DetailID"].ToString(), jo["RCVTCode"].ToString(), det["Sequence"].ToString(), cmd, language);
  787. // }
  788. // }
  789. // }
  790. // catch (Exception ex)
  791. // {
  792. // log.Debug(ex.ToString());
  793. // log.Debug(resultStr);
  794. // }
  795. // }
  796. // else
  797. // {
  798. // throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  799. // }
  800. // #endregion
  801. //}
  802. //catch (Exception)
  803. //{
  804. // throw;
  805. //}
  806. }
  807. #endregion
  808. #region 采购退货
  809. /// <summary>
  810. /// 采购退货
  811. /// </summary>
  812. /// <param name="TransCode"></param>
  813. /// <param name="TransSequence"></param>
  814. /// <param name="Quantity"></param>
  815. /// <param name="WorkPoint"></param>
  816. /// <param name="cmd"></param>
  817. public static void PurchaseReceiveDoctNegative(string TransCode, string TransSequence, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  818. {
  819. try
  820. {
  821. string sql = @"DECLARE @Status VARCHAR(10)
  822. SELECT @Status=Status FROM ICSDeliveryNotice WHERE DNCode='{0}' AND DNType='2' AND WorkPoint='{1}'
  823. IF (@Status IS NULL)
  824. BEGIN
  825. RAISERROR('" + language.GetNameByCode("WMSAPIInfo085") + @"',16,1);
  826. RETURN
  827. END
  828. ELSE IF (@Status!='2')
  829. BEGIN
  830. RAISERROR('" + language.GetNameByCode("WMSAPIInfo086") + @"',16,1);
  831. RETURN
  832. END
  833. UPDATE a SET RCVQuantity=ISNULL(RCVQuantity,0)+'{2}'
  834. FROM ICSDeliveryNotice a
  835. WHERE a.DNCode='{0}' AND a.Sequence='{3}' AND a.WorkPoint='{1}' AND DNType='2'
  836. IF EXISTS(SELECT a.ID FROM ICSDeliveryNotice a
  837. WHERE a.DNCode='{0}' AND a.Sequence='{3}' and a.WorkPoint='{1}' AND a.Quantity<a.RCVQuantity AND DNType='2')
  838. BEGIN
  839. RAISERROR('" + language.GetNameByCode("WMSAPIInfo087") + @"',16,1);
  840. RETURN
  841. END";
  842. sql = string.Format(sql, TransCode, WorkPoint, Quantity, TransSequence);
  843. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  844. {
  845. throw new Exception(language.GetNameByCode("WMSAPIInfo088"));//"采购退货单更新失败!");
  846. }
  847. }
  848. catch (Exception)
  849. {
  850. throw;
  851. }
  852. }
  853. /// <summary>
  854. /// 采购退货(货柜)
  855. /// </summary>
  856. /// <param name="TransCode"></param>
  857. /// <param name="TransSequence"></param>
  858. /// <param name="Quantity"></param>
  859. /// <param name="WorkPoint"></param>
  860. /// <param name="cmd"></param>
  861. public static void PurchaseReceiveDoctNegativeHG(string TransCode, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  862. {
  863. try
  864. {
  865. string sql = @" IF EXISTS (SELECT ID FROM ICSDeliveryNotice WHERE RCVQuantity=Quantity AND DNCode='{0}' AND WorkPoint='{1}' )
  866. BEGIN
  867. RAISERROR('" + language.GetNameByCode("WMSAPIInfo471") + @"',16,1);
  868. RETURN
  869. END;
  870. UPDATE ICSDeliveryNotice SET RCVQuantity=Quantity
  871. WHERE DNCode='{0}' AND WorkPoint='{1}'";
  872. sql = string.Format(sql, TransCode, WorkPoint);
  873. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  874. {
  875. throw new Exception(language.GetNameByCode("WMSAPIInfo088"));//"采购退货单更新失败!");
  876. }
  877. }
  878. catch (Exception)
  879. {
  880. throw;
  881. }
  882. }
  883. /// <summary>
  884. /// 采购退货接口
  885. /// </summary>
  886. /// <param name="TransType"></param>
  887. /// <param name="Identification"></param>
  888. /// <param name="cmd"></param>
  889. public static void PurchaseReceiveDoctNegativeERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  890. {
  891. try
  892. {
  893. #region SAP(三层结构)
  894. string IsSuccess = "";
  895. string ErrorMessage = "";
  896. string sql = @" select A.DNCode,A.WorkPoint,SUM(B.Quantity) AS Quantity from ICSDeliveryNotice A
  897. LEFT JOIN ICSWareHouseLotInfoLog B ON B.TransCode=A.DNCode AND B.WorkPoint=A.WorkPoint
  898. where B.Identification='{0}' AND BusinessCode='3'
  899. GROUP BY A.DNCode,A.WorkPoint";
  900. sql = string.Format(sql, Identification);
  901. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  902. if (dt.Rows.Count > 1)
  903. {
  904. throw new Exception(language.GetNameByCode("WMSAPIInfo202"));//单次提交单据数量卡控(只允许一张单据)
  905. }
  906. for (int i = 0; i < dt.Rows.Count; i++)
  907. {
  908. string chksql = @"select SUM(Quantity) AS Quantity,SUM(RCVQuantity) AS RCVQuantity from ICSDeliveryNotice
  909. where DNCode='{0}' and WorkPoint='{1}'
  910. GROUP BY DNCode,WorkPoint";
  911. chksql = string.Format(chksql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  912. DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd);
  913. if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) == Convert.ToDecimal(chkdt.Rows[0]["RCVQuantity"]))
  914. {
  915. SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ();
  916. SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1();
  917. Info.NEWID = Identification;
  918. Info.DANJU = dt.Rows[i]["DNCode"].ToString();
  919. Info.STATE = "0";
  920. List<SAPCallBackDocVPN.ZWMS_PZ> ItemList = new List<SAPCallBackDocVPN.ZWMS_PZ>();
  921. List<SAPCallBackDocVPN.ZWEBS_GERNR> ItemLineList = new List<SAPCallBackDocVPN.ZWEBS_GERNR>();
  922. Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1];
  923. sql = @"select A.DNCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.RCVQuantity
  924. ,ISNULL(B.BatchCode,'') AS BatchCode from ICSDeliveryNotice A
  925. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
  926. WHERE DNCode='{0}' AND A.WorkPoint='{1}'";
  927. sql = string.Format(sql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
  928. DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd);
  929. foreach (DataRow dr in Sapdt.Rows)
  930. {
  931. if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["RCVQuantity"].ToString()))
  932. {
  933. SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ();
  934. SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR();
  935. Item.DANJU = dr["DNCode"].ToString();
  936. Item.POSNR = dr["SAPSequence"].ToString();
  937. Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dt.Rows[0]["Quantity"].ToString()), 3);
  938. ItemList.Add(Item);
  939. if (dr["BatchCode"].ToString() != "")
  940. {
  941. ItemLine.DANJU = dr["DNCode"].ToString();
  942. ItemLine.POSNR = dr["SAPSequence"].ToString();
  943. ItemLine.MATNR = dr["InvCode"].ToString();
  944. ItemLine.GERNR = dr["BatchCode"].ToString();
  945. ItemLineList.Add(ItemLine);
  946. }
  947. }
  948. }
  949. if (ItemList.Count > 0)
  950. {
  951. Info.Z_ITEM = ItemList.ToArray();
  952. if (ItemLineList.Count > 0)
  953. {
  954. Info.Z_GERNR = ItemLineList.ToArray();
  955. }
  956. else
  957. {
  958. Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1];
  959. }
  960. SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse();
  961. result = Client.CallZWMS_SK_WS_PZ(Info);
  962. if (result.Z_NULL == "N")
  963. {
  964. foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG)
  965. {
  966. IsSuccess = "N";
  967. ErrorMessage += resultItem.L_MESSAGE + "/r/n";
  968. }
  969. }
  970. }
  971. }
  972. }
  973. if (IsSuccess == "N")
  974. {
  975. throw new Exception(ErrorMessage);
  976. }
  977. #endregion
  978. }
  979. catch (Exception)
  980. {
  981. throw;
  982. }
  983. }
  984. #endregion
  985. #region 开立红字入库
  986. /// <summary>
  987. /// 开立红字入库
  988. /// </summary>
  989. /// <param name="TransCode"></param>
  990. /// <param name="TransSequence"></param>
  991. /// <param name="Quantity"></param>
  992. /// <param name="WorkPoint"></param>
  993. /// <param name="cmd"></param>
  994. public static void PurchaseReceive(string TransCode, string TransSequence, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  995. {
  996. try
  997. {
  998. string sql = @"DECLARE @Status VARCHAR(10)
  999. SELECT @Status=a.Status FROM ICSPurchaseReceive a
  1000. WHERE a.RCVCode='{0}' AND a.Sequence='{3}' AND a.WorkPoint='{1}' AND a.Type='2'
  1001. IF (@Status IS NULL)
  1002. BEGIN
  1003. RAISERROR('" + language.GetNameByCode("WMSAPIInfo089") + @"',16,1);
  1004. RETURN
  1005. END
  1006. ELSE IF (@Status!='1')
  1007. BEGIN
  1008. RAISERROR('" + language.GetNameByCode("WMSAPIInfo090") + @"',16,1);
  1009. RETURN
  1010. END
  1011. UPDATE a SET RCVQuantity=ISNULL(RCVQuantity,0)+'{2}'
  1012. FROM ICSPurchaseReceive a
  1013. WHERE a.RCVCode='{0}' AND a.Sequence='{3}' AND a.WorkPoint='{1}' AND a.Type='2'
  1014. IF EXISTS(SELECT a.ID FROM ICSPurchaseReceive a
  1015. WHERE a.RCVCode='{0}' AND a.Sequence='{3}' and a.WorkPoint='{1}' AND a.Type='2' AND a.Quantity<a.RCVQuantity)
  1016. BEGIN
  1017. RAISERROR('" + language.GetNameByCode("WMSAPIInfo091") + @"',16,1);
  1018. RETURN
  1019. END";
  1020. sql = string.Format(sql, TransCode, WorkPoint, Quantity, TransSequence);
  1021. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1022. {
  1023. throw new Exception(language.GetNameByCode("WMSAPIInfo092"));//"红字入库单更新失败!");
  1024. }
  1025. }
  1026. catch (Exception)
  1027. {
  1028. throw;
  1029. }
  1030. }
  1031. /// <summary>
  1032. /// 开立红字入库接口
  1033. /// </summary>
  1034. /// <param name="TransType"></param>
  1035. /// <param name="Identification"></param>
  1036. /// <param name="cmd"></param>
  1037. public static void PurchaseReceiveERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  1038. {
  1039. try
  1040. {
  1041. #region ERP开立状态单据审核
  1042. string sql = @"IF EXISTS(SELECT b.ID FROM ICSWareHouseLotInfoLog a
  1043. INNER JOIN ICSPurchaseReceive b ON a.TransCode=b.RCVCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  1044. WHERE a.Identification='{0}' AND b.Quantity!=b.RCVQuantity)
  1045. BEGIN
  1046. RAISERROR('" + language.GetNameByCode("WMSAPIInfo093") + @"',16,1);
  1047. RETURN
  1048. END
  1049. SELECT b.RCVID AS ID,a.MUSER AS [User],SYSDATETIME() AS MTime,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,a.WorkPoint
  1050. FROM ICSWareHouseLotInfoLog a
  1051. INNER JOIN ICSPurchaseReceive b ON a.TransCode=b.RCVCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  1052. INNER JOIN ICSConfiguration con ON con.Code='Stock002' AND a.WorkPoint=con.WorkPoint
  1053. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock001' AND a.WorkPoint=conStock.WorkPoint
  1054. WHERE a.Identification='{0}' AND ERPUpload='0' AND a.BusinessCode = '4'
  1055. GROUP BY b.RCVID,a.MUSER,con.Enable,conStock.Enable,a.WorkPoint";
  1056. sql = string.Format(sql, Identification);
  1057. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  1058. string Inputstr = JsonConvert.SerializeObject(dt);
  1059. string resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.PurchaseReceiveDoctNegativeURL, Inputstr);
  1060. Result result = new Result();
  1061. result = JsonConvert.DeserializeObject<Result>(resultStr);
  1062. if (result.Success)
  1063. {
  1064. try
  1065. {
  1066. foreach (DataRow dr in dt.Rows)
  1067. {
  1068. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, dr["ID"].ToString(), Identification, "", "", "", "", "", cmd, language, BusinessCode);
  1069. }
  1070. }
  1071. catch (Exception ex)
  1072. {
  1073. log.Debug(ex.ToString());
  1074. log.Debug(resultStr);
  1075. }
  1076. }
  1077. else
  1078. {
  1079. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  1080. }
  1081. #endregion
  1082. }
  1083. catch (Exception)
  1084. {
  1085. throw;
  1086. }
  1087. }
  1088. #endregion
  1089. }
  1090. }