纽威
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1554 lines
96 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
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
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
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
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
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
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
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
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
  1. using ICSSoft.Common;
  2. using ICSSoft.Entity;
  3. using Newtonsoft.Json;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. using System.Data.SqlClient;
  8. using System.Linq;
  9. using System.Net.Http;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. namespace ICSSoft.DataProject
  13. {
  14. /// <summary>
  15. /// 使用中
  16. /// 更新库存表、日志表
  17. /// </summary>
  18. public class ICSWareHouseLotInfoService
  19. {
  20. private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
  21. /// <summary>
  22. /// 分批
  23. /// </summary>
  24. /// <param name="Identification"></param>
  25. /// <param name="TransCode"></param>
  26. /// <param name="TransSequence"></param>
  27. /// <param name="LotNo"></param>
  28. /// <param name="Quantity"></param>
  29. /// <param name="User"></param>
  30. /// <param name="WorkPoint"></param>
  31. /// <param name="TransType"></param>
  32. /// <param name="BusinessCode"></param>
  33. /// <param name="cmd"></param>
  34. public static void WareHouseLotInfoInBatches(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
  35. string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string MergeID = "")
  36. {
  37. }
  38. /// <summary>
  39. /// 添加库存
  40. /// </summary>
  41. /// <param name="LocationCode"></param>
  42. /// <param name="LotNo"></param>
  43. /// <param name="Quantity"></param>
  44. /// <param name="User"></param>
  45. /// <param name="WorkPoint"></param>
  46. /// <param name="TransType"></param>
  47. /// <param name="BusinessCode"></param>
  48. /// <param name="cmd"></param>
  49. public static void WareHouseLotInfoUp(string Identification, string LocationCode, string LotNo, string Quantity, string User,
  50. string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string LogID)
  51. {
  52. try
  53. {
  54. ///添加库存(原条码退回,更新库存;新条码直接入库)
  55. string sql = string.Empty;
  56. if (BusinessCode != TransTypeEnum.SalesReturnBack.GetDescription<DBValue>()
  57. && string.IsNullOrWhiteSpace(LogID))
  58. {
  59. sql = @"IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  60. BEGIN
  61. RAISERROR('" + language.GetNameByCode("WMSAPIInfo164") + @"',16,1);
  62. RETURN
  63. END ";
  64. }
  65. sql += @" IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  66. BEGIN
  67. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  68. RETURN
  69. END
  70. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  71. BEGIN
  72. UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{3}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  73. END
  74. ELSE
  75. BEGIN
  76. IF EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
  77. INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
  78. WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
  79. BEGIN
  80. IF NOT EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
  81. INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
  82. WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}' AND il.LocationCode='{4}')
  83. BEGIN
  84. RAISERROR('" + language.GetNameByCode("WMSAPIInfo180") + @"',16,1);
  85. RETURN
  86. END
  87. END
  88. INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  89. SELECT NEWID(),a.LotNo ,e.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
  90. FROM ICSInventoryLot a
  91. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  92. --INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  93. INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
  94. INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
  95. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  96. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  97. END";
  98. sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, LocationCode);
  99. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  100. {
  101. throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
  102. }
  103. ///添加日志
  104. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  105. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  106. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  107. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  108. MTIME,WorkPoint,EATTRIBUTE1,LogID)
  109. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  110. '','',c.WarehouseCode,c.LocationCode,'{6}',
  111. '','0','{4}','{5}','0','',
  112. '','','',f.F_Account ,f.F_RealName ,
  113. SYSDATETIME() ,a.WorkPoint ,'','{7}'
  114. FROM ICSInventoryLot a
  115. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  116. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  117. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  118. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  119. ";
  120. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, LogID);
  121. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  122. {
  123. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  124. }
  125. }
  126. catch (Exception)
  127. {
  128. throw;
  129. }
  130. }
  131. /// <summary>
  132. /// 减少库存
  133. /// </summary>
  134. /// <param name="Identification"></param>
  135. /// <param name="TransCode"></param>
  136. /// <param name="TransSequence"></param>
  137. /// <param name="LotNo"></param>
  138. /// <param name="Quantity"></param>
  139. /// <param name="User"></param>
  140. /// <param name="WorkPoint"></param>
  141. /// <param name="TransType"></param>
  142. /// <param name="BusinessCode"></param>
  143. /// <param name="cmd"></param>
  144. public static DataTable WareHouseLotInfoDown(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
  145. string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string MergeID = "")
  146. {
  147. String LotEnable = "";
  148. String PrintEnable = "";
  149. string lotstr = "";
  150. int result = 0;
  151. List<string> NewBarCodeList = new List<string>();
  152. DataTable dtLotno = new DataTable();
  153. DataTable lstDt = new DataTable();
  154. try
  155. {
  156. ///更新库存
  157. string sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  158. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
  159. BEGIN
  160. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  161. RETURN
  162. END";
  163. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  164. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  165. {
  166. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  167. }
  168. //检验是否分批
  169. sql = @"SELECT b.LotEnable,b.PrintEnable FROM ICSInventoryLot a
  170. LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  171. where a.LotNo='{0}' and a.WorkPoint='{1}'
  172. ";
  173. sql = string.Format(sql, LotNo, WorkPoint);
  174. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  175. if (dt.Rows.Count == 0)
  176. {
  177. throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
  178. }
  179. else
  180. {
  181. LotEnable = dt.Rows[0]["LotEnable"].ToString();
  182. PrintEnable = dt.Rows[0]["PrintEnable"].ToString();
  183. }
  184. if (LotEnable.Equals("True"))
  185. {
  186. ///分批前添加日志
  187. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  188. BEGIN
  189. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  190. RETURN
  191. END
  192. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  193. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  194. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  195. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  196. MTIME,WorkPoint,EATTRIBUTE1)
  197. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  198. '','',c.WarehouseCode,c.LocationCode,c.Quantity+{6},
  199. '','0','{4}','31','0','',
  200. '','','',f.F_Account ,f.F_RealName ,
  201. SYSDATETIME() ,a.WorkPoint ,''
  202. FROM ICSInventoryLot a
  203. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  204. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  205. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  206. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  207. ";
  208. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity);
  209. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  210. {
  211. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  212. }
  213. #region 获取分批后的条码(lotstr)
  214. sql = @"SELECT TOP 1 LotNO FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}' AND WorkPoint='{1}'
  215. ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
  216. sql = string.Format(sql, LotNo, WorkPoint);
  217. dt = DBHelper.SQlReturnData(sql, cmd);
  218. if (dt.Rows.Count == 0)
  219. {
  220. lotstr = LotNo + "-" + 1;
  221. }
  222. else
  223. {
  224. lotstr = LotNo + "-" + (Convert.ToInt32(dt.Rows[0]["LotNO"].ToString().Split('-')[dt.Rows[0]["LotNO"].ToString().Split('-').Length - 1]) + 1).ToString();
  225. }
  226. NewBarCodeList.Add(lotstr);//将分批后新条码添加到新集合
  227. #endregion
  228. #region 将分批后的条码记录插入条码表,库存表及日志表并将原条码库存数量清零
  229. sql = @"INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
  230. Quantity,Amount,ExtensionID,Type,PrintTimes,
  231. LastPrintUser,LastPrintTime,MUSER,MUSERName,MTIME,
  232. WorkPoint,EATTRIBUTE1)
  233. SELECT TOP 1 NEWID(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,
  234. '{2}',a.Amount,a.ExtensionID,a.Type,a.PrintTimes,
  235. a.LastPrintUser,a.LastPrintTime,a.MUSER ,a.MUSERName ,GETDATE(),
  236. a.WorkPoint ,'{1}'
  237. From ICSInventoryLot a
  238. where a.LotNo='{1}' and a.WorkPoint='{3}'";
  239. sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
  240. cmd.CommandText = sql;
  241. result = cmd.ExecuteNonQuery();
  242. if (result <= 0)
  243. {
  244. throw new Exception(language.GetNameByCode("WMSAPIInfo195"));//条码分批后条码表存入失败!
  245. }
  246. sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  247. select NEWID(),'{0}',WarehouseCode,LocationCode,InvCode,'{2}',InDate,LockQuantity
  248. ,MUSER,MUSERName,GETDATE(),'{3}',''
  249. from ICSWareHouseLotInfo
  250. where LotNO='{1}' AND WorkPoint='{3}'";
  251. sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
  252. cmd.CommandText = sql;
  253. result = cmd.ExecuteNonQuery();
  254. if (result <= 0)
  255. {
  256. throw new Exception(language.GetNameByCode("WMSAPIInfo196"));//条码分批后库存表存入失败!
  257. }
  258. //插入条码单据表
  259. sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  260. SELECT '{3}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
  261. FROM ICSInventoryLot a
  262. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  263. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  264. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  265. sql = string.Format(sql, LotNo, WorkPoint, User, lotstr);
  266. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  267. {
  268. throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
  269. }
  270. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  271. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  272. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  273. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  274. MTIME,WorkPoint,EATTRIBUTE1,LogID)
  275. SELECT NEWID(),'{3}','{4}','{5}','{10}' ,a.InvCode ,
  276. c.WarehouseCode,c.LocationCode,'','','{6}',
  277. '','0','{7}','105','0','',
  278. '','','',f.F_Account ,f.F_RealName ,
  279. SYSDATETIME() ,a.WorkPoint ,'','{9}'
  280. FROM ICSInventoryLot a
  281. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  282. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  283. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  284. ";
  285. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, lotstr);
  286. cmd.CommandText = sql;
  287. result = cmd.ExecuteNonQuery();
  288. if (result <= 0)
  289. {
  290. throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//条码分批后库存日志表存入失败!
  291. }
  292. if (PrintEnable.Equals("True"))
  293. {
  294. sql = @"select A.LotNO AS OLDLotNo , C.Quantity AS OLDLotQty, A.eattribute1 as LotNO, B.Quantity AS LotQty ,b.InvCode,d.INVSTD,d.INVNAME,b.MTIME,A.TransCode
  295. from ICSWareHouseLotInfolog A
  296. left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
  297. left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
  298. left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
  299. where a.BusinessCode ='105'
  300. and A.lotno like'{0}%' and a.workpoint='{1}'
  301. ";
  302. sql = string.Format(sql, LotNo, WorkPoint);
  303. dtLotno = DBHelper.SQlReturnData(sql, cmd);
  304. lstDt=dtLotno;
  305. }
  306. ///添加日志
  307. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  308. BEGIN
  309. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  310. RETURN
  311. END
  312. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  313. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  314. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  315. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  316. MTIME,WorkPoint,EATTRIBUTE1,MergeID)
  317. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  318. c.WarehouseCode,c.LocationCode,'','',c.Quantity,
  319. '','0','{7}','32','0','',
  320. '','','',f.F_Account ,f.F_RealName ,
  321. SYSDATETIME() ,a.WorkPoint ,'','{9}'
  322. FROM ICSInventoryLot a
  323. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  324. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  325. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  326. ";
  327. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID);
  328. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  329. {
  330. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  331. }
  332. #endregion
  333. }
  334. else
  335. {
  336. NewBarCodeList.Add(LotNo);
  337. ///添加日志
  338. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  339. BEGIN
  340. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  341. RETURN
  342. END
  343. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  344. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  345. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  346. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  347. MTIME,WorkPoint,EATTRIBUTE1,MergeID)
  348. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  349. c.WarehouseCode,c.LocationCode,'','','{6}',
  350. '','0','{7}','{8}','0','',
  351. '','','',f.F_Account ,f.F_RealName ,
  352. SYSDATETIME() ,a.WorkPoint ,'','{9}'
  353. FROM ICSInventoryLot a
  354. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  355. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  356. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  357. ";
  358. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID);
  359. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  360. {
  361. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  362. }
  363. }
  364. }
  365. catch (Exception)
  366. {
  367. throw;
  368. }
  369. return lstDt;
  370. }
  371. /// <summary>
  372. /// 修改库存
  373. /// </summary>
  374. /// <param name="Identification"></param>
  375. /// <param name="TransCode"></param>
  376. /// <param name="TransSequence"></param>
  377. /// <param name="LotNo"></param>
  378. /// <param name="Quantity"></param>
  379. /// <param name="User"></param>
  380. /// <param name="WorkPoint"></param>
  381. /// <param name="TransType"></param>
  382. /// <param name="cmd"></param>
  383. public static void WareHouseLotInfoUpdate(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
  384. string WorkPoint, string TransType, SqlCommand cmd, Dictionary<string, string> language)
  385. {
  386. try
  387. {
  388. ///添加日志
  389. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  390. BEGIN
  391. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  392. RETURN
  393. END
  394. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  395. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  396. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  397. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  398. MTIME,WorkPoint,EATTRIBUTE1)
  399. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  400. a.WarehouseCode,a.LocationCode,'','',a.Quantity,
  401. '','0','{6}','{7}','0','',
  402. '','','',f.F_Account ,f.F_RealName ,
  403. SYSDATETIME() ,a.WorkPoint ,''
  404. FROM ICSWareHouseLotInfo a
  405. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  406. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  407. ";
  408. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, TransTypeEnum.LOTCheckBefore.GetDescription<DBValue>());
  409. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  410. {
  411. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  412. }
  413. ///更新库存
  414. sql = @"UPDATE ICSWareHouseLotInfo SET Quantity='{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'";
  415. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  416. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  417. {
  418. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  419. }
  420. ///添加日志
  421. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  422. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  423. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  424. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  425. MTIME,WorkPoint,EATTRIBUTE1)
  426. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  427. a.WarehouseCode,a.LocationCode,'','',a.Quantity,
  428. '','0','{6}','{7}','0','',
  429. '','','',f.F_Account ,f.F_RealName ,
  430. SYSDATETIME() ,a.WorkPoint ,''
  431. FROM ICSWareHouseLotInfo a
  432. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  433. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  434. ";
  435. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, TransTypeEnum.LOTCheckAfter.GetDescription<DBValue>());
  436. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  437. {
  438. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  439. }
  440. }
  441. catch (Exception)
  442. {
  443. throw;
  444. }
  445. }
  446. /// <summary>
  447. /// 调拨
  448. /// </summary>
  449. /// <param name="LocationCode"></param>
  450. /// <param name="LotNo"></param>
  451. /// <param name="Quantity"></param>
  452. /// <param name="User"></param>
  453. /// <param name="WorkPoint"></param>
  454. /// <param name="TransType"></param>
  455. /// <param name="BusinessCode"></param>
  456. /// <param name="cmd"></param>
  457. public static DataTable WareHouseLotInfoTransfer(string Identification, string TransCode, string TransSequence, string WarehouseCode, string LocationCode,
  458. string LotNo, string Quantity, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string MergeID)
  459. {
  460. String LotEnable = "";
  461. String PrintEnable = "";
  462. string lotstr = "";
  463. int result = 0;
  464. DataTable dtLotno = new DataTable();
  465. DataTable lstDt = new DataTable();
  466. List<string> NewBarCodeList = new List<string>();
  467. try
  468. {
  469. ///分批前添加日志
  470. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  471. BEGIN
  472. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  473. RETURN
  474. END
  475. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  476. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  477. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  478. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  479. MTIME,WorkPoint,EATTRIBUTE1)
  480. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  481. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  482. '','0','{4}','31','0','',
  483. '','','',f.F_Account ,f.F_RealName ,
  484. SYSDATETIME() ,a.WorkPoint ,''
  485. FROM ICSInventoryLot a
  486. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  487. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  488. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  489. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  490. ";
  491. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode);
  492. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  493. {
  494. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  495. }
  496. //检验是否分批
  497. sql = @"SELECT b.LotEnable,b.PrintEnable FROM ICSInventoryLot a
  498. LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  499. where a.LotNo='{0}' and a.WorkPoint='{1}'
  500. ";
  501. sql = string.Format(sql, LotNo, WorkPoint);
  502. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  503. if (dt.Rows.Count == 0)
  504. {
  505. throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
  506. }
  507. else
  508. {
  509. LotEnable = dt.Rows[0]["LotEnable"].ToString();
  510. PrintEnable = dt.Rows[0]["PrintEnable"].ToString();
  511. }
  512. if (!LotEnable.Equals("False"))
  513. {
  514. #region 获取分批后的条码(lotstr)
  515. sql = @"SELECT TOP 1 LotNO FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}' AND WorkPoint='{1}'
  516. ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
  517. sql = string.Format(sql, LotNo, WorkPoint);
  518. dt = DBHelper.SQlReturnData(sql, cmd);
  519. if (dt.Rows.Count == 0)
  520. {
  521. lotstr = LotNo + "-" + 1;
  522. }
  523. else
  524. {
  525. lotstr = LotNo + "-" + (Convert.ToInt32(dt.Rows[0]["LotNO"].ToString().Split('-')[dt.Rows[0]["LotNO"].ToString().Split('-').Length - 1]) + 1).ToString();
  526. }
  527. NewBarCodeList.Add(lotstr);//将分批后新条码添加到新集合
  528. #endregion
  529. #region 将分批后的条码记录插入条码表,库存表及日志表并将原条码库存数量清零
  530. sql = @"INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
  531. Quantity,Amount,ExtensionID,Type,PrintTimes,
  532. LastPrintUser,LastPrintTime,MUSER,MUSERName,MTIME,
  533. WorkPoint,EATTRIBUTE1)
  534. SELECT TOP 1 NEWID(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,
  535. '{2}',a.Amount,a.ExtensionID,a.Type,a.PrintTimes,
  536. a.LastPrintUser,a.LastPrintTime,a.MUSER ,a.MUSERName ,GETDATE(),
  537. a.WorkPoint ,'{1}'
  538. From ICSInventoryLot a
  539. where a.LotNo='{1}' and a.WorkPoint='{3}'";
  540. sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
  541. cmd.CommandText = sql;
  542. result = cmd.ExecuteNonQuery();
  543. if (result <= 0)
  544. {
  545. throw new Exception(language.GetNameByCode("WMSAPIInfo195"));//条码分批后条码表存入失败!
  546. }
  547. #endregion
  548. sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  549. select NEWID(),'{0}',WarehouseCode,LocationCode,InvCode,'{2}',InDate,LockQuantity
  550. ,MUSER,MUSERName,GETDATE(),'{3}',''
  551. from ICSWareHouseLotInfo
  552. where LotNO='{1}' AND WorkPoint='{3}'";
  553. sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
  554. cmd.CommandText = sql;
  555. result = cmd.ExecuteNonQuery();
  556. if (result <= 0)
  557. {
  558. throw new Exception(language.GetNameByCode("WMSAPIInfo196"));//条码分批后库存表存入失败!
  559. }
  560. //插入条码单据表
  561. sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  562. SELECT '{3}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
  563. FROM ICSInventoryLot a
  564. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  565. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  566. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  567. sql = string.Format(sql, LotNo, WorkPoint, User, lotstr);
  568. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  569. {
  570. throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
  571. }
  572. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  573. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  574. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  575. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  576. MTIME,WorkPoint,EATTRIBUTE1,LogID)
  577. SELECT NEWID(),'{3}','{4}','{5}','{10}' ,a.InvCode ,
  578. c.WarehouseCode,c.LocationCode,'','','{6}',
  579. '','0','{7}','105','0','',
  580. '','','',f.F_Account ,f.F_RealName ,
  581. SYSDATETIME() ,a.WorkPoint ,'','{9}'
  582. FROM ICSInventoryLot a
  583. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  584. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  585. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  586. ";
  587. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, lotstr);
  588. cmd.CommandText = sql;
  589. result = cmd.ExecuteNonQuery();
  590. if (result <= 0)
  591. {
  592. throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//条码分批后库存日志表存入失败!
  593. }
  594. ///添加日志
  595. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  596. BEGIN
  597. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  598. RETURN
  599. END
  600. IF EXISTS(SELECT id FROM ICSWareHouseLotInfo WHERE WarehouseCode='{9}' AND LocationCode='{10}' AND WorkPoint='{1}' AND LotNo = '{0}')
  601. BEGIN
  602. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo355")) + @"',16,1);
  603. RETURN
  604. END
  605. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  606. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  607. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  608. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  609. MTIME,WorkPoint,EATTRIBUTE1,MergeID)
  610. SELECT NEWID(),'{3}','','',a.LotNo ,a.InvCode ,
  611. c.WarehouseCode,c.LocationCode,'{9}','{10}',{6},
  612. '','0','{7}','32','0','',
  613. '','','',f.F_Account ,f.F_RealName ,
  614. SYSDATETIME() ,a.WorkPoint ,'','{11}'
  615. FROM ICSInventoryLot a
  616. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  617. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  618. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  619. ";
  620. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, WarehouseCode, LocationCode, MergeID);
  621. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  622. {
  623. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  624. }
  625. if (PrintEnable.Equals("True"))
  626. {
  627. sql = @"select A.LotNO AS OLDLotNo , C.Quantity AS OLDLotQty, A.eattribute1 as LotNO, B.Quantity AS LotQty ,b.InvCode,d.INVSTD,d.INVNAME,b.MTIME,A.TransCode
  628. from ICSWareHouseLotInfolog A
  629. left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
  630. left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
  631. left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
  632. where a.BusinessCode ='105'
  633. and A.lotno like'{0}%' and a.workpoint='{1}'
  634. ";
  635. sql = string.Format(sql, LotNo, WorkPoint);
  636. dtLotno = DBHelper.SQlReturnData(sql, cmd);
  637. lstDt = dtLotno;
  638. }
  639. }
  640. else
  641. {
  642. ///添加日志
  643. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  644. BEGIN
  645. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  646. RETURN
  647. END
  648. IF EXISTS(SELECT id FROM ICSWareHouseLotInfo WHERE WarehouseCode='{9}' AND LocationCode='{10}' AND WorkPoint='{1}' AND LotNo = '{0}')
  649. BEGIN
  650. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo355")) + @"',16,1);
  651. RETURN
  652. END
  653. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  654. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  655. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  656. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  657. MTIME,WorkPoint,EATTRIBUTE1,MergeID)
  658. SELECT NEWID(),'{3}','','',a.LotNo ,a.InvCode ,
  659. c.WarehouseCode,c.LocationCode,'{9}','{10}',{6},
  660. '','0','{7}','{8}','0','',
  661. '','','',f.F_Account ,f.F_RealName ,
  662. SYSDATETIME() ,a.WorkPoint ,'','{11}'
  663. FROM ICSInventoryLot a
  664. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  665. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  666. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  667. ";
  668. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, WarehouseCode, LocationCode, MergeID);
  669. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  670. {
  671. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  672. }
  673. }
  674. ///添加库存
  675. sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity>0)
  676. BEGIN
  677. RAISERROR('" + language.GetNameByCode("WMSAPIInfo038") + @"',16,1);
  678. RETURN
  679. END
  680. IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE LotNo='{0}' AND WorkPoint='{1}' AND a.Quantity<{4})
  681. BEGIN
  682. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  683. RETURN
  684. END
  685. UPDATE ICSWareHouseLotInfo SET WarehouseCode='{2}',LocationCode='{3}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  686. ";
  687. sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode, Quantity);
  688. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  689. {
  690. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存表更新失败!");
  691. }
  692. }
  693. catch (Exception)
  694. {
  695. throw;
  696. }
  697. return lstDt;
  698. }
  699. /// <summary>
  700. /// 移库
  701. /// </summary>
  702. /// <param name="LocationCode"></param>
  703. /// <param name="LotNo"></param>
  704. /// <param name="Quantity"></param>
  705. /// <param name="User"></param>
  706. /// <param name="WorkPoint"></param>
  707. /// <param name="TransType"></param>
  708. /// <param name="BusinessCode"></param>
  709. /// <param name="cmd"></param>
  710. public static void WareHouseLotInfoLibrary(string Identification, string TransCode, string TransSequence, string WarehouseCode, string LocationCode,
  711. string LotNo, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  712. {
  713. try
  714. {
  715. ///添加日志
  716. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  717. BEGIN
  718. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  719. RETURN
  720. END
  721. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  722. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  723. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  724. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  725. MTIME,WorkPoint,EATTRIBUTE1)
  726. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  727. c.WarehouseCode,c.LocationCode,'{8}','{9}',c.Quantity,
  728. '','0','{6}','{7}','0','',
  729. '','','',f.F_Account ,f.F_RealName ,
  730. SYSDATETIME() ,a.WorkPoint ,''
  731. FROM ICSInventoryLot a
  732. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  733. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  734. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  735. ";
  736. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, BusinessCode, WarehouseCode, LocationCode);
  737. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  738. {
  739. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  740. }
  741. ///添加库存
  742. sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity>0)
  743. BEGIN
  744. RAISERROR('" + language.GetNameByCode("WMSAPIInfo038") + @"',16,1);
  745. RETURN
  746. END
  747. UPDATE ICSWareHouseLotInfo SET WarehouseCode='{2}',LocationCode='{3}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  748. ";
  749. sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode);
  750. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  751. {
  752. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存表更新失败!");
  753. }
  754. }
  755. catch (Exception)
  756. {
  757. throw;
  758. }
  759. }
  760. /// <summary>
  761. /// 两步调入
  762. /// </summary>
  763. /// <param name="LocationCode"></param>
  764. /// <param name="LotNo"></param>
  765. /// <param name="Quantity"></param>
  766. /// <param name="User"></param>
  767. /// <param name="WorkPoint"></param>
  768. /// <param name="TransType"></param>
  769. /// <param name="BusinessCode"></param>
  770. /// <param name="cmd"></param>
  771. public static void WareHouseLotInfoTwoStepTransferDocIn(string Identification, string TransCode, string TransSequence, string WarehouseCode,
  772. string LocationCode, string LotNo, string Quantity, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  773. {
  774. try
  775. {
  776. ///添加日志
  777. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  778. BEGIN
  779. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  780. RETURN
  781. END
  782. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  783. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  784. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  785. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  786. MTIME,WorkPoint,EATTRIBUTE1)
  787. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  788. c.WarehouseCode,c.LocationCode,'{9}','{10}','{6}',
  789. '','0','{7}','{8}','0','',
  790. '','','',f.F_Account ,f.F_RealName ,
  791. SYSDATETIME() ,a.WorkPoint ,''
  792. FROM ICSInventoryLot a
  793. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  794. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  795. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  796. ";
  797. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, WarehouseCode, LocationCode);
  798. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  799. {
  800. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  801. }
  802. ///添加库存
  803. sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  804. BEGIN
  805. RAISERROR('" + language.GetNameByCode("WMSAPIInfo171") + @"',16,1);
  806. RETURN
  807. END
  808. UPDATE ICSWareHouseLotInfo SET WarehouseCode='{2}',LocationCode='{3}',Quantity='{4}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  809. ";
  810. sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode, Quantity);
  811. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  812. {
  813. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存表更新失败!");
  814. }
  815. }
  816. catch (Exception)
  817. {
  818. throw;
  819. }
  820. }
  821. /// <summary>
  822. /// 拆分、合并日志
  823. /// </summary>
  824. /// <param name="Identification"></param>
  825. /// <param name="LotNo"></param>
  826. /// <param name="User"></param>
  827. /// <param name="WorkPoint"></param>
  828. /// <param name="TransType"></param>
  829. /// <param name="BusinessCode"></param>
  830. /// <param name="cmd"></param>
  831. public static void WareHouseLotInfoLog(string Identification, string LotNo, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  832. {
  833. try
  834. {
  835. ///添加日志
  836. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  837. BEGIN
  838. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  839. RETURN
  840. END
  841. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  842. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  843. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  844. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  845. MTIME,WorkPoint,EATTRIBUTE1)
  846. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  847. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  848. '','0','{4}','{5}','0','',
  849. '','','',f.F_Account ,f.F_RealName ,
  850. SYSDATETIME() ,a.WorkPoint ,''
  851. FROM ICSInventoryLot a
  852. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  853. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  854. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  855. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  856. ";
  857. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode);
  858. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  859. {
  860. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  861. }
  862. }
  863. catch (Exception)
  864. {
  865. throw;
  866. }
  867. }
  868. /// <summary>
  869. /// 合并
  870. /// </summary>
  871. /// <param name="Identification"></param>
  872. /// <param name="LotNo"></param>
  873. /// <param name="User"></param>
  874. /// <param name="WorkPoint"></param>
  875. /// <param name="TransType"></param>
  876. /// <param name="BusinessCode"></param>
  877. /// <param name="cmd"></param>
  878. public static void WareHouseLotInfoMerge(string Identification, string LotNo, string CurrentLotNo, string Quantity, string User, string WorkPoint, string TransType,
  879. string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  880. {
  881. try
  882. {
  883. ///更新目标条码库存
  884. string sql = @"IF NOT EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  885. INNER JOIN ICSInventoryLot b ON b.LotNo='{3}' AND a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  886. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  887. BEGIN
  888. RAISERROR('" + language.GetNameByCode("WMSAPIInfo170") + @"',16,1);
  889. RETURN
  890. END
  891. IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  892. BEGIN
  893. RAISERROR('" + language.GetNameByCode("WMSAPIInfo171") + @"',16,1);
  894. RETURN
  895. END
  896. UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  897. ";
  898. sql = string.Format(sql, LotNo, WorkPoint, Quantity, CurrentLotNo);
  899. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  900. {
  901. throw new Exception(language.GetNameByCode("WMSAPIInfo169"));//"目标条码库存更新失败!");
  902. }
  903. ///更新原条码库存
  904. sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  905. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
  906. BEGIN
  907. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  908. RETURN
  909. END";
  910. sql = string.Format(sql, CurrentLotNo, WorkPoint, Quantity);
  911. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  912. {
  913. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  914. }
  915. ///添加日志
  916. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  917. BEGIN
  918. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  919. RETURN
  920. END
  921. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  922. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  923. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  924. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  925. MTIME,WorkPoint,EATTRIBUTE1)
  926. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  927. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  928. '','0','{4}','{5}','0','',
  929. '','','',f.F_Account ,f.F_RealName ,
  930. SYSDATETIME() ,a.WorkPoint ,''
  931. FROM ICSInventoryLot a
  932. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  933. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  934. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  935. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  936. ";
  937. sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Identification, TransType, BusinessCode);
  938. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  939. {
  940. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  941. }
  942. }
  943. catch (Exception)
  944. {
  945. throw;
  946. }
  947. }
  948. /// <summary>
  949. /// 拆分
  950. /// </summary>
  951. /// <param name="Identification"></param>
  952. /// <param name="LotNo"></param>
  953. /// <param name="User"></param>
  954. /// <param name="WorkPoint"></param>
  955. /// <param name="TransType"></param>
  956. /// <param name="BusinessCode"></param>
  957. /// <param name="cmd"></param>
  958. public static void WareHouseLotInfoSplit(string Identification, string LotNo, string CurrentLotNo, string Quantity, string User, string WorkPoint, string TransType,
  959. string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  960. {
  961. try
  962. {
  963. ///更新库存
  964. string sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  965. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
  966. BEGIN
  967. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  968. RETURN
  969. END";
  970. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  971. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  972. {
  973. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  974. }
  975. #region 添加库存
  976. //插入条码表
  977. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  978. BEGIN
  979. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  980. RETURN
  981. END
  982. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a WHERE a.LotNo='{4}' AND a.WorkPoint='{1}')
  983. BEGIN
  984. RAISERROR('" + language.GetNameByCode("WMSAPIInfo172") + @"',16,1);
  985. RETURN
  986. END
  987. INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  988. SELECT NEWID(),'{4}' ,a.InvCode,a.ProductDate,a.ExpirationDate ,'{3}',a.ExtensionID,'101',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,a.LotNo
  989. FROM ICSInventoryLot a
  990. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  991. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  992. sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, CurrentLotNo);
  993. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  994. {
  995. throw new Exception(language.GetNameByCode("WMSAPIInfo173"));//"条码表写入失败!");
  996. }
  997. //插入条码单据表
  998. sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  999. SELECT '{3}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
  1000. FROM ICSInventoryLot a
  1001. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1002. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1003. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  1004. sql = string.Format(sql, LotNo, WorkPoint, User, CurrentLotNo);
  1005. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1006. {
  1007. throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
  1008. }
  1009. ///添加库存
  1010. sql = @"IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  1011. BEGIN
  1012. RAISERROR('" + language.GetNameByCode("WMSAPIInfo164") + @"',16,1);
  1013. RETURN
  1014. END
  1015. IF EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
  1016. INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
  1017. INNER JOIN ICSWareHouseLotInfo d ON a.EATTRIBUTE1=d.LotNo AND a.WorkPoint=d.WorkPoint
  1018. WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
  1019. BEGIN
  1020. IF NOT EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
  1021. INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
  1022. INNER JOIN ICSWareHouseLotInfo d ON a.EATTRIBUTE1=d.LotNo AND a.WorkPoint=d.WorkPoint AND il.LocationCode=d.LocationCode
  1023. WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
  1024. BEGIN
  1025. RAISERROR('" + language.GetNameByCode("WMSAPIInfo180") + @"',16,1);
  1026. RETURN
  1027. END
  1028. END
  1029. INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  1030. SELECT NEWID(),a.LotNo ,d.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
  1031. FROM ICSInventoryLot a
  1032. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1033. INNER JOIN ICSWareHouseLotInfo d ON a.EATTRIBUTE1=d.LotNo AND a.WorkPoint=d.WorkPoint
  1034. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1035. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  1036. sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Quantity);
  1037. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1038. {
  1039. throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
  1040. }
  1041. ///添加日志
  1042. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1043. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1044. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1045. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1046. MTIME,WorkPoint,EATTRIBUTE1)
  1047. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  1048. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  1049. '','0','{4}','{5}','0','',
  1050. '','','',f.F_Account ,f.F_RealName ,
  1051. SYSDATETIME() ,a.WorkPoint ,''
  1052. FROM ICSInventoryLot a
  1053. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1054. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1055. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1056. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  1057. ";
  1058. sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Identification, TransType, BusinessCode);
  1059. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1060. {
  1061. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1062. }
  1063. #endregion
  1064. }
  1065. catch (Exception)
  1066. {
  1067. throw;
  1068. }
  1069. }
  1070. /// <summary>
  1071. /// 回写ERP ID
  1072. /// </summary>
  1073. /// <param name="TransType"></param>
  1074. /// <param name="SourceDetailID"></param>
  1075. /// <param name="Identification"></param>
  1076. /// <param name="ID"></param>
  1077. /// <param name="DetailID"></param>
  1078. /// <param name="Code"></param>
  1079. /// <param name="Sequence"></param>
  1080. /// <param name="cmd"></param>
  1081. public static void WareHouseLotInfoLogUpdate(string TransType, string SourceDetailID, string Identification, string ID, string DetailID, string Code, string Sequence, SqlCommand cmd, Dictionary<string, string> language)
  1082. {
  1083. string ERPupdate = string.Empty;
  1084. try
  1085. {
  1086. //采购入库
  1087. if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription())
  1088. {
  1089. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1090. FROM ICSWareHouseLotInfoLog a
  1091. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1092. INNER JOIN ICSPurchaseOrder c ON b.TransCode=c.POCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1093. WHERE c.PODetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1094. ";
  1095. }
  1096. //审核的到货单
  1097. else if (TransType == TransTypeEnum.DeliveryNotice.GetDescription())
  1098. {
  1099. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1100. FROM ICSWareHouseLotInfoLog a
  1101. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1102. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1103. WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1104. ";
  1105. }
  1106. //采购拒收
  1107. else if (TransType == TransTypeEnum.PurchaseRejectDoc.GetDescription())
  1108. {
  1109. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1110. FROM ICSWareHouseLotInfoLog a
  1111. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1112. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1113. WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1114. ";
  1115. }
  1116. //审核的委外到货单
  1117. else if (TransType == TransTypeEnum.ODeliveryNotice.GetDescription())
  1118. {
  1119. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1120. FROM ICSWareHouseLotInfoLog a
  1121. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1122. INNER JOIN ICSODeliveryNotice c ON b.TransCode=c.ODNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1123. WHERE c.ODNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1124. ";
  1125. }
  1126. //委外拒收
  1127. else if (TransType == TransTypeEnum.OutsourcingRejectDoc.GetDescription())
  1128. {
  1129. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1130. FROM ICSWareHouseLotInfoLog a
  1131. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1132. INNER JOIN ICSODeliveryNotice c ON b.TransCode=c.ODNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1133. WHERE c.ODNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1134. ";
  1135. }
  1136. //采购退货
  1137. else if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
  1138. {
  1139. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1140. FROM ICSWareHouseLotInfoLog a
  1141. INNER JOIN ICSDeliveryNotice c ON a.TransCode=c.DNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1142. WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.DNType='2' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1143. ";
  1144. }
  1145. //委外发料
  1146. else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
  1147. {
  1148. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1149. FROM ICSWareHouseLotInfoLog a
  1150. INNER JOIN ICSOutsourcingOrder y ON a.TransCode=y.OOCode AND a.WorkPoint=y.WorkPoint
  1151. INNER JOIN ICSOOPick x ON x.OODetailID=y.OODetailID AND a.TransSequence=y.Sequence+'~'+x.Sequence AND x.WorkPoint=y.WorkPoint
  1152. WHERE x.PickID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1153. ";
  1154. }
  1155. //委外退料
  1156. else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
  1157. || TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
  1158. || TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
  1159. {
  1160. ERPupdate = @"--根据退料单退料
  1161. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1162. FROM ICSWareHouseLotInfoLog a
  1163. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1164. INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1165. INNER JOIN ICSOApplyNeg d ON c.OApplyNegCode=d.OApplyNegCode AND c.WorkPoint=d.WorkPoint
  1166. Left JOIN ICSOIssue m ON (CASE WHEN d.Type='3' THEN c.SourceDetailID ELSE 0 END)=m.IssueDetailID AND c.WorkPoint=m.WorkPoint
  1167. WHERE ISNULL(m.ApplyDetailID,ISNULL(m.PickID, c.SourceDetailID))='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1168. --退-
  1169. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1170. FROM ICSWareHouseLotInfoLog a
  1171. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1172. INNER JOIN ICSOutsourcingOrder y ON b.TransCode=y.OOCode AND b.WorkPoint=y.WorkPoint
  1173. INNER JOIN ICSOOPick x ON x.OODetailID=y.OODetailID AND x.WorkPoint=y.WorkPoint AND b.TransSequence = y.Sequence + '~' + x.Sequence
  1174. WHERE x.PickID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1175. --退-
  1176. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1177. FROM ICSWareHouseLotInfoLog a
  1178. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1179. INNER JOIN ICSOApply z ON b.TransCode=z.ApplyCode AND b.TransSequence=z.Sequence AND b.WorkPoint=z.WorkPoint
  1180. WHERE z.ApplyDetailID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1181. --退-
  1182. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1183. FROM ICSWareHouseLotInfoLog a
  1184. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1185. INNER JOIN ICSOIssue m ON b.TransCode=m.IssueCode AND b.TransSequence=m.Sequence AND b.WorkPoint=m.WorkPoint
  1186. LEFT JOIN ICSOOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
  1187. LEFT JOIN ICSOutsourcingOrder y ON x.OODetailID=y.OODetailID AND x.WorkPoint=y.WorkPoint
  1188. LEFT JOIN ICSOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.WorkPoint
  1189. WHERE ISNULL(m.ApplyDetailID, m.PickID)='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1190. ";
  1191. }
  1192. //委外入库
  1193. else if (TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription())
  1194. {
  1195. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1196. FROM ICSWareHouseLotInfoLog a
  1197. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1198. INNER JOIN ICSOutsourcingOrder c ON b.TransCode=c.OOCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1199. WHERE c.OODetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1200. ";
  1201. }
  1202. //委外退货
  1203. else if (TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription())
  1204. {
  1205. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1206. FROM ICSWareHouseLotInfoLog a
  1207. INNER JOIN ICSODeliveryNotice c ON a.TransCode=c.ODNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1208. WHERE c.ODNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.ODNType='2' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1209. ";
  1210. }
  1211. //生产发料
  1212. else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
  1213. {
  1214. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1215. FROM ICSWareHouseLotInfoLog a
  1216. INNER JOIN ICSMO y ON a.TransCode=y.MOCode AND a.WorkPoint=y.WorkPoint
  1217. INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND a.TransSequence=y.Sequence+'~'+x.Sequence AND x.WorkPoint=y.WorkPoint
  1218. WHERE x.PickID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1219. ";
  1220. }
  1221. //生产退料
  1222. else if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
  1223. || TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
  1224. || TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
  1225. {
  1226. ERPupdate = @"--根据退料单退料
  1227. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1228. FROM ICSWareHouseLotInfoLog a
  1229. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1230. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1231. INNER JOIN ICSMOApplyNeg d ON c.ApplyNegCode=d.ApplyNegCode AND c.WorkPoint=d.WorkPoint
  1232. left JOIN ICSMOIssue m ON (CASE WHEN d.Type='3' THEN c.SourceDetailID ELSE 0 END)=m.IssueDetailID AND c.WorkPoint=m.WorkPoint
  1233. WHERE ISNULL(m.ApplyDetailID, ISNULL(m.PickID, c.SourceDetailID))='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1234. --退-
  1235. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1236. FROM ICSWareHouseLotInfoLog a
  1237. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1238. INNER JOIN ICSMO y ON b.TransCode=y.MOCode AND b.WorkPoint=y.WorkPoint
  1239. INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint AND b.TransSequence = y.Sequence + '~' + x.Sequence
  1240. WHERE x.PickID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1241. --退-
  1242. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1243. FROM ICSWareHouseLotInfoLog a
  1244. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1245. INNER JOIN ICSMOApply z ON b.TransCode=z.ApplyCode AND b.TransSequence=z.Sequence AND b.WorkPoint=z.WorkPoint
  1246. WHERE z.ApplyDetailID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1247. --退-
  1248. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1249. FROM ICSWareHouseLotInfoLog a
  1250. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1251. INNER JOIN ICSMOIssue m ON b.TransCode=m.IssueCode AND b.TransSequence=m.Sequence AND b.WorkPoint=m.WorkPoint
  1252. LEFT JOIN ICSMOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
  1253. LEFT JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
  1254. LEFT JOIN ICSMOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.WorkPoint
  1255. WHERE ISNULL(m.ApplyDetailID, m.PickID)='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1256. ";
  1257. }
  1258. //生产入库
  1259. else if (TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription())
  1260. {
  1261. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1262. FROM ICSWareHouseLotInfoLog a
  1263. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1264. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1265. WHERE c.MODetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1266. ";
  1267. }
  1268. //开立的生产入库单
  1269. else if (TransType == TransTypeEnum.ManufactureReceive.GetDescription())
  1270. {
  1271. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1272. FROM ICSWareHouseLotInfoLog a
  1273. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1274. INNER JOIN ICSManufactureReceive c ON b.TransCode=c.RCVCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1275. WHERE c.RCVID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1276. ";
  1277. }
  1278. //销售出库
  1279. else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
  1280. {
  1281. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1282. FROM ICSWareHouseLotInfoLog a
  1283. INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1284. WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1285. ";
  1286. }
  1287. //销售退货
  1288. else if (TransType == TransTypeEnum.SalesShipmentDocNegative.GetDescription())
  1289. {
  1290. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1291. FROM ICSWareHouseLotInfoLog a
  1292. INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1293. WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1294. ";
  1295. }
  1296. //返工工单
  1297. else if (TransType == TransTypeEnum.ReWorkReceiveMo.GetDescription())
  1298. {
  1299. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1300. FROM ICSWareHouseLotInfoLog a
  1301. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1302. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.WorkPoint=c.WorkPoint
  1303. INNER JOIN ICSMOPick d ON d.MODetailID=c.MODetailID AND d.WorkPoint=c.WorkPoint and b.TransSequence=c.Sequence+'-'+d.Sequence
  1304. WHERE d.PickID='{3}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1305. ";
  1306. }
  1307. //一步调拨
  1308. else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
  1309. {
  1310. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1311. FROM ICSWareHouseLotInfoLog a
  1312. INNER JOIN ICSTransfer c ON a.TransCode=c.TransferNO AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1313. WHERE c.TransferID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1314. ";
  1315. }
  1316. //调拨
  1317. else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
  1318. {
  1319. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1320. FROM ICSWareHouseLotInfoLog a
  1321. INNER JOIN ICSTransfer c ON a.TransCode=c.TransferNO AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1322. WHERE c.TransferID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1323. ";
  1324. }
  1325. //两步调出
  1326. else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
  1327. {
  1328. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1329. FROM ICSWareHouseLotInfoLog a
  1330. INNER JOIN ICSOtherOut c ON a.TransCode=c.OutCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1331. INNER JOIN ICSTransfer d ON c.TransferDetailID=d.TransferDetailID AND c.WorkPoint=d.WorkPoint
  1332. WHERE c.OutID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1333. ";
  1334. }
  1335. //两步调入
  1336. else if (TransType == TransTypeEnum.TwoStepTransferDocIn.GetDescription())
  1337. {
  1338. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1339. FROM ICSWareHouseLotInfoLog a
  1340. INNER JOIN ICSOtherIn b ON a.TransCode=b.InCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  1341. INNER JOIN ICSTransfer c ON b.TransferDetailID=c.TransferDetailID AND b.WorkPoint=c.WorkPoint
  1342. WHERE b.InID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1343. ";
  1344. }
  1345. //销售退货-原条码
  1346. else if (TransType == TransTypeEnum.SalesReturnBack.GetDescription())
  1347. {
  1348. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1349. FROM ICSWareHouseLotInfoLog a
  1350. INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1351. WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1352. ";
  1353. }
  1354. //其他出库
  1355. else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
  1356. {
  1357. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1358. FROM ICSWareHouseLotInfoLog a
  1359. INNER JOIN ICSOtherOut c ON a.TransCode=c.OutCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1360. WHERE c.OutID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1361. ";
  1362. }
  1363. //其他入库
  1364. else if (TransType == TransTypeEnum.OtherInDoc.GetDescription())
  1365. {
  1366. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1367. FROM ICSWareHouseLotInfoLog a
  1368. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1369. INNER JOIN ICSOtherIn c ON b.TransCode=c.InCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1370. WHERE c.InID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1371. ";
  1372. }
  1373. //拆卸单
  1374. else if (TransType == TransTypeEnum.DisassemblyDoc.GetDescription())
  1375. {
  1376. ERPupdate = @"UPDATE d set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1377. FROM ICSWareHouseLotInfoLog a
  1378. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1379. INNER JOIN ICSDisassemblyDoc c ON b.TransCode=c.DABDOCCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1380. INNER JOIN ICSWareHouseLotInfoLog d ON b.TransCode=d.TransCode AND d.TransSequence='1' AND b.WorkPoint=d.WorkPoint
  1381. WHERE c.DABDOCID='{0}' AND a.Identification='{1}' AND d.ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1382. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1383. FROM ICSWareHouseLotInfoLog a
  1384. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1385. INNER JOIN ICSDisassemblyDoc c ON b.TransCode=c.DABDOCCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1386. WHERE c.DABDOCID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.DABDOCType='2' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1387. ";
  1388. }
  1389. //领料申请单
  1390. else if (TransType == TransTypeEnum.MOApply.GetDescription())
  1391. {
  1392. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1393. FROM ICSWareHouseLotInfoLog a
  1394. INNER JOIN ICSMOApply c ON a.TransCode=c.ApplyCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1395. WHERE c.ApplyDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1396. ";
  1397. }
  1398. //委外领料申请单
  1399. else if (TransType == TransTypeEnum.OOApply.GetDescription())
  1400. {
  1401. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1402. FROM ICSWareHouseLotInfoLog a
  1403. INNER JOIN ICSOApply c ON a.TransCode=c.ApplyCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1404. WHERE c.ApplyDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1405. ";
  1406. }
  1407. //开立材料出库
  1408. else if (TransType == TransTypeEnum.MOIssue.GetDescription())
  1409. {
  1410. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1411. FROM ICSWareHouseLotInfoLog a
  1412. INNER JOIN ICSMOIssue c ON a.TransCode=c.IssueCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1413. WHERE c.IssueID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1414. ";
  1415. }
  1416. //开立委外材料出库
  1417. else if (TransType == TransTypeEnum.OOIssue.GetDescription())
  1418. {
  1419. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1420. FROM ICSWareHouseLotInfoLog a
  1421. INNER JOIN ICSOIssue c ON a.TransCode=c.IssueCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1422. WHERE c.IssueID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1423. ";
  1424. }
  1425. //开立红字入库单
  1426. else if (TransType == TransTypeEnum.PurchaseReceive.GetDescription())
  1427. {
  1428. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1429. FROM ICSWareHouseLotInfoLog a
  1430. INNER JOIN ICSPurchaseReceive c ON a.TransCode=c.RCVCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1431. WHERE c.RCVID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1432. ";
  1433. }
  1434. //开立委外红字入库单
  1435. else if (TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription())
  1436. {
  1437. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1438. FROM ICSWareHouseLotInfoLog a
  1439. INNER JOIN ICSOutsourcingReceive c ON a.TransCode=c.RCVCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1440. WHERE c.RCVID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1441. ";
  1442. }
  1443. //借用
  1444. else if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
  1445. {
  1446. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1447. FROM ICSWareHouseLotInfoLog a
  1448. INNER JOIN ICSBrrow c ON a.TransCode=c.BrrowCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1449. WHERE c.BrrowDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1450. ";
  1451. }
  1452. //归还
  1453. else if (TransType == TransTypeEnum.ReturnDoc.GetDescription())
  1454. {
  1455. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1456. FROM ICSWareHouseLotInfoLog a
  1457. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1458. INNER JOIN ICSReturn c ON b.TransCode=c.ReturnCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1459. WHERE c.ReturnDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
  1460. ";
  1461. }
  1462. ERPupdate = string.Format(ERPupdate, SourceDetailID, Identification, ID, DetailID, Code, Sequence);
  1463. if (!DBHelper.ExecuteNonQuery(ERPupdate, cmd))
  1464. {
  1465. throw new Exception(TransType + language.GetNameByCode("WMSAPIInfo175"));//"回写日志失败!");
  1466. }
  1467. }
  1468. catch (Exception ex)
  1469. {
  1470. log.Debug(ex.ToString());
  1471. log.Debug(TransType + Environment.NewLine + ERPupdate);
  1472. }
  1473. }
  1474. }
  1475. }