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

2771 lines
178 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
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
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
2 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
3 years ago
3 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
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 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
2 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
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
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
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
2 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
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
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
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
2 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
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
  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. using static ICSSoft.Common.HTTPHelper;
  13. namespace ICSSoft.DataProject
  14. {
  15. /// <summary>
  16. /// 使用中
  17. /// 更新库存表、日志表
  18. /// </summary>
  19. public class ICSWareHouseLotInfoService
  20. {
  21. private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
  22. /// <summary>
  23. /// 分批
  24. /// </summary>
  25. /// <param name="Identification"></param>
  26. /// <param name="TransCode"></param>
  27. /// <param name="TransSequence"></param>
  28. /// <param name="LotNo"></param>
  29. /// <param name="Quantity"></param>
  30. /// <param name="User"></param>
  31. /// <param name="WorkPoint"></param>
  32. /// <param name="TransType"></param>
  33. /// <param name="BusinessCode"></param>
  34. /// <param name="cmd"></param>
  35. public static void WareHouseLotInfoInBatches(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
  36. string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string MergeID = "")
  37. {
  38. }
  39. /// <summary>
  40. /// 添加库存
  41. /// </summary>
  42. /// <param name="LocationCode"></param>
  43. /// <param name="LotNo"></param>
  44. /// <param name="Quantity"></param>
  45. /// <param name="User"></param>
  46. /// <param name="WorkPoint"></param>
  47. /// <param name="TransType"></param>
  48. /// <param name="BusinessCode"></param>
  49. /// <param name="cmd"></param>
  50. /// <param name="jointLotNo"></param>
  51. public static void WareHouseLotInfoUp(string Identification, string LocationCode, string LotNo, string Quantity, string User,
  52. string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string LogID, string jointLotNo,string createDate)
  53. {
  54. try
  55. {
  56. #region 正常入库
  57. ///添加库存(原条码退回,更新库存;新条码直接入库)
  58. //stirng locationcode = "";
  59. string sql = string.Empty;
  60. string locationcode = "";
  61. if (BusinessCode != TransTypeEnum.SalesReturnBack.GetDescription<DBValue>())
  62. {
  63. if (string.IsNullOrWhiteSpace(LogID))
  64. {
  65. sql = @"IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  66. BEGIN
  67. RAISERROR('" + language.GetNameByCode("WMSAPIInfo164") + @"',16,1);
  68. RETURN
  69. END ";
  70. }
  71. else
  72. {
  73. sql = @"SELECT LocationCode FROM ICSWareHouseLotInfo a WHERE LotNo='{0}' AND WorkPoint='{1}'";
  74. sql = string.Format(sql, LotNo, WorkPoint);
  75. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  76. if (dt == null || dt.Rows.Count <= 0)
  77. {
  78. throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo171"), LotNo));
  79. }
  80. locationcode = dt.Rows[0]["LocationCode"].ToString();
  81. }
  82. }
  83. sql += @" IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  84. BEGIN
  85. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  86. RETURN
  87. END
  88. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  89. BEGIN
  90. IF EXISTS(SELECT a.LotNO FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.Quantity=0)
  91. BEGIN
  92. UPDATE a SET a.Quantity=ISNULL(a.Quantity,0)+'{3}',WarehouseCode=e.WarehouseCode,LocationCode=d.LocationCode
  93. From ICSWareHouseLotInfo a
  94. INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
  95. INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
  96. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  97. END
  98. ELSE IF EXISTS(SELECT a.LotNO FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.LocationCode='{4}')
  99. BEGIN
  100. UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{3}'
  101. WHERE LotNo='{0}' AND WorkPoint='{1}'
  102. END
  103. ELSE IF('" + locationcode + @"' != '{4}')
  104. BEGIN
  105. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo395"), "{4}", locationcode) + @"', 16, 1);
  106. RETURN
  107. END
  108. END
  109. ELSE
  110. BEGIN
  111. IF EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
  112. INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
  113. WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
  114. BEGIN
  115. IF NOT EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
  116. INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
  117. WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}' AND il.LocationCode='{4}')
  118. BEGIN
  119. RAISERROR('" + language.GetNameByCode("WMSAPIInfo180") + @"',16,1);
  120. RETURN
  121. END
  122. END
  123. INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  124. SELECT NEWID(),a.LotNo ,e.WarehouseCode,d.LocationCode,a.InvCode ,'{3}','{5}','0',f.F_Account ,f.F_RealName ,'{5}' ,a.WorkPoint ,''
  125. FROM ICSInventoryLot a
  126. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  127. --INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  128. INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
  129. INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
  130. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  131. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  132. END";
  133. sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, LocationCode,createDate);
  134. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  135. {
  136. throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
  137. }
  138. ///添加日志
  139. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  140. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  141. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  142. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  143. MTIME,WorkPoint,EATTRIBUTE1,LogID)
  144. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  145. '','',c.WarehouseCode,c.LocationCode,'{6}',
  146. '','0','{4}','{5}','0','',
  147. '','','',f.F_Account ,f.F_RealName ,
  148. SYSDATETIME() ,a.WorkPoint ,'','{7}'
  149. FROM ICSInventoryLot a
  150. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  151. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  152. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  153. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  154. ";
  155. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, LogID);
  156. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  157. {
  158. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  159. }
  160. #endregion
  161. #region 管控方式是"料品"时
  162. ControlMode mode = ICSControlModeService.GetControlMode();
  163. if (mode.itemCode.Equals("ControlMode02"))
  164. {
  165. //查询是否存在料品管控的条码
  166. string sqlStrNew = @"SELECT a.ID,
  167. con.ContainerCode,
  168. con.ContainerName,
  169. a.LotNo,
  170. a.InvCode,
  171. inv.InvName,
  172. inv.InvStd,
  173. inv.InvUnit,-- {0}
  174. inv.AmountUnit,
  175. ext.ID AS ExtensionID,
  176. ext.ProjectCode,
  177. ext.Version,
  178. ext.BatchCode,
  179. ext.Brand,
  180. ext.cFree1,
  181. ext.cFree2,
  182. ext.cFree3,
  183. ext.cFree4,
  184. ext.cFree5,
  185. ext.cFree6,
  186. ext.cFree7,
  187. ext.cFree8,
  188. ext.cFree9,
  189. ext.cFree10,
  190. a.MUSER AS [ USER ],
  191. a.MTIME AS [ MTime ]
  192. FROM
  193. ICSInventoryLot a
  194. LEFT JOIN ICSContainerLot conlot ON a.LotNo = conlot.LotNo AND a.WorkPoint = conlot.WorkPoint
  195. LEFT JOIN ICSContainer con ON conlot.ContainerID = con.ID AND conlot.WorkPoint = con.WorkPoint
  196. INNER JOIN ICSInventory inv ON a.InvCode = inv.InvCode AND a.WorkPoint = inv.WorkPoint
  197. INNER JOIN ICSExtension ext ON a.ExtensionID = ext.ID AND a.WorkPoint = ext.WorkPoint
  198. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  199. sqlStrNew = string.Format(sqlStrNew, jointLotNo, WorkPoint);
  200. DataTable table = DBHelper.SQlReturnData(sqlStrNew, cmd);
  201. string json = JsonConvert.SerializeObject(table);
  202. List<LotNoMode> modelNew = JsonConvert.DeserializeObject<List<LotNoMode>>(json);
  203. //当不存在料品管控条码时,生成新条码
  204. if (!(modelNew.Count > 0))
  205. {
  206. //获取旧条码的信息
  207. string jsonStr = ICSControlModeService.QueryLotNo(LotNo, WorkPoint);
  208. List<LotNoMode> model = JsonConvert.DeserializeObject<List<LotNoMode>>(jsonStr);
  209. //在条码表中插入一条新数据,在条码表中插入一条新数据,并在库存表中添加新数据
  210. LotNoMode lotNoMode = model[0];
  211. CreateLotNo(jointLotNo, Quantity, "", "", WorkPoint, Identification, User, lotNoMode.InvCode, BusinessCode, lotNoMode.ProjectCode, lotNoMode.BatchCode,
  212. lotNoMode.Version, lotNoMode.Brand, lotNoMode.cFree1, lotNoMode.cFree2, lotNoMode.cFree3, lotNoMode.cFree4, lotNoMode.cFree5, lotNoMode.cFree6, lotNoMode.cFree7,
  213. lotNoMode.cFree8, lotNoMode.cFree9, lotNoMode.cFree10, cmd, language, LocationCode, LotNo);
  214. }
  215. try
  216. {
  217. //合并前日志
  218. WareHouseLotInfoLog(Identification, jointLotNo, User, WorkPoint, "2",
  219. TransTypeEnum.LOTMergeBefore.GetDescription<DBValue>(), cmd, language);
  220. //更新目标条码库存
  221. WareHouseLotInfoMerge(Identification, jointLotNo, LotNo, Quantity, User, WorkPoint, "2",
  222. TransTypeEnum.LOTMergeAfter.GetDescription<DBValue>(), cmd, language);
  223. //合并后日志
  224. WareHouseLotInfoLog(Identification, jointLotNo, User, WorkPoint, "2",
  225. TransTypeEnum.LOTMergeAfter.GetDescription<DBValue>(), cmd, language);
  226. }
  227. catch (Exception)
  228. {
  229. throw;
  230. }
  231. }
  232. #endregion
  233. #region 委外入库,倒冲
  234. if (BusinessCode.Equals(TransTypeEnum.OutsourcingReceiveDoc.GetDescription<DBValue>()))
  235. {
  236. #region sql
  237. sql = @"-- 1.创建临时表 初始单据数据 maintemp
  238. SELECT
  239. c.OOCode AS TransCode,
  240. a.OODetailID AS DetailID,
  241. a.InvCode,
  242. b.InvName,
  243. b.InvStd,
  244. a.Quantity/c.Quantity*{2} AS Quantity,
  245. a.Amount,
  246. a.Sequence AS TransSequence,
  247. a.IssueQuantity,
  248. c.Sequence,
  249. inv.InvUnit,
  250. 0 AS LocationQty,
  251. inv.AmountUnit,
  252. a.ExtensionID,
  253. a.WorkPoint,
  254. ext.ProjectCode,
  255. CASE WHEN ISNULL(inv.BatchEnable, '0')='1' THEN ext.BatchCode ELSE '' END AS BatchCode,
  256. ext.Version,
  257. ext.Brand,
  258. ext.cFree1,
  259. ext.cFree2,
  260. ext.cFree3,
  261. ext.cFree4,
  262. ext.cFree5,
  263. ext.cFree6,
  264. ext.cFree7,
  265. ext.cFree8,
  266. ext.cFree9,
  267. ext.cFree10
  268. INTO #maintemp
  269. FROM
  270. ICSOOPick a
  271. inner join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
  272. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  273. INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
  274. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  275. INNER JOIN (
  276. SELECT a.OOCode,a.Sequence,a.WorkPoint
  277. FROM ICSOutsourcingOrder a
  278. INNER JOIN ICSInventoryLotDetail b ON b.TransCode=a.OOCode AND b.TransSequence=a.Sequence AND b.WorkPoint=a.WorkPoint
  279. INNER JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint
  280. WHERE c.LotNo='{0}' AND c.WorkPoint='{1}'
  281. ) temp ON c.OOCode=temp.OOCode AND a.WorkPoint=temp.WorkPoint AND c.Sequence=temp.Sequence
  282. WHERE a.SupplyType='1'
  283. GROUP BY c.OOCode,a.Quantity,c.Quantity,a.InvCode,b.InvName,b.InvStd,a.WhCode,a.ExtensionID,a.WorkPoint,inv.BatchEnable,a.OODetailID,a.Amount,a.Sequence,a.IssueQuantity,inv.InvName,inv.InvCode,inv.InvUnit,inv.AmountUnit,c.Sequence,
  284. ext.ProjectCode,ext.BatchCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10;
  285. select * into #resulttemp from #maintemp
  286. ALTER TABLE #resulttemp ADD LotNo VARCHAR(50)
  287. delete from #resulttemp
  288. -- 2.maintemp barcodetemp
  289. select a.lotno,a.invcode,(a.quantity-a.lockQuantity) as quantity ,a.mtime into #barcodetemp from ICSWareHouseLotInfo a LEFT JOIN
  290. (select #maintemp.invcode from #maintemp group by #maintemp.InvCode) b on a.invcode = b.invcode where a.Quantity-a.lockQuantity>0 ORDER BY a.MTIME ASC
  291. -- 3.maintemp ID barcodetemp
  292. BEGIN
  293. DECLARE @transSequence int;--
  294. DECLARE @qty int;--
  295. DECLARE @needqty int;--
  296. DECLARE @lotno VARCHAR(50);--
  297. DECLARE @DetailID VARCHAR(50);--ID
  298. DECLARE tempCursor CURSOR FOR (select transSequence,DetailID from #maintemp); --tempCursor
  299. OPEN tempCursor; --
  300. FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID; --
  301. WHILE @@fetch_status=0
  302. BEGIN
  303. select @needqty=Quantity from #maintemp where transSequence = @transSequence AND DetailID = @DetailID
  304. PRINT @transSequence
  305. WHILE @needqty>0
  306. BEGIN
  307. select top 1 @qty = isnull(quantity,0),@lotno = isnull(lotno,'') from #barcodetemp a
  308. RIGHT JOIN (select invcode from #maintemp where transSequence = @transSequence AND DetailID = @DetailID) b on a.invcode=b.invcode ORDER BY mtime
  309. BEGIN
  310. IF(@needqty-@qty>=0 and ISNULL(@lotno, '')<>'')
  311. BEGIN
  312. insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
  313. Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
  314. ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
  315. SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
  316. ISNULL(Amount, 0), InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@qty,ISNULL(AmountUnit, ''),
  317. ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
  318. where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
  319. delete from #barcodetemp where lotno = @lotno
  320. SET @needqty=@needqty-@qty
  321. END
  322. ELSE IF(@needqty-@qty<0 and ISNULL(@lotno, '')<>'')
  323. BEGIN
  324. insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
  325. Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
  326. ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
  327. SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
  328. ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@needqty,ISNULL(AmountUnit, ''),
  329. ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
  330. where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
  331. update #barcodetemp set quantity = @qty-@needqty where lotno = @lotno
  332. SET @needqty=@needqty-@qty
  333. END
  334. ELSE
  335. BEGIN
  336. insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
  337. Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
  338. ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
  339. SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
  340. ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,0,ISNULL(AmountUnit, ''),
  341. ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
  342. where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
  343. SET @needqty=0
  344. END
  345. END
  346. END
  347. FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID;
  348. END
  349. CLOSE tempCursor
  350. DEALLOCATE tempCursor
  351. END
  352. select TransCode,LotNo,LocationQty AS Quantity,InvCode,DetailID,Sequence,TransSequence from #resulttemp
  353. --select * from #resulttemp
  354. DROP table #maintemp
  355. DROP table #resulttemp
  356. DROP table #barcodetemp";
  357. #endregion
  358. sql = String.Format(sql, LotNo, WorkPoint, Quantity);
  359. DataTable table = DBHelper.SQlReturnData(sql, cmd);
  360. string json = JsonConvert.SerializeObject(table);
  361. List<DownItemModel> downItemModels = JsonConvert.DeserializeObject<List<DownItemModel>>(json);
  362. foreach (DownItemModel model in downItemModels)
  363. {
  364. if (model != null && model.LotNo == null || "" == model.LotNo)
  365. {
  366. throw new Exception(language.GetNameByCode("WMSAPIInfo201"));
  367. }
  368. WareHouseLotInfoDown(Identification, model.TransCode, model.Sequence + "~" + model.TransSequence, model.LotNo, model.Quantity, User, WorkPoint, "13", BusinessCode, cmd, language);
  369. //回写已领数量
  370. sql = @"UPDATE ICSOOPick SET IssueQuantity=(ISNULL(IssueQuantity,0)+" + model.Quantity + ") WHERE OODetailID='{0}' AND Sequence='{1}' AND WorkPoint='{2}'";
  371. sql = String.Format(sql, model.DetailID, model.TransSequence, WorkPoint);
  372. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  373. {
  374. throw new Exception(language.GetNameByCode("WMSAPIInfo199"));
  375. }
  376. }
  377. }
  378. #endregion
  379. }
  380. catch (Exception)
  381. {
  382. throw;
  383. }
  384. }
  385. /// <summary>
  386. /// 添加库存
  387. /// </summary>
  388. /// <param name="LocationCode"></param>
  389. /// <param name="LotNo"></param>
  390. /// <param name="Quantity"></param>
  391. /// <param name="User"></param>
  392. /// <param name="WorkPoint"></param>
  393. /// <param name="TransType"></param>
  394. /// <param name="BusinessCode"></param>
  395. /// <param name="cmd"></param>
  396. /// <param name="jointLotNo"></param>
  397. public static void WareHouseLotInfoUpForkLift(string Identification, string LocationCode, string ContainerCode, string User,
  398. string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  399. {
  400. try
  401. {
  402. #region 正常入库
  403. ///添加库存(原条码退回,更新库存;新条码直接入库)
  404. //stirng locationcode = "";
  405. string sql = string.Empty;
  406. string locationcode = "";
  407. string lotsql = @" select A.LotNo,C.Quantity,B.WorkPoint from ICSContainerLot A
  408. LEFT JOIN ICSContainer B ON B.ID=A.ContainerID AND B.WorkPoint=A.WorkPoint
  409. LEFT JOIN ICSInventoryLot C ON C.LotNo=A.LotNo AND C.WorkPoint=A.WorkPoint
  410. where B.ContainerCode='{0}'";
  411. lotsql = string.Format(lotsql, ContainerCode);
  412. DataTable lotdt = DBHelper.SQlReturnData(lotsql, cmd);
  413. if (lotdt.Rows.Count == 0)
  414. {
  415. throw new Exception("托盘号不存在或者尚未绑定条码!");
  416. }
  417. foreach (DataRow dr in lotdt.Rows)
  418. {
  419. sql = @"
  420. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  421. BEGIN
  422. IF EXISTS(SELECT a.LotNO FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.Quantity=0)
  423. BEGIN
  424. UPDATE a SET a.Quantity=ISNULL(a.Quantity,0)+'{3}',WarehouseCode=e.WarehouseCode,LocationCode=d.LocationCode
  425. From ICSWareHouseLotInfo a
  426. INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
  427. INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
  428. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  429. END
  430. ELSE IF EXISTS(SELECT a.LotNO FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.LocationCode='{4}')
  431. BEGIN
  432. UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{3}'
  433. WHERE LotNo='{0}' AND WorkPoint='{1}'
  434. END
  435. ELSE IF('" + locationcode + @"' != '{4}')
  436. BEGIN
  437. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo395"), "{4}", locationcode) + @"', 16, 1);
  438. RETURN
  439. END
  440. END
  441. ELSE
  442. BEGIN
  443. IF EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
  444. INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
  445. WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
  446. BEGIN
  447. IF NOT EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
  448. INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
  449. WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}' AND il.LocationCode='{4}')
  450. BEGIN
  451. RAISERROR('" + language.GetNameByCode("WMSAPIInfo180") + @"',16,1);
  452. RETURN
  453. END
  454. END
  455. INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  456. SELECT NEWID(),a.LotNo ,e.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',SYSDATETIME(),'0','{2}','{2}',SYSDATETIME() ,a.WorkPoint ,''
  457. FROM ICSInventoryLot a
  458. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  459. --INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  460. INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
  461. INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
  462. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  463. END";
  464. sql = string.Format(sql, dr["LotNo"].ToString(), dr["WorkPoint"].ToString(), User, dr["Quantity"].ToString(), LocationCode);
  465. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  466. {
  467. throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
  468. }
  469. ///添加日志
  470. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  471. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  472. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  473. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  474. MTIME,WorkPoint,EATTRIBUTE1)
  475. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  476. '','',c.WarehouseCode,c.LocationCode,'{6}',
  477. '','0','{4}','{5}','0','',
  478. '','','','{2}','{2}',
  479. SYSDATETIME() ,a.WorkPoint ,''
  480. FROM ICSInventoryLot a
  481. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  482. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  483. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  484. ";
  485. sql = string.Format(sql, dr["LotNo"].ToString(), dr["WorkPoint"].ToString(), User, Identification, TransType, BusinessCode, dr["Quantity"].ToString());
  486. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  487. {
  488. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  489. }
  490. }
  491. #endregion
  492. }
  493. catch (Exception)
  494. {
  495. throw;
  496. }
  497. }
  498. /// <summary>
  499. /// 添加库存(货柜)
  500. /// </summary>
  501. /// <param name="LocationCode"></param>
  502. /// <param name="LotNo"></param>
  503. /// <param name="Quantity"></param>
  504. /// <param name="User"></param>
  505. /// <param name="WorkPoint"></param>
  506. /// <param name="TransType"></param>
  507. /// <param name="BusinessCode"></param>
  508. /// <param name="cmd"></param>
  509. /// <param name="jointLotNo"></param>
  510. public static void WareHouseLotInfoUpForHG(string Identification, string LotNo, string Quantity, string User,
  511. string WorkPoint, string HGCode, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  512. {
  513. try
  514. {
  515. string LocationCode = "";
  516. string WHCode = "";
  517. #region 正常入库
  518. #region 根据传入的货柜机器号找到对应的入库库位和仓库
  519. string chksql = @"select F_Define2 AS BinCode,C.WarehouseCode AS WHCode from Sys_SRM_ItemsDetail A
  520. LEFT JOIN ICSLocation B ON B.LocationCode=A.F_Define2 AND B.WorkPoint=A.F_Define4
  521. LEFT JOIN ICSWarehouse C ON C.ID=B.WHID AND C.WorkPoint=B.WorkPoint
  522. where F_Define1='{0}' AND F_ItemName='HG_Location' AND F_Define4='{1}'";
  523. chksql = string.Format(chksql, HGCode, WorkPoint);
  524. DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd);
  525. if (chkdt.Rows.Count == 0)
  526. {
  527. throw new Exception("传入货柜机器号:" + HGCode + "没有维护对应的WMS入库库位!"); ;
  528. }
  529. else
  530. {
  531. LocationCode = chkdt.Rows[0]["BinCode"].ToString();
  532. WHCode = chkdt.Rows[0]["WHCode"].ToString();
  533. }
  534. #endregion
  535. ///添加库存(原条码退回,更新库存;新条码直接入库)
  536. //stirng locationcode = "";
  537. string sql = string.Empty;
  538. sql = @"IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  539. BEGIN
  540. RAISERROR('" + language.GetNameByCode("WMSAPIInfo164") + @"',16,1);
  541. RETURN
  542. END ";
  543. sql += @" INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  544. SELECT NEWID(),a.LotNo ,'{4}','{5}',a.InvCode ,'{3}',SYSDATETIME(),'0','{2}','{2}',SYSDATETIME() ,a.WorkPoint ,''
  545. FROM ICSInventoryLot a
  546. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  547. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  548. sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, WHCode, LocationCode);
  549. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  550. {
  551. throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
  552. }
  553. ///添加日志
  554. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  555. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  556. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  557. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  558. MTIME,WorkPoint,EATTRIBUTE1)
  559. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  560. '','',c.WarehouseCode,c.LocationCode,'{6}',
  561. '','0','{4}','{5}','0','',
  562. '','','','{2}','{2}',
  563. SYSDATETIME() ,a.WorkPoint ,''
  564. FROM ICSInventoryLot a
  565. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  566. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  567. --INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  568. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  569. ";
  570. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity);
  571. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  572. {
  573. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  574. }
  575. #endregion
  576. }
  577. catch (Exception)
  578. {
  579. throw;
  580. }
  581. }
  582. /// <summary>
  583. /// 减少库存
  584. /// </summary>
  585. /// <param name="Identification"></param>
  586. /// <param name="TransCode"></param>
  587. /// <param name="TransSequence"></param>
  588. /// <param name="LotNo"></param>
  589. /// <param name="Quantity"></param>
  590. /// <param name="User"></param>
  591. /// <param name="WorkPoint"></param>
  592. /// <param name="TransType"></param>
  593. /// <param name="BusinessCode"></param>
  594. /// <param name="cmd"></param>
  595. public static DataTable WareHouseLotInfoDown(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
  596. string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string MergeID = "")
  597. {
  598. String LotEnable = "";
  599. String PrintEnable = "";
  600. string lotstr = "";
  601. int result = 0;
  602. List<string> NewBarCodeList = new List<string>();
  603. DataTable dtLotno = new DataTable();
  604. DataTable lstDt = new DataTable();
  605. try
  606. {
  607. ///更新库存
  608. string sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  609. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
  610. BEGIN
  611. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  612. RETURN
  613. END";
  614. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  615. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  616. {
  617. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  618. }
  619. //检验是否分批
  620. sql = @"SELECT b.LotEnable,b.PrintEnable FROM ICSInventoryLot a
  621. LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  622. where a.LotNo='{0}' and a.WorkPoint='{1}'
  623. ";
  624. sql = string.Format(sql, LotNo, WorkPoint);
  625. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  626. if (dt.Rows.Count == 0)
  627. {
  628. throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
  629. }
  630. else
  631. {
  632. LotEnable = dt.Rows[0]["LotEnable"].ToString();
  633. PrintEnable = dt.Rows[0]["PrintEnable"].ToString();
  634. }
  635. if (LotEnable.Equals("True"))
  636. {
  637. ///分批前添加日志
  638. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  639. BEGIN
  640. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  641. RETURN
  642. END
  643. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  644. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  645. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  646. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  647. MTIME,WorkPoint,EATTRIBUTE1)
  648. SELECT NEWID(),'{3}','{7}','{8}',a.LotNo ,a.InvCode ,
  649. c.WarehouseCode,c.LocationCode,'','',c.Quantity+{6},
  650. '','0','{4}','31','0','',
  651. '','','',f.F_Account ,f.F_RealName ,
  652. SYSDATETIME() ,a.WorkPoint ,''
  653. FROM ICSInventoryLot a
  654. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  655. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  656. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  657. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  658. ";
  659. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, TransCode, TransSequence);
  660. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  661. {
  662. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  663. }
  664. #region 获取分批后的条码(lotstr)
  665. sql = @"SELECT TOP 1 LotNO FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}' AND WorkPoint='{1}'
  666. ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
  667. sql = string.Format(sql, LotNo, WorkPoint);
  668. dt = DBHelper.SQlReturnData(sql, cmd);
  669. if (dt.Rows.Count == 0)
  670. {
  671. lotstr = LotNo + "-" + 1;
  672. }
  673. else
  674. {
  675. lotstr = LotNo + "-" + (Convert.ToInt32(dt.Rows[0]["LotNO"].ToString().Split('-')[dt.Rows[0]["LotNO"].ToString().Split('-').Length - 1]) + 1).ToString();
  676. }
  677. NewBarCodeList.Add(lotstr);//将分批后新条码添加到新集合
  678. #endregion
  679. #region 将分批后的条码记录插入条码表,库存表及日志表并将原条码库存数量清零
  680. sql = @"INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
  681. Quantity,Amount,ExtensionID,Type,PrintTimes,
  682. LastPrintUser,LastPrintTime,MUSER,MUSERName,MTIME,
  683. WorkPoint,EATTRIBUTE1)
  684. SELECT TOP 1 NEWID(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,
  685. '{2}',a.Amount,a.ExtensionID,a.Type,a.PrintTimes,
  686. a.LastPrintUser,a.LastPrintTime,a.MUSER ,a.MUSERName ,GETDATE(),
  687. a.WorkPoint ,'{1}'
  688. From ICSInventoryLot a
  689. where a.LotNo='{1}' and a.WorkPoint='{3}'";
  690. sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
  691. cmd.CommandText = sql;
  692. result = cmd.ExecuteNonQuery();
  693. if (result <= 0)
  694. {
  695. throw new Exception(language.GetNameByCode("WMSAPIInfo195"));//条码分批后条码表存入失败!
  696. }
  697. sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  698. select NEWID(),'{0}',WarehouseCode,LocationCode,InvCode,'0',InDate,LockQuantity
  699. ,MUSER,MUSERName,GETDATE(),'{3}',''
  700. from ICSWareHouseLotInfo
  701. where LotNO='{1}' AND WorkPoint='{3}'";
  702. sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
  703. cmd.CommandText = sql;
  704. result = cmd.ExecuteNonQuery();
  705. if (result <= 0)
  706. {
  707. throw new Exception(language.GetNameByCode("WMSAPIInfo196"));//条码分批后库存表存入失败!
  708. }
  709. //插入条码单据表
  710. sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  711. SELECT '{3}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
  712. FROM ICSInventoryLot a
  713. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  714. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  715. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  716. sql = string.Format(sql, LotNo, WorkPoint, User, lotstr);
  717. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  718. {
  719. throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
  720. }
  721. sql = @"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,LogID)
  726. SELECT NEWID(),'{3}','{4}','{5}','{10}' ,a.InvCode ,
  727. c.WarehouseCode,c.LocationCode,'','','{6}',
  728. '','0','{7}','{8}','0','',
  729. '','','',f.F_Account ,f.F_RealName ,
  730. SYSDATETIME() ,a.WorkPoint ,'','{9}'
  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, Quantity, TransType, BusinessCode, MergeID, lotstr);
  737. cmd.CommandText = sql;
  738. result = cmd.ExecuteNonQuery();
  739. if (result <= 0)
  740. {
  741. throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//条码分批后库存日志表存入失败!
  742. }
  743. if (PrintEnable.Equals("True"))
  744. {
  745. 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
  746. from ICSWareHouseLotInfolog A
  747. left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
  748. left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
  749. left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
  750. where A.lotno like'{0}%' and a.workpoint='{1}'
  751. ";
  752. sql = string.Format(sql, LotNo, WorkPoint);
  753. dtLotno = DBHelper.SQlReturnData(sql, cmd);
  754. lstDt = dtLotno;
  755. }
  756. ///添加日志
  757. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  758. BEGIN
  759. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  760. RETURN
  761. END
  762. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  763. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  764. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  765. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  766. MTIME,WorkPoint,EATTRIBUTE1,MergeID)
  767. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  768. c.WarehouseCode,c.LocationCode,'','',c.Quantity,
  769. '','0','{7}','32','0','',
  770. '','','',f.F_Account ,f.F_RealName ,
  771. SYSDATETIME() ,a.WorkPoint ,'','{9}'
  772. FROM ICSInventoryLot a
  773. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  774. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  775. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  776. ";
  777. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID);
  778. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  779. {
  780. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  781. }
  782. #endregion
  783. }
  784. else
  785. {
  786. NewBarCodeList.Add(LotNo);
  787. ///添加日志
  788. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  789. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  790. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  791. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  792. MTIME,WorkPoint,EATTRIBUTE1,MergeID)
  793. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  794. c.WarehouseCode,c.LocationCode,'','','{6}',
  795. '','0','{7}','{8}','0','',
  796. '','','','{2}','{2}',
  797. SYSDATETIME() ,a.WorkPoint ,'','{9}'
  798. FROM ICSInventoryLot a
  799. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  800. --INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  801. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  802. ";
  803. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID);
  804. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  805. {
  806. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  807. }
  808. }
  809. }
  810. catch (Exception)
  811. {
  812. throw;
  813. }
  814. return lstDt;
  815. }
  816. /// <summary>
  817. /// 修改库存
  818. /// </summary>
  819. /// <param name="Identification"></param>
  820. /// <param name="TransCode"></param>
  821. /// <param name="TransSequence"></param>
  822. /// <param name="LotNo"></param>
  823. /// <param name="Quantity"></param>
  824. /// <param name="User"></param>
  825. /// <param name="WorkPoint"></param>
  826. /// <param name="TransType"></param>
  827. /// <param name="cmd"></param>
  828. public static void WareHouseLotInfoUpdate(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
  829. string WorkPoint, string TransType, string CheckKind, SqlCommand cmd, Dictionary<string, string> language)
  830. {
  831. try
  832. {
  833. ///添加日志
  834. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  835. BEGIN
  836. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  837. RETURN
  838. END
  839. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  840. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  841. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  842. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  843. MTIME,WorkPoint,EATTRIBUTE1)
  844. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  845. a.WarehouseCode,a.LocationCode,'','',a.Quantity,
  846. '{8}','0','{6}','{7}','0','',
  847. '','','',f.F_Account ,f.F_RealName ,
  848. SYSDATETIME() ,a.WorkPoint ,''
  849. FROM ICSWareHouseLotInfo a
  850. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  851. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  852. ";
  853. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, TransTypeEnum.LOTCheckBefore.GetDescription<DBValue>(), CheckKind);
  854. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  855. {
  856. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  857. }
  858. ///更新库存
  859. sql = @"UPDATE ICSWareHouseLotInfo SET Quantity='{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'";
  860. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  861. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  862. {
  863. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  864. }
  865. ///添加日志
  866. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  867. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  868. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  869. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  870. MTIME,WorkPoint,EATTRIBUTE1)
  871. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  872. a.WarehouseCode,a.LocationCode,'','',a.Quantity,
  873. '{8}','0','{6}','{7}','0','',
  874. '','','',f.F_Account ,f.F_RealName ,
  875. SYSDATETIME() ,a.WorkPoint ,''
  876. FROM ICSWareHouseLotInfo a
  877. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  878. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  879. ";
  880. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, TransTypeEnum.LOTCheckAfter.GetDescription<DBValue>(), CheckKind);
  881. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  882. {
  883. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  884. }
  885. }
  886. catch (Exception)
  887. {
  888. throw;
  889. }
  890. }
  891. /// <summary>
  892. /// 调拨
  893. /// </summary>
  894. /// <param name="LocationCode"></param>
  895. /// <param name="LotNo"></param>
  896. /// <param name="Quantity"></param>
  897. /// <param name="User"></param>
  898. /// <param name="WorkPoint"></param>
  899. /// <param name="TransType"></param>
  900. /// <param name="BusinessCode"></param>
  901. /// <param name="cmd"></param>
  902. public static DataTable WareHouseLotInfoTransfer(string Identification, string TransCode, string TransSequence, string WarehouseCode, string LocationCode,
  903. string LotNo, string Quantity, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string MergeID)
  904. {
  905. bool? LotEnable = null;
  906. String PrintEnable = "";
  907. string lotstr = "";
  908. int result = 0;
  909. DataTable dtLotno = new DataTable();
  910. DataTable lstDt = new DataTable();
  911. List<string> NewBarCodeList = new List<string>();
  912. try
  913. {
  914. var tranferWorkpoint = string.Empty;
  915. var checksql = $@"SELECT
  916. top 1 a.EATTRIBUTE1
  917. FROM
  918. ICSTransfer a
  919. WHERE
  920. TransferNO = '{TransCode}'
  921. AND Sequence = '{TransSequence}'
  922. AND WorkPoint = '{WorkPoint}'
  923. AND Type = '{TransType}'";
  924. var workPoint = DBHelper.ExecuteScalar(checksql, cmd).ToString();
  925. if (workPoint == null|| workPoint=="")
  926. {
  927. tranferWorkpoint = WorkPoint;
  928. }
  929. else
  930. {
  931. tranferWorkpoint = workPoint.ToString();
  932. }
  933. //检验是否分批
  934. string sql = @"SELECT b.LotEnable,b.PrintEnable FROM ICSInventoryLot a
  935. LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  936. where a.LotNo='{0}' and a.WorkPoint='{1}'
  937. ";
  938. sql = string.Format(sql, LotNo, WorkPoint);
  939. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  940. if (dt.Rows.Count == 0)
  941. {
  942. throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
  943. }
  944. else
  945. {
  946. LotEnable = dt.Rows[0]["LotEnable"] as bool?;
  947. PrintEnable = dt.Rows[0]["PrintEnable"].ToString();
  948. }
  949. if (LotEnable == true )
  950. {
  951. ///分批前添加日志
  952. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  953. BEGIN
  954. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  955. RETURN
  956. END
  957. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  958. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  959. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  960. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  961. MTIME,WorkPoint,EATTRIBUTE1)
  962. SELECT NEWID(),'{3}','{7}','{8}',a.LotNo ,a.InvCode ,
  963. c.WarehouseCode,c.LocationCode,'','',c.Quantity+{6},
  964. '','0','{4}','31','0','',
  965. '','','',f.F_Account ,f.F_RealName ,
  966. SYSDATETIME() ,'{1}' ,'{9}'
  967. FROM ICSInventoryLot a
  968. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  969. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  970. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  971. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  972. ";
  973. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, TransCode, TransSequence, tranferWorkpoint);
  974. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  975. {
  976. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  977. }
  978. ///更新库存
  979. sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}',--LocationCode = '{3}',
  980. WorkPoint ='{4}' WHERE LotNo='{0}' AND WorkPoint='{1}';
  981. UPDATE ICSInventoryLot SET WorkPoint='{4}' WHERE LotNo='{0}' AND WorkPoint='{1}';
  982. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
  983. BEGIN
  984. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  985. RETURN
  986. END";
  987. sql = string.Format(sql, LotNo, WorkPoint, Quantity,LocationCode, tranferWorkpoint);
  988. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  989. {
  990. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  991. }
  992. #region 获取分批后的条码(lotstr)
  993. sql = @"SELECT TOP 1 LotNO FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}' AND WorkPoint='{1}'
  994. ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
  995. sql = string.Format(sql, LotNo, tranferWorkpoint);
  996. dt = DBHelper.SQlReturnData(sql, cmd);
  997. if (dt.Rows.Count == 0)
  998. {
  999. lotstr = LotNo + "-" + 1;
  1000. }
  1001. else
  1002. {
  1003. lotstr = LotNo + "-" + (Convert.ToInt32(dt.Rows[0]["LotNO"].ToString().Split('-')[dt.Rows[0]["LotNO"].ToString().Split('-').Length - 1]) + 1).ToString();
  1004. }
  1005. NewBarCodeList.Add(lotstr);//将分批后新条码添加到新集合
  1006. #endregion
  1007. #region 将分批后的条码记录插入条码表,库存表及日志表并将原条码库存数量清零
  1008. sql = @"INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
  1009. Quantity,Amount,ExtensionID,Type,PrintTimes,
  1010. LastPrintUser,LastPrintTime,MUSER,MUSERName,MTIME,
  1011. WorkPoint,EATTRIBUTE1)
  1012. SELECT TOP 1 NEWID(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,
  1013. '{2}',a.Amount,a.ExtensionID,a.Type,a.PrintTimes,
  1014. a.LastPrintUser,a.LastPrintTime,a.MUSER ,a.MUSERName ,GETDATE(),
  1015. '{3}' ,'{1}'
  1016. From ICSInventoryLot a
  1017. where a.LotNo='{1}' and a.WorkPoint='{3}'";
  1018. sql = string.Format(sql, lotstr, LotNo, Quantity, tranferWorkpoint);
  1019. cmd.CommandText = sql;
  1020. result = cmd.ExecuteNonQuery();
  1021. if (result <= 0)
  1022. {
  1023. throw new Exception(language.GetNameByCode("WMSAPIInfo195"));//条码分批后条码表存入失败!
  1024. }
  1025. #endregion
  1026. sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  1027. select NEWID(),'{0}','{4}','{5}',InvCode,'{2}',InDate,LockQuantity
  1028. ,MUSER,MUSERName,GETDATE(),'{3}',''
  1029. from ICSWareHouseLotInfo
  1030. where LotNO='{1}' AND WorkPoint='{3}'";
  1031. sql = string.Format(sql, lotstr, LotNo, Quantity, tranferWorkpoint, WarehouseCode,LocationCode);
  1032. cmd.CommandText = sql;
  1033. result = cmd.ExecuteNonQuery();
  1034. if (result <= 0)
  1035. {
  1036. throw new Exception(language.GetNameByCode("WMSAPIInfo196"));//条码分批后库存表存入失败!
  1037. }
  1038. //插入条码单据表
  1039. sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  1040. SELECT '{0}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,'{1}'
  1041. FROM ICSInventoryLot a
  1042. INNER JOIN ICSInventoryLotDetail b ON b.LotNo='{3}' AND a.WorkPoint=b.WorkPoint
  1043. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1044. WHERE a.LotNo='{3}' AND a.WorkPoint='{1}'";
  1045. sql = string.Format(sql, lotstr, tranferWorkpoint, User,LotNo);
  1046. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1047. {
  1048. throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
  1049. }
  1050. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1051. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1052. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1053. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1054. MTIME,WorkPoint,EATTRIBUTE1,LogID)
  1055. SELECT NEWID(),'{3}','{4}','{5}','{10}' ,a.InvCode ,
  1056. c.WarehouseCode,c.LocationCode,'{11}','{12}','{6}',
  1057. '','0','{7}','{8}','0','',
  1058. '','','',f.F_Account ,f.F_RealName ,
  1059. SYSDATETIME() ,'{1}' ,'{13}','{9}'
  1060. FROM ICSInventoryLot a
  1061. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1062. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1063. WHERE a.LotNo='{0}' AND a.WorkPoint='{13}'
  1064. ";
  1065. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, lotstr, WarehouseCode, LocationCode, tranferWorkpoint);
  1066. cmd.CommandText = sql;
  1067. result = cmd.ExecuteNonQuery();
  1068. if (result <= 0)
  1069. {
  1070. throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//条码分批后库存日志表存入失败!
  1071. }
  1072. ///添加日志
  1073. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  1074. BEGIN
  1075. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  1076. RETURN
  1077. END
  1078. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1079. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1080. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1081. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1082. MTIME,WorkPoint,EATTRIBUTE1,MergeID)
  1083. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  1084. c.WarehouseCode,c.LocationCode,'','',c.Quantity,
  1085. '','0','{7}','32','0','',
  1086. '','','',f.F_Account ,f.F_RealName ,
  1087. SYSDATETIME() ,'{1}' ,'{10}','{9}'
  1088. FROM ICSInventoryLot a
  1089. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1090. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1091. WHERE a.LotNo='{0}' AND a.WorkPoint='{10}'
  1092. ";
  1093. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, tranferWorkpoint);
  1094. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1095. {
  1096. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1097. }
  1098. if (PrintEnable.Equals("True"))
  1099. {
  1100. 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
  1101. from ICSWareHouseLotInfolog A
  1102. left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
  1103. left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
  1104. left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
  1105. where a.BusinessCode ='105'
  1106. and A.lotno like'{0}%' and a.workpoint='{1}'
  1107. ";
  1108. sql = string.Format(sql, LotNo, tranferWorkpoint);
  1109. dtLotno = DBHelper.SQlReturnData(sql, cmd);
  1110. lstDt = dtLotno;
  1111. }
  1112. }
  1113. else
  1114. {
  1115. ///添加日志
  1116. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  1117. BEGIN
  1118. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  1119. RETURN
  1120. END
  1121. --IF EXISTS(SELECT id FROM ICSWareHouseLotInfo WHERE WarehouseCode='{9}' AND LocationCode='{10}' AND WorkPoint='{1}' AND LotNo = '{0}')
  1122. --BEGIN
  1123. --RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo355")) + @"',16,1);
  1124. --RETURN
  1125. --END
  1126. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1127. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1128. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1129. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1130. MTIME,WorkPoint,EATTRIBUTE1,MergeID)
  1131. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  1132. c.WarehouseCode,c.LocationCode,'{9}','{10}',{6},
  1133. '','0','{7}','{8}','0','',
  1134. '','','',f.F_Account ,f.F_RealName ,
  1135. SYSDATETIME() ,'{1}' ,'{12}','{11}'
  1136. FROM ICSInventoryLot a
  1137. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1138. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1139. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  1140. ";
  1141. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, WarehouseCode, LocationCode, MergeID, tranferWorkpoint);
  1142. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1143. {
  1144. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1145. }
  1146. ///更新库存
  1147. //sql = @"UPDATE ICSWareHouseLotInfo SET WareHouseCode='{2}',LocationCode='{3}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  1148. // IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
  1149. // BEGIN
  1150. // RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  1151. // RETURN
  1152. // END";
  1153. sql = $@"UPDATE ICSWareHouseLotInfo
  1154. SET WareHouseCode = '{WarehouseCode}',
  1155. LocationCode = '{LocationCode}',
  1156. WorkPoint ='{tranferWorkpoint}'
  1157. WHERE
  1158. LotNo = '{LotNo}'
  1159. AND WorkPoint = '{WorkPoint}';
  1160. UPDATE ICSInventoryLot SET WorkPoint='{tranferWorkpoint}' WHERE LotNo='{LotNo}' AND WorkPoint='{WorkPoint}';
  1161. IF EXISTS ( SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo= '{LotNo}' AND a.WorkPoint= '{WorkPoint}' AND Quantity < 0 ) BEGIN
  1162. RAISERROR ( '{language.GetNameByCode("WMSAPIInfo167")}', 16, 1 );
  1163. RETURN END;";
  1164. //sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode, TransCode, TransSequence, TransType);
  1165. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1166. {
  1167. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  1168. }
  1169. }
  1170. }
  1171. catch (Exception)
  1172. {
  1173. throw;
  1174. }
  1175. return lstDt;
  1176. }
  1177. /// <summary>
  1178. /// 移库
  1179. /// </summary>
  1180. /// <param name="LocationCode"></param>
  1181. /// <param name="LotNo"></param>
  1182. /// <param name="Quantity"></param>
  1183. /// <param name="User"></param>
  1184. /// <param name="WorkPoint"></param>
  1185. /// <param name="TransType"></param>
  1186. /// <param name="BusinessCode"></param>
  1187. /// <param name="cmd"></param>
  1188. public static void WareHouseLotInfoLibrary(string Identification, string TransCode, string TransSequence, string WarehouseCode, string LocationCode,
  1189. string LotNo, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  1190. {
  1191. try
  1192. {
  1193. string sql = @"SELECT WarehouseCode FROM ICSWareHouseLotInfo a WHERE LotNo='{0}' AND WorkPoint='{1}'";
  1194. sql = string.Format(sql, LotNo, WorkPoint);
  1195. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  1196. if (dt == null || dt.Rows.Count <= 0)
  1197. {
  1198. throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo171"), LotNo));
  1199. }
  1200. string whcode = dt.Rows[0]["WarehouseCode"].ToString();
  1201. ///添加日志
  1202. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  1203. BEGIN
  1204. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  1205. RETURN
  1206. END
  1207. IF('" + whcode + @"' != '{8}')
  1208. BEGIN
  1209. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo394"), "{8}", whcode) + @"', 16, 1);
  1210. RETURN
  1211. END
  1212. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1213. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1214. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1215. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1216. MTIME,WorkPoint,EATTRIBUTE1)
  1217. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  1218. c.WarehouseCode,c.LocationCode,'{8}','{9}',c.Quantity,
  1219. '','0','{6}','{7}','0','',
  1220. '','','',f.F_Account ,f.F_RealName ,
  1221. SYSDATETIME() ,a.WorkPoint ,''
  1222. FROM ICSInventoryLot a
  1223. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1224. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1225. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  1226. ";
  1227. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, BusinessCode, WarehouseCode, LocationCode);
  1228. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1229. {
  1230. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1231. }
  1232. ///添加库存
  1233. sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity>0)
  1234. BEGIN
  1235. RAISERROR('" + language.GetNameByCode("WMSAPIInfo038") + @"',16,1);
  1236. RETURN
  1237. END
  1238. IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.WarehouseCode='{2}')
  1239. BEGIN
  1240. RAISERROR('" + language.GetNameByCode("WMSAPIInfo038") + @"',16,1);
  1241. RETURN
  1242. END
  1243. UPDATE ICSWareHouseLotInfo SET WarehouseCode='{2}',LocationCode='{3}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  1244. ";
  1245. sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode);
  1246. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1247. {
  1248. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存表更新失败!");
  1249. }
  1250. }
  1251. catch (Exception)
  1252. {
  1253. throw;
  1254. }
  1255. }
  1256. /// <summary>
  1257. /// 两步调入
  1258. /// </summary>
  1259. /// <param name="LocationCode"></param>
  1260. /// <param name="LotNo"></param>
  1261. /// <param name="Quantity"></param>
  1262. /// <param name="User"></param>
  1263. /// <param name="WorkPoint"></param>
  1264. /// <param name="TransType"></param>
  1265. /// <param name="BusinessCode"></param>
  1266. /// <param name="cmd"></param>
  1267. public static void WareHouseLotInfoTwoStepTransferDocIn(string Identification, string TransCode, string TransSequence, string WarehouseCode,
  1268. string LocationCode, string LotNo, string Quantity, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  1269. {
  1270. try
  1271. {
  1272. ///添加日志
  1273. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  1274. BEGIN
  1275. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  1276. RETURN
  1277. END
  1278. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1279. ToWarehouseCode,ToLocationCode,Quantity,
  1280. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1281. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1282. MTIME,WorkPoint,EATTRIBUTE1)
  1283. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  1284. '{9}','{10}','{6}',
  1285. '','0','{7}','{8}','0','',
  1286. '','','',f.F_Account ,f.F_RealName ,
  1287. SYSDATETIME() ,a.WorkPoint ,''
  1288. FROM ICSInventoryLot a
  1289. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1290. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1291. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  1292. ";
  1293. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, WarehouseCode, LocationCode);
  1294. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1295. {
  1296. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1297. }
  1298. ///添加库存
  1299. sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  1300. BEGIN
  1301. RAISERROR('" + language.GetNameByCode("WMSAPIInfo171") + @"',16,1);
  1302. RETURN
  1303. END
  1304. UPDATE ICSWareHouseLotInfo SET WarehouseCode='{2}',LocationCode='{3}',Quantity=Quantity+'{4}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  1305. ";
  1306. sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode, Quantity);
  1307. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1308. {
  1309. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存表更新失败!");
  1310. }
  1311. }
  1312. catch (Exception)
  1313. {
  1314. throw;
  1315. }
  1316. }
  1317. /// <summary>
  1318. /// 拆分、合并日志
  1319. /// </summary>
  1320. /// <param name="Identification"></param>
  1321. /// <param name="LotNo"></param>
  1322. /// <param name="User"></param>
  1323. /// <param name="WorkPoint"></param>
  1324. /// <param name="TransType"></param>
  1325. /// <param name="BusinessCode"></param>
  1326. /// <param name="cmd"></param>
  1327. public static void WareHouseLotInfoLog(string Identification, string LotNo, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  1328. {
  1329. try
  1330. {
  1331. ///添加日志
  1332. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  1333. BEGIN
  1334. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  1335. RETURN
  1336. END
  1337. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1338. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1339. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1340. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1341. MTIME,WorkPoint,EATTRIBUTE1)
  1342. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  1343. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  1344. '','0','{4}','{5}','0','',
  1345. '','','',f.F_Account ,f.F_RealName ,
  1346. SYSDATETIME() ,a.WorkPoint ,''
  1347. FROM ICSInventoryLot a
  1348. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1349. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1350. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1351. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  1352. ";
  1353. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode);
  1354. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1355. {
  1356. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1357. }
  1358. }
  1359. catch (Exception)
  1360. {
  1361. throw;
  1362. }
  1363. }
  1364. /// <summary>
  1365. /// 合并
  1366. /// </summary>
  1367. /// <param name="Identification"></param>
  1368. /// <param name="LotNo"></param>
  1369. /// <param name="User"></param>
  1370. /// <param name="WorkPoint"></param>
  1371. /// <param name="TransType"></param>
  1372. /// <param name="BusinessCode"></param>
  1373. /// <param name="cmd"></param>
  1374. public static void WareHouseLotInfoMerge(string Identification, string LotNo, string CurrentLotNo, string Quantity, string User, string WorkPoint, string TransType,
  1375. string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  1376. {
  1377. try
  1378. {
  1379. ///更新目标条码库存
  1380. string sql = @"IF NOT EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  1381. INNER JOIN ICSInventoryLot b ON b.LotNo='{3}' AND a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  1382. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  1383. BEGIN
  1384. RAISERROR('" + language.GetNameByCode("WMSAPIInfo170") + @"',16,1);
  1385. RETURN
  1386. END
  1387. IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  1388. BEGIN
  1389. RAISERROR('" + language.GetNameByCode("WMSAPIInfo171") + @"',16,1);
  1390. RETURN
  1391. END
  1392. UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  1393. ";
  1394. sql = string.Format(sql, LotNo, WorkPoint, Quantity, CurrentLotNo);
  1395. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1396. {
  1397. throw new Exception(language.GetNameByCode("WMSAPIInfo169"));//"目标条码库存更新失败!");
  1398. }
  1399. ///更新原条码库存
  1400. sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  1401. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
  1402. BEGIN
  1403. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  1404. RETURN
  1405. END";
  1406. sql = string.Format(sql, CurrentLotNo, WorkPoint, Quantity);
  1407. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1408. {
  1409. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  1410. }
  1411. ///添加日志
  1412. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  1413. BEGIN
  1414. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  1415. RETURN
  1416. END
  1417. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1418. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1419. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1420. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1421. MTIME,WorkPoint,EATTRIBUTE1)
  1422. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  1423. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  1424. '','0','{4}','{5}','0','',
  1425. '','','',f.F_Account ,f.F_RealName ,
  1426. SYSDATETIME() ,a.WorkPoint ,''
  1427. FROM ICSInventoryLot a
  1428. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1429. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1430. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1431. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  1432. ";
  1433. sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Identification, TransType, BusinessCode);
  1434. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1435. {
  1436. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1437. }
  1438. }
  1439. catch (Exception)
  1440. {
  1441. throw;
  1442. }
  1443. }
  1444. /// <summary>
  1445. /// 拆分
  1446. /// </summary>
  1447. /// <param name="Identification"></param>
  1448. /// <param name="LotNo"></param>
  1449. /// <param name="User"></param>
  1450. /// <param name="WorkPoint"></param>
  1451. /// <param name="TransType"></param>
  1452. /// <param name="BusinessCode"></param>
  1453. /// <param name="cmd"></param>
  1454. public static void WareHouseLotInfoSplit(string Identification, string LotNo, string CurrentLotNo, string Quantity, string User, string WorkPoint, string TransType,
  1455. string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  1456. {
  1457. try
  1458. {
  1459. ///更新库存
  1460. string sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  1461. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
  1462. BEGIN
  1463. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  1464. RETURN
  1465. END";
  1466. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  1467. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1468. {
  1469. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  1470. }
  1471. #region 添加库存
  1472. //插入条码表
  1473. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  1474. BEGIN
  1475. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  1476. RETURN
  1477. END
  1478. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a WHERE a.LotNo='{4}' AND a.WorkPoint='{1}')
  1479. BEGIN
  1480. RAISERROR('" + language.GetNameByCode("WMSAPIInfo172") + @"',16,1);
  1481. RETURN
  1482. END
  1483. INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  1484. SELECT NEWID(),'{4}' ,a.InvCode,a.ProductDate,a.ExpirationDate ,'{3}',a.ExtensionID,'101',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,a.LotNo
  1485. FROM ICSInventoryLot a
  1486. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1487. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  1488. sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, CurrentLotNo);
  1489. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1490. {
  1491. throw new Exception(language.GetNameByCode("WMSAPIInfo173"));//"条码表写入失败!");
  1492. }
  1493. //插入条码单据表
  1494. sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  1495. SELECT '{3}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
  1496. FROM ICSInventoryLot a
  1497. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1498. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1499. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  1500. sql = string.Format(sql, LotNo, WorkPoint, User, CurrentLotNo);
  1501. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1502. {
  1503. throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
  1504. }
  1505. ///添加库存
  1506. sql = @"IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  1507. BEGIN
  1508. RAISERROR('" + language.GetNameByCode("WMSAPIInfo164") + @"',16,1);
  1509. RETURN
  1510. END
  1511. IF EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
  1512. INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
  1513. INNER JOIN ICSWareHouseLotInfo d ON a.EATTRIBUTE1=d.LotNo AND a.WorkPoint=d.WorkPoint
  1514. WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
  1515. BEGIN
  1516. IF NOT EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
  1517. INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
  1518. INNER JOIN ICSWareHouseLotInfo d ON a.EATTRIBUTE1=d.LotNo AND a.WorkPoint=d.WorkPoint AND il.LocationCode=d.LocationCode
  1519. WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
  1520. BEGIN
  1521. RAISERROR('" + language.GetNameByCode("WMSAPIInfo180") + @"',16,1);
  1522. RETURN
  1523. END
  1524. END
  1525. INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  1526. SELECT NEWID(),a.LotNo ,d.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
  1527. FROM ICSInventoryLot a
  1528. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1529. INNER JOIN ICSWareHouseLotInfo d ON a.EATTRIBUTE1=d.LotNo AND a.WorkPoint=d.WorkPoint
  1530. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1531. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  1532. sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Quantity);
  1533. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1534. {
  1535. throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
  1536. }
  1537. ///添加日志
  1538. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1539. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1540. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1541. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1542. MTIME,WorkPoint,EATTRIBUTE1)
  1543. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  1544. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  1545. '','0','{4}','{5}','0','',
  1546. '','','',f.F_Account ,f.F_RealName ,
  1547. SYSDATETIME() ,a.WorkPoint ,''
  1548. FROM ICSInventoryLot a
  1549. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1550. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1551. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1552. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  1553. ";
  1554. sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Identification, TransType, BusinessCode);
  1555. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1556. {
  1557. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1558. }
  1559. #endregion
  1560. }
  1561. catch (Exception)
  1562. {
  1563. throw;
  1564. }
  1565. }
  1566. /// <summary>
  1567. /// 回写ERP ID
  1568. /// </summary>
  1569. /// <param name="TransType"></param>
  1570. /// <param name="SourceDetailID"></param>
  1571. /// <param name="Identification"></param>
  1572. /// <param name="ID"></param>
  1573. /// <param name="DetailID"></param>
  1574. /// <param name="Code"></param>
  1575. /// <param name="Sequence"></param>
  1576. /// <param name="cmd"></param>
  1577. public static void WareHouseLotInfoLogUpdate(string TransType, string SourceDetailID, string Identification, string ID, string DetailID, string Code, string Sequence, string col, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  1578. {
  1579. string ERPupdate = string.Empty;
  1580. try
  1581. {
  1582. //采购入库
  1583. if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription())
  1584. {
  1585. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1586. FROM ICSWareHouseLotInfoLog a
  1587. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1588. INNER JOIN ICSPurchaseOrder c ON b.TransCode=c.POCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1589. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1590. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1591. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1592. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1593. WHERE c.PODetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  1594. and (ISNULL(a.towarehousecode, '') + 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, '') +
  1595. 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, ''))='{6}'
  1596. ";
  1597. }
  1598. //审核的到货单
  1599. else if (TransType == TransTypeEnum.DeliveryNotice.GetDescription())
  1600. {
  1601. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1602. FROM ICSWareHouseLotInfoLog a
  1603. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1604. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1605. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1606. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1607. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1608. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1609. WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  1610. and (ISNULL(a.towarehousecode, '') + 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, '') +
  1611. 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, ''))='{6}'
  1612. ";
  1613. }
  1614. //采购拒收
  1615. else if (TransType == TransTypeEnum.PurchaseRejectDoc.GetDescription())
  1616. {
  1617. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1618. FROM ICSWareHouseLotInfoLog a
  1619. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1620. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1621. WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  1622. ";
  1623. }
  1624. //审核的委外到货单
  1625. else if (TransType == TransTypeEnum.ODeliveryNotice.GetDescription())
  1626. {
  1627. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1628. FROM ICSWareHouseLotInfoLog a
  1629. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1630. INNER JOIN ICSODeliveryNotice c ON b.TransCode=c.ODNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1631. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1632. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1633. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1634. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1635. WHERE c.ODNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  1636. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  1637. 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, ''))='{6}'
  1638. ";
  1639. }
  1640. //委外拒收
  1641. else if (TransType == TransTypeEnum.OutsourcingRejectDoc.GetDescription())
  1642. {
  1643. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1644. FROM ICSWareHouseLotInfoLog a
  1645. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1646. INNER JOIN ICSODeliveryNotice c ON b.TransCode=c.ODNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1647. ";
  1648. }
  1649. //采购退货
  1650. else if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
  1651. {
  1652. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1653. FROM ICSWareHouseLotInfoLog a
  1654. INNER JOIN ICSDeliveryNotice c ON a.TransCode=c.DNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1655. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1656. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1657. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1658. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1659. WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.DNType='2' AND a.BusinessCode ='{7}'
  1660. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  1661. 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, ''))='{6}'
  1662. ";
  1663. }
  1664. //委外发料
  1665. else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
  1666. {
  1667. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1668. FROM ICSWareHouseLotInfoLog a
  1669. INNER JOIN ICSOutsourcingOrder y ON a.TransCode=y.OOCode AND a.WorkPoint=y.WorkPoint
  1670. INNER JOIN ICSOOPick x ON x.OODetailID=y.OODetailID AND a.TransSequence=y.Sequence+'~'+x.Sequence AND x.WorkPoint=y.WorkPoint
  1671. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1672. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1673. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1674. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1675. WHERE x.PickID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  1676. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  1677. 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, ''))='{6}'
  1678. ";
  1679. }
  1680. //委外退料
  1681. else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
  1682. || TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
  1683. || TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
  1684. {
  1685. ERPupdate = @"--根据退料单退料
  1686. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1687. FROM ICSWareHouseLotInfoLog a
  1688. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1689. INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1690. INNER JOIN ICSOApplyNeg d ON c.OApplyNegCode=d.OApplyNegCode AND c.WorkPoint=d.WorkPoint
  1691. Left JOIN ICSOIssue m ON (CASE WHEN d.Type='3' THEN c.SourceDetailID ELSE 0 END)=m.IssueDetailID AND c.WorkPoint=m.WorkPoint
  1692. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1693. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1694. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1695. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1696. WHERE ISNULL(m.ApplyDetailID,ISNULL(m.PickID, c.SourceDetailID))='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  1697. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  1698. 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, ''))='{6}'
  1699. --退-
  1700. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1701. FROM ICSWareHouseLotInfoLog a
  1702. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1703. INNER JOIN ICSOutsourcingOrder y ON b.TransCode=y.OOCode AND b.WorkPoint=y.WorkPoint
  1704. INNER JOIN ICSOOPick x ON x.OODetailID=y.OODetailID AND x.WorkPoint=y.WorkPoint AND b.TransSequence = y.Sequence + '~' + x.Sequence
  1705. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1706. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1707. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1708. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1709. WHERE x.PickID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
  1710. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  1711. 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, ''))='{6}'
  1712. --退-
  1713. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1714. FROM ICSWareHouseLotInfoLog a
  1715. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1716. INNER JOIN ICSOApply z ON b.TransCode=z.ApplyCode AND b.TransSequence=z.Sequence AND b.WorkPoint=z.WorkPoint
  1717. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1718. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1719. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1720. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1721. WHERE z.ApplyDetailID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
  1722. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  1723. 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, ''))='{6}'
  1724. --退-
  1725. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1726. FROM ICSWareHouseLotInfoLog a
  1727. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1728. INNER JOIN ICSOIssue m ON b.TransCode=m.IssueCode AND b.TransSequence=m.Sequence AND b.WorkPoint=m.WorkPoint
  1729. LEFT JOIN ICSOOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
  1730. LEFT JOIN ICSOutsourcingOrder y ON x.OODetailID=y.OODetailID AND x.WorkPoint=y.WorkPoint
  1731. LEFT JOIN ICSOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.WorkPoint
  1732. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1733. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1734. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1735. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1736. WHERE ISNULL(m.ApplyDetailID, m.PickID)='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
  1737. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  1738. 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, ''))='{6}'
  1739. ";
  1740. }
  1741. //委外入库
  1742. else if (TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription())
  1743. {
  1744. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1745. FROM ICSWareHouseLotInfoLog a
  1746. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1747. INNER JOIN ICSOutsourcingOrder c ON b.TransCode=c.OOCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1748. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1749. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1750. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1751. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1752. WHERE c.OODetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  1753. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  1754. 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, ''))='{6}'
  1755. ";
  1756. }
  1757. //委外退货
  1758. else if (TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription())
  1759. {
  1760. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1761. FROM ICSWareHouseLotInfoLog a
  1762. INNER JOIN ICSODeliveryNotice c ON a.TransCode=c.ODNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1763. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1764. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1765. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1766. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1767. WHERE c.ODNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.ODNType='2' AND a.BusinessCode ='{7}'
  1768. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  1769. 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, ''))='{6}'
  1770. ";
  1771. }
  1772. //生产发料
  1773. else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
  1774. {
  1775. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1776. FROM ICSWareHouseLotInfoLog a
  1777. INNER JOIN ICSMO y ON a.TransCode=y.MOCode AND a.WorkPoint=y.WorkPoint
  1778. INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND a.TransSequence=y.Sequence+'~'+x.Sequence AND x.WorkPoint=y.WorkPoint
  1779. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1780. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1781. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1782. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1783. WHERE x.PickID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  1784. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  1785. 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, ''))='{6}'
  1786. ";
  1787. }
  1788. //生产退料
  1789. else if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
  1790. || TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
  1791. || TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
  1792. {
  1793. ERPupdate = @"--根据退料单退料
  1794. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1795. FROM ICSWareHouseLotInfoLog a
  1796. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1797. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1798. INNER JOIN ICSMOApplyNeg d ON c.ApplyNegCode=d.ApplyNegCode AND c.WorkPoint=d.WorkPoint
  1799. left JOIN ICSMOIssue m ON (CASE WHEN d.Type='3' THEN c.SourceDetailID ELSE 0 END)=m.IssueDetailID AND c.WorkPoint=m.WorkPoint
  1800. WHERE ISNULL(m.ApplyDetailID, ISNULL(m.PickID, c.SourceDetailID))='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  1801. --退-
  1802. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1803. FROM ICSWareHouseLotInfoLog a
  1804. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1805. INNER JOIN ICSMO y ON b.TransCode=y.MOCode AND b.WorkPoint=y.WorkPoint
  1806. INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint AND b.TransSequence = y.Sequence + '~' + x.Sequence
  1807. WHERE x.PickID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
  1808. --退-
  1809. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1810. FROM ICSWareHouseLotInfoLog a
  1811. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1812. INNER JOIN ICSMOApply z ON b.TransCode=z.ApplyCode AND b.TransSequence=z.Sequence AND b.WorkPoint=z.WorkPoint
  1813. WHERE z.ApplyDetailID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
  1814. --退-
  1815. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1816. FROM ICSWareHouseLotInfoLog a
  1817. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1818. INNER JOIN ICSMOIssue m ON b.TransCode=m.IssueCode AND b.TransSequence=m.Sequence AND b.WorkPoint=m.WorkPoint
  1819. LEFT JOIN ICSMOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
  1820. LEFT JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
  1821. LEFT JOIN ICSMOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.WorkPoint
  1822. WHERE ISNULL(m.ApplyDetailID, m.PickID)='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
  1823. ";
  1824. }
  1825. //生产入库
  1826. else if (TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription())
  1827. {
  1828. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1829. FROM ICSWareHouseLotInfoLog a
  1830. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1831. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1832. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1833. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1834. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1835. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1836. WHERE c.MODetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  1837. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  1838. 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, ''))='{6}'
  1839. ";
  1840. }
  1841. //开立的生产入库单
  1842. else if (TransType == TransTypeEnum.ManufactureReceive.GetDescription())
  1843. {
  1844. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1845. FROM ICSWareHouseLotInfoLog a
  1846. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1847. INNER JOIN ICSManufactureReceive c ON b.TransCode=c.RCVCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1848. WHERE c.RCVID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1' AND a.BusinessCode ='{7}'
  1849. ";
  1850. }
  1851. //销售出库
  1852. else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
  1853. {
  1854. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1855. FROM ICSWareHouseLotInfoLog a
  1856. INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1857. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1858. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1859. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1860. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1861. WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1' AND a.BusinessCode ='{7}'
  1862. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  1863. 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, ''))='{6}'
  1864. ";
  1865. }
  1866. //销售退货
  1867. else if (TransType == TransTypeEnum.SalesShipmentDocNegative.GetDescription())
  1868. {
  1869. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1870. FROM ICSWareHouseLotInfoLog a
  1871. INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1872. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1873. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1874. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1875. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1876. WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2' AND a.BusinessCode ='{7}'
  1877. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  1878. 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, ''))='{6}'
  1879. ";
  1880. }
  1881. //返工工单
  1882. else if (TransType == TransTypeEnum.ReWorkReceiveMo.GetDescription())
  1883. {
  1884. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1885. FROM ICSWareHouseLotInfoLog a
  1886. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1887. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.WorkPoint=c.WorkPoint
  1888. INNER JOIN ICSMOPick d ON d.MODetailID=c.MODetailID AND d.WorkPoint=c.WorkPoint and b.TransSequence=c.Sequence+'-'+d.Sequence
  1889. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1890. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1891. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1892. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1893. WHERE d.PickID='{3}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  1894. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  1895. 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, ''))='{6}'
  1896. ";
  1897. }
  1898. //一步调拨
  1899. else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
  1900. {
  1901. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1902. FROM ICSWareHouseLotInfoLog a
  1903. INNER JOIN ICSTransfer c ON a.TransCode=c.TransferNO AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1904. WHERE c.TransferID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1' AND a.BusinessCode ='{7}'
  1905. ";
  1906. }
  1907. //调拨
  1908. else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
  1909. {
  1910. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1911. FROM ICSWareHouseLotInfoLog a
  1912. INNER JOIN ICSTransfer c ON a.TransCode=c.TransferNO AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1913. WHERE c.TransferID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1' AND a.BusinessCode ='{7}'
  1914. ";
  1915. }
  1916. //两步调出
  1917. else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
  1918. {
  1919. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1920. FROM ICSWareHouseLotInfoLog a
  1921. INNER JOIN ICSOtherOut c ON a.TransCode=c.OutCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1922. INNER JOIN ICSTransfer d ON c.TransferDetailID=d.TransferDetailID AND c.WorkPoint=d.WorkPoint
  1923. WHERE c.OutID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  1924. ";
  1925. }
  1926. //两步调入
  1927. else if (TransType == TransTypeEnum.TwoStepTransferDocIn.GetDescription())
  1928. {
  1929. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1930. FROM ICSWareHouseLotInfoLog a
  1931. INNER JOIN ICSOtherIn b ON a.TransCode=b.InCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  1932. INNER JOIN ICSTransfer c ON b.TransferDetailID=c.TransferDetailID AND b.WorkPoint=c.WorkPoint
  1933. WHERE b.InID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  1934. ";
  1935. }
  1936. //销售退货-原条码
  1937. else if (TransType == TransTypeEnum.SalesReturnBack.GetDescription())
  1938. {
  1939. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1940. FROM ICSWareHouseLotInfoLog a
  1941. INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1942. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1943. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1944. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1945. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1946. WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2' AND a.BusinessCode ='{7}'
  1947. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  1948. 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, ''))='{6}'
  1949. ";
  1950. }
  1951. //其他出库
  1952. else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
  1953. {
  1954. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1955. FROM ICSWareHouseLotInfoLog a
  1956. INNER JOIN ICSOtherOut c ON a.TransCode=c.OutCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1957. WHERE c.OutID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
  1958. ";
  1959. }
  1960. //其他入库
  1961. else if (TransType == TransTypeEnum.OtherInDoc.GetDescription())
  1962. {
  1963. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1964. FROM ICSWareHouseLotInfoLog a
  1965. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1966. INNER JOIN ICSOtherIn c ON b.TransCode=c.InCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1967. WHERE c.InID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  1968. ";
  1969. }
  1970. //拆卸单
  1971. else if (TransType == TransTypeEnum.DisassemblyDoc.GetDescription())
  1972. {
  1973. ERPupdate = @"UPDATE d set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1974. FROM ICSWareHouseLotInfoLog a
  1975. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1976. INNER JOIN ICSDisassemblyDoc c ON b.TransCode=c.DABDOCCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1977. INNER JOIN ICSWareHouseLotInfoLog d ON b.TransCode=d.TransCode AND d.TransSequence='1' AND b.WorkPoint=d.WorkPoint
  1978. WHERE c.DABDOCID='{0}' AND a.Identification='{1}' AND d.ERPUpload='0' AND a.BusinessCode ='{7}'
  1979. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1980. FROM ICSWareHouseLotInfoLog a
  1981. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1982. INNER JOIN ICSDisassemblyDoc c ON b.TransCode=c.DABDOCCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1983. WHERE c.DABDOCID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.DABDOCType='2' AND a.BusinessCode ='{7}'
  1984. ";
  1985. }
  1986. //领料申请单
  1987. else if (TransType == TransTypeEnum.MOApply.GetDescription())
  1988. {
  1989. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  1990. FROM ICSWareHouseLotInfoLog a
  1991. INNER JOIN ICSMOApply c ON a.TransCode=c.ApplyCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  1992. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1993. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1994. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1995. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1996. WHERE c.ApplyDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  1997. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  1998. 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, ''))='{6}'
  1999. ";
  2000. }
  2001. //委外领料申请单
  2002. else if (TransType == TransTypeEnum.OOApply.GetDescription())
  2003. {
  2004. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2005. FROM ICSWareHouseLotInfoLog a
  2006. INNER JOIN ICSOApply c ON a.TransCode=c.ApplyCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2007. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2008. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2009. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2010. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2011. WHERE c.ApplyDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2012. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  2013. 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, ''))='{6}'
  2014. ";
  2015. }
  2016. //开立材料出库
  2017. else if (TransType == TransTypeEnum.MOIssue.GetDescription())
  2018. {
  2019. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2020. FROM ICSWareHouseLotInfoLog a
  2021. INNER JOIN ICSMOIssue c ON a.TransCode=c.IssueCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2022. WHERE c.IssueID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2023. ";
  2024. }
  2025. //开立委外材料出库
  2026. else if (TransType == TransTypeEnum.OOIssue.GetDescription())
  2027. {
  2028. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2029. FROM ICSWareHouseLotInfoLog a
  2030. INNER JOIN ICSOIssue c ON a.TransCode=c.IssueCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2031. WHERE c.IssueID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2032. ";
  2033. }
  2034. //开立红字入库单
  2035. else if (TransType == TransTypeEnum.PurchaseReceive.GetDescription())
  2036. {
  2037. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2038. FROM ICSWareHouseLotInfoLog a
  2039. INNER JOIN ICSPurchaseReceive c ON a.TransCode=c.RCVCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2040. WHERE c.RCVID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2' AND a.BusinessCode ='{7}'
  2041. ";
  2042. }
  2043. //开立委外红字入库单
  2044. else if (TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription())
  2045. {
  2046. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2047. FROM ICSWareHouseLotInfoLog a
  2048. INNER JOIN ICSOutsourcingReceive c ON a.TransCode=c.RCVCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2049. WHERE c.RCVID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2' AND a.BusinessCode ='{7}'
  2050. ";
  2051. }
  2052. //借用
  2053. else if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
  2054. {
  2055. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2056. FROM ICSWareHouseLotInfoLog a
  2057. INNER JOIN ICSBrrow c ON a.TransCode=c.BrrowCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2058. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2059. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2060. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2061. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2062. WHERE c.BrrowDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2063. and (ISNULL(a.fromwarehousecode, '') + 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, '') +
  2064. 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, ''))='{6}'
  2065. ";
  2066. }
  2067. //归还
  2068. else if (TransType == TransTypeEnum.ReturnDoc.GetDescription())
  2069. {
  2070. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2071. FROM ICSWareHouseLotInfoLog a
  2072. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2073. INNER JOIN ICSReturn c ON b.TransCode=c.ReturnCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2074. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2075. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2076. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2077. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2078. WHERE c.ReturnDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2079. and (ISNULL(a.tohwarehousecode, '') + 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, '') +
  2080. 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, ''))='{6}'
  2081. ";
  2082. }
  2083. ERPupdate = string.Format(ERPupdate, SourceDetailID, Identification, ID, DetailID, Code, Sequence, col, BusinessCode);
  2084. if (!DBHelper.ExecuteNonQuery(ERPupdate, cmd))
  2085. {
  2086. throw new Exception(TransType + language.GetNameByCode("WMSAPIInfo175"));//"回写日志失败!");
  2087. }
  2088. }
  2089. catch (Exception ex)
  2090. {
  2091. log.Debug(ex.ToString());
  2092. log.Debug(TransType + Environment.NewLine + ERPupdate);
  2093. throw;
  2094. }
  2095. }
  2096. /// <summary>
  2097. /// 倒冲时子件已领数量回写
  2098. /// </summary>
  2099. public static void DetailQTYUpdate()
  2100. {
  2101. }
  2102. /// <summary>
  2103. /// 生成条码
  2104. /// </summary>
  2105. /// <param name="LotNo"></param>
  2106. /// <param name="Quantity"></param>
  2107. /// <param name="TransCode"></param>
  2108. /// <param name="TransSequence"></param>
  2109. /// <param name="WorkPoint"></param>
  2110. /// <param name="Identification"></param>
  2111. /// <param name="User"></param>
  2112. /// <param name="InvCode"></param>
  2113. /// <param name="BusinessCode"></param>
  2114. /// <param name="ProjectCode"></param>
  2115. /// <param name="BatchCode"></param>
  2116. /// <param name="Version"></param>
  2117. /// <param name="Brand"></param>
  2118. /// <param name="cFree1"></param>
  2119. /// <param name="cFree2"></param>
  2120. /// <param name="cFree3"></param>
  2121. /// <param name="cFree4"></param>
  2122. /// <param name="cFree5"></param>
  2123. /// <param name="cFree6"></param>
  2124. /// <param name="cFree7"></param>
  2125. /// <param name="cFree8"></param>
  2126. /// <param name="cFree9"></param>
  2127. /// <param name="cFree10"></param>
  2128. /// <param name="cmd"></param>
  2129. /// <param name="language"></param>
  2130. public static void CreateLotNo(string LotNo, string Quantity, string TransCode, string TransSequence, string WorkPoint, string Identification, string User, string InvCode, string BusinessCode,
  2131. string ProjectCode, string BatchCode, string Version, string Brand, string cFree1, string cFree2, string cFree3, string cFree4, string cFree5, string cFree6, string cFree7, string cFree8, string cFree9, string cFree10, SqlCommand cmd, Dictionary<string, string> language, string LocationCode, string OLDLotNo)
  2132. {
  2133. try
  2134. {
  2135. String EffectiveEnable = "";
  2136. String Colspan = "";
  2137. String IDD = "";
  2138. int EffectiveDays = 0;
  2139. String Time = "";
  2140. int EffectiveDayss = 0;
  2141. DateTime dtt;
  2142. DateTime now = DateTime.Now;
  2143. string sql = string.Empty;
  2144. //string sql = @"select EffectiveEnable,EffectiveDays from ICSInventory a
  2145. // Left Join ICSMO b ON a.InvCode=b.InvCode and a.WorkPoint = b.WorkPoint
  2146. // where b.MoCode='{0}' and b.WorkPoint='{1}'";
  2147. //sql = string.Format(sql, TransCode, WorkPoint);
  2148. //DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  2149. //if (dt.Rows.Count == 0)
  2150. //{
  2151. // throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
  2152. //}
  2153. //else
  2154. //{
  2155. // EffectiveEnable = dt.Rows[0]["EffectiveEnable"].ToString();
  2156. //EffectiveDays = Convert.ToInt32(dt.Rows[0]["EffectiveDays"]);
  2157. //}
  2158. //EffectiveDayss = Convert.ToInt32(EffectiveDays);
  2159. //if (!EffectiveEnable.Equals("False"))
  2160. //{
  2161. int year = now.Year;
  2162. int month = now.Month;
  2163. int day = now.Day;
  2164. int n = DateTime.DaysInMonth(year, month);
  2165. int k = day + EffectiveDays;
  2166. if (k > n)
  2167. {
  2168. day = EffectiveDays - (n - day);
  2169. month = month + 1;
  2170. if (month > 12)
  2171. {
  2172. month = 1;
  2173. year = year + 1;
  2174. }
  2175. }
  2176. else
  2177. {
  2178. day = day + EffectiveDays;
  2179. }
  2180. Time = year + "-" + month + "-" + day;
  2181. //}
  2182. //else
  2183. //{
  2184. // Time = "2999-12-31 00:00:00.000";
  2185. //}
  2186. dtt = Convert.ToDateTime(Time);
  2187. //检验自由项
  2188. Colspan = ProjectCode + "~" + BatchCode + "~" + Version
  2189. + "~" + Brand + "~" + cFree1
  2190. + "~" + cFree2 + "~" + cFree3 + "~" + cFree4
  2191. + "~" + cFree5 + "~" + cFree6 + "~" + cFree7
  2192. + "~" + cFree8 + "~" + cFree9 + "~" + cFree10;
  2193. sql = @"select ID,Colspan from ICSExtension a
  2194. where Colspan='{0}' and WorkPoint='{1}'";
  2195. sql = string.Format(sql, Colspan, WorkPoint);
  2196. DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
  2197. if (dttt.Rows.Count == 0)
  2198. {
  2199. IDD = Guid.NewGuid().ToString();
  2200. sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
  2201. select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
  2202. sql = string.Format(sql, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, User, WorkPoint, IDD);
  2203. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2204. {
  2205. throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
  2206. }
  2207. }
  2208. else
  2209. {
  2210. IDD = dttt.Rows[0]["ID"].ToString();
  2211. }
  2212. //存入条码表
  2213. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{4}')
  2214. BEGIN
  2215. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  2216. RETURN
  2217. END
  2218. INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
  2219. Quantity,Amount,ExtensionID,Type,PrintTimes,
  2220. LastPrintUser,LastPrintTime,MUSER,MUSERName,MTIME,
  2221. WorkPoint,EATTRIBUTE1)
  2222. SELECT TOP 1 NEWID(),'{0}','{8}',GETDATE(),'{6}',
  2223. '{1}','0','{7}','16',null,
  2224. null,null,'{2}' ,f.F_RealName ,GETDATE(),
  2225. '{4}' ,''
  2226. FROM Sys_SRM_User f
  2227. where f.F_Account='{2}' and f.F_Location='{4}'
  2228. ";
  2229. sql = string.Format(sql, LotNo, Quantity, User, TransCode, WorkPoint, TransSequence, dtt, IDD, InvCode);
  2230. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2231. {
  2232. throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
  2233. }
  2234. ///存入条码关联表
  2235. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{3}')
  2236. BEGIN
  2237. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  2238. RETURN
  2239. END
  2240. INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,
  2241. WorkPoint,EATTRIBUTE1)
  2242. SELECT '{4}','{0}','{1}',f.F_Account ,f.F_RealName,GETDATE(),
  2243. a.WorkPoint,''
  2244. FROM ICSInventoryLot a
  2245. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2246. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  2247. WHERE a.LotNo='{5}' AND a.WorkPoint='{3}'
  2248. ";
  2249. sql = string.Format(sql, TransCode, TransSequence, User, WorkPoint, LotNo, OLDLotNo);
  2250. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2251. {
  2252. throw new Exception(language.GetNameByCode("WMSAPIInfo367"));
  2253. }
  2254. //存入库存表
  2255. sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  2256. SELECT NEWID(),a.LotNo ,e.WarehouseCode,d.LocationCode,a.InvCode ,'0',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
  2257. FROM ICSInventoryLot a
  2258. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2259. --INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2260. INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
  2261. INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
  2262. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  2263. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  2264. sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, LocationCode);
  2265. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2266. {
  2267. throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
  2268. }
  2269. }
  2270. catch (Exception)
  2271. {
  2272. throw;
  2273. }
  2274. }
  2275. /// <summary>
  2276. /// 料架条码绑定
  2277. /// </summary>
  2278. /// <param name="LotNo"></param>
  2279. /// <param name="ContainerCode"></param>
  2280. /// <param name="User"></param>
  2281. /// <param name="WorkPoint"></param>
  2282. /// <param name="cmd"></param>
  2283. /// <param name="language"></param>
  2284. public static void ContainerBind(string LotNo, string ContainerCode, string ContainerType, string LocationCode, string RecomendBinCode, string User, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  2285. {
  2286. try
  2287. {
  2288. ///添加日志
  2289. if (ContainerType != "窄巷道叉车(木托盘)")
  2290. {
  2291. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{3}' AND F_Location='{2}')
  2292. BEGIN
  2293. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{3}") + @"',16,1);
  2294. RETURN
  2295. END
  2296. IF NOT EXISTS (SELECT * FROM ICSContainerLot WHERE ContainerID=
  2297. (SELECT ID FROM ICSContainer WHERE ContainerCode='{1}' AND WorkPoint='{2}'))
  2298. BEGIN
  2299. update ICSContainer set LocationCode='{4}',EATTRIBUTE1='' where ContainerCode='{1}' AND WorkPoint='{2}'
  2300. INSERT INTO ICSContainerLot
  2301. (ID,ContainerID,LotNo,MUSER,MUSERName,WorkPoint,MTIME,EATTRIBUTE1)
  2302. SELECT NEWID(),ID,'{0}','{3}'
  2303. ,(SELECT F_RealName FROM Sys_SRM_User WHERE F_Account='{3}' AND F_Location='{2}'),'{2}',GETDATE(),'{4}' FROM ICSContainer
  2304. WHERE ContainerCode='{1}' AND WorkPoint='{2}'
  2305. END
  2306. ELSE
  2307. BEGIN
  2308. update ICSContainer set LocationCode='{4}',EATTRIBUTE1='' where ContainerCode='{1}' AND WorkPoint='{2}'
  2309. UPDATE ICSContainerLot SET LotNo='{0}' WHERE ContainerID=
  2310. (SELECT ID FROM ICSContainer WHERE ContainerCode='{1}' AND WorkPoint='{2}')
  2311. END
  2312. ";
  2313. sql = string.Format(sql, LotNo, ContainerCode, WorkPoint, User, ContainerType, LocationCode);
  2314. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2315. {
  2316. throw new Exception("容器:" + ContainerCode + "与条码:" + LotNo + "绑定失败!");
  2317. }
  2318. }
  2319. else
  2320. {
  2321. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{3}' AND F_Location='{2}')
  2322. BEGIN
  2323. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{3}") + @"',16,1);
  2324. RETURN
  2325. END
  2326. IF NOT EXISTS (SELECT * FROM ICSContainerLot WHERE ContainerID=
  2327. (SELECT ID FROM ICSContainer WHERE ContainerCode='{1}' AND WorkPoint='{2}'))
  2328. BEGIN
  2329. INSERT INTO ICSContainerLot
  2330. (ID,ContainerID,LotNo,MUSER,MUSERName,WorkPoint,MTIME,EATTRIBUTE1)
  2331. SELECT NEWID(),ID,'{0}','{3}'
  2332. ,(SELECT F_RealName FROM Sys_SRM_User WHERE F_Account='{3}' AND F_Location='{2}'),'{2}',GETDATE(),'{4}' FROM ICSContainer
  2333. WHERE ContainerCode='{1}' AND WorkPoint='{2}'
  2334. END
  2335. ELSE
  2336. BEGIN
  2337. UPDATE ICSContainerLot SET LotNo='{0}' WHERE ContainerID=
  2338. (SELECT ID FROM ICSContainer WHERE ContainerCode='{1}' AND WorkPoint='{2}')
  2339. END
  2340. ";
  2341. sql = string.Format(sql, LotNo, ContainerCode, WorkPoint, User, ContainerType, LocationCode);
  2342. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2343. {
  2344. throw new Exception("容器:" + ContainerCode + "与条码:" + LotNo + "绑定失败!");
  2345. }
  2346. if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadForkLift"]))
  2347. {
  2348. string ForkLiftUrl = System.Configuration.ConfigurationManager.AppSettings["ForkLiftUrl"];
  2349. string Year = DateTime.Now.Year.ToString();
  2350. string Month = DateTime.Now.Month.ToString().PadLeft(2, '0');
  2351. string Day = DateTime.Now.Day.ToString().PadLeft(2, '0');
  2352. string Hour = DateTime.Now.Hour.ToString().PadLeft(2, '0');
  2353. string Minute = DateTime.Now.Minute.ToString().PadLeft(2, '0');
  2354. string Second = DateTime.Now.Second.ToString().PadLeft(2, '0');
  2355. string InspectJosn = "{";
  2356. InspectJosn += "\"ID\":\"" + Year + Month + Day + Hour + Minute + Second + "\",";
  2357. InspectJosn += "\"PalletID\": \"" + ContainerCode + "\",";
  2358. InspectJosn += "\"LaneCode\": \"\",";
  2359. InspectJosn += "\"TaskType\": \"PTWY\",";
  2360. InspectJosn += "\"SourceBin\": \"\",";
  2361. InspectJosn += "\"DestBin\": \"" + RecomendBinCode + "\"";
  2362. InspectJosn += "}";
  2363. RestHelper rest = new RestHelper(ForkLiftUrl, HttpVerb.POST);
  2364. rest.PostData = InspectJosn;
  2365. string strResult = rest.MakeRequest();
  2366. //string resultstr = HTTPHelper.Post(ERPUrl.AGVBineURL, InspectJosn);
  2367. ForkLiftStartTaskResultModel result = JsonConvert.DeserializeObject<ForkLiftStartTaskResultModel>(strResult);
  2368. if (result.Ret == 1)
  2369. {
  2370. sql = @"update ICSContainer set LocationCode='{2}',EATTRIBUTE1='已搬运' where ContainerCode='{0}' AND WorkPoint='{1}'";
  2371. sql = string.Format(sql, ContainerCode, WorkPoint, LocationCode);
  2372. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2373. {
  2374. throw new Exception(language.GetNameByCode("WMSAPIInfo207"));//料架状态更新失败
  2375. }
  2376. }
  2377. else
  2378. {
  2379. throw new Exception(result.RetMsg);
  2380. }
  2381. }
  2382. }
  2383. //else
  2384. //{
  2385. // if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
  2386. // {
  2387. // string Year = DateTime.Now.Year.ToString();
  2388. // string Month = DateTime.Now.Month.ToString().PadLeft(2, '0');
  2389. // string Day = DateTime.Now.Day.ToString().PadLeft(2, '0');
  2390. // string Hour = DateTime.Now.Hour.ToString().PadLeft(2, '0');
  2391. // string Minute = DateTime.Now.Minute.ToString().PadLeft(2, '0');
  2392. // string Second = DateTime.Now.Second.ToString().PadLeft(2, '0');
  2393. // // {
  2394. // // "reqCode":"20230420150602",
  2395. // // "podCode":"200051",
  2396. // // "positionCode":"105670AA130750",
  2397. // // "indBind":"1"
  2398. // //}
  2399. // string InspectJosn = "{";
  2400. // InspectJosn += "\"reqCode\":\"" + Year + Month + Day + Hour + Minute + Second + "\",";
  2401. // InspectJosn += "\"podCode\": \"" + ContainerCode + "\",";
  2402. // InspectJosn += "\"positionCode\": \"" + LocationCode + "\",";
  2403. // InspectJosn += "\"indBind\": \"1\",";
  2404. // InspectJosn += "\"PodDir\": \"0\"";
  2405. // InspectJosn += "}";
  2406. // if (InspectJosn != "")
  2407. // {
  2408. // RestHelper rest = new RestHelper(ERPUrl.AGVBineURL, HttpVerb.POST);
  2409. // rest.PostData = InspectJosn;
  2410. // string strResult = rest.MakeRequest();
  2411. // //string resultstr = HTTPHelper.Post(ERPUrl.AGVBineURL, InspectJosn);
  2412. // AGVPodBindOutputModel result = JsonConvert.DeserializeObject<AGVPodBindOutputModel>(strResult);
  2413. // if (result.code == 0)
  2414. // {
  2415. // sql = @"update ICSContainer set LocationCode='{2}',EATTRIBUTE1='已绑定' where ContainerCode='{0}' AND WorkPoint='{1}'";
  2416. // sql = string.Format(sql, ContainerCode, WorkPoint, LocationCode);
  2417. // if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2418. // {
  2419. // throw new Exception(language.GetNameByCode("WMSAPIInfo207"));//料架状态更新失败
  2420. // }
  2421. // }
  2422. // else
  2423. // {
  2424. // throw new Exception(result.message);
  2425. // }
  2426. // }
  2427. // }
  2428. //}
  2429. }
  2430. catch (Exception)
  2431. {
  2432. throw;
  2433. }
  2434. }
  2435. /// <summary>
  2436. /// 料架条码解绑
  2437. /// </summary>
  2438. /// <param name="ContainerCode"></param>
  2439. /// <param name="WorkPoint"></param>
  2440. /// <param name="cmd"></param>
  2441. /// <param name="language"></param>
  2442. public static void ContainerUnBind(string ContainerCode, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  2443. {
  2444. try
  2445. {
  2446. string datasql = @"select LocationCode from ICSContainer
  2447. where ContainerCode='{0}' and WorkPoint='{1}'";
  2448. datasql = string.Format(datasql, ContainerCode, WorkPoint);
  2449. DataTable datadt = DBHelper.SQlReturnData(datasql, cmd);
  2450. if (datadt.Rows.Count == 0)
  2451. {
  2452. throw new Exception(language.GetNameByCode("WMSAPIInfo207"));
  2453. }
  2454. else
  2455. {
  2456. string LocationCode = datadt.Rows[0]["LocationCode"].ToString();
  2457. string sql = @"delete from ICSContainerLot
  2458. WHERE ContainerID=
  2459. (SELECT ID FROM ICSContainer WHERE ContainerCode='{0}' AND WorkPoint='{1}')";
  2460. sql = string.Format(sql, ContainerCode, WorkPoint);
  2461. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2462. {
  2463. throw new Exception("料架:" + ContainerCode + "解绑失败!");
  2464. }
  2465. //else
  2466. //{
  2467. // if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
  2468. // {
  2469. // AGVPodBindInputModel Info = new AGVPodBindInputModel();
  2470. // Info.reqCode = "5";
  2471. // Info.podCode = ContainerCode;
  2472. // Info.positionCode = LocationCode;
  2473. // Info.indBind = "0";
  2474. // string poststr = JsonConvert.SerializeObject(Info);
  2475. // string resultstr = HTTPHelper.HttpPost("AGV料架解绑", ERPUrl.AGVBineURL, poststr);
  2476. // AGVPodBindOutputModel result = JsonConvert.DeserializeObject<AGVPodBindOutputModel>(resultstr.ToString());
  2477. // if (result.code != 0)
  2478. // {
  2479. // throw new Exception(result.message);
  2480. // }
  2481. // else
  2482. // {
  2483. // sql = @"Update ICSContainer set EATTRIBUTE1='',LocationCode=''
  2484. // WHERE ContainerCode='{0}' AND WorkPoint='{1}'";
  2485. // sql = string.Format(sql, ContainerCode, WorkPoint);
  2486. // if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2487. // {
  2488. // throw new Exception(language.GetNameByCode("WMSAPIInfo207"));//料架状态更新失败
  2489. // }
  2490. // }
  2491. // }
  2492. //}
  2493. }
  2494. }
  2495. catch (Exception)
  2496. {
  2497. throw;
  2498. }
  2499. }
  2500. /// <summary>
  2501. /// 呼叫AGV开始搬运任务
  2502. /// </summary>
  2503. /// <param name="ContainerCode"></param>
  2504. /// <param name="LocationCode"></param>
  2505. /// <param name="User"></param>
  2506. /// <param name="WorkPoint"></param>
  2507. /// <param name="cmd"></param>
  2508. /// <param name="language"></param>
  2509. public static void CallAGVStartTask(string ContainerCode, string TransType, string LocationCode, string User, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  2510. {
  2511. try
  2512. {
  2513. string sql = @"select ContainerCode from ICSContainer
  2514. where LocationCode='{0}' and WorkPoint='{1}'";
  2515. sql = string.Format(sql, ContainerCode, WorkPoint);
  2516. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  2517. if (dt.Rows.Count == 0)
  2518. {
  2519. throw new Exception(language.GetNameByCode("WMSAPIInfo209"));//位置编码未绑定料架
  2520. }
  2521. else
  2522. {
  2523. ContainerCode = dt.Rows[0]["ContainerCode"].ToString();
  2524. }
  2525. if (TransType == "开始任务")
  2526. {
  2527. sql = @"update ICSContainer set EATTRIBUTE1='已搬运' where ContainerCode='{0}' AND WorkPoint='{1}'";
  2528. }
  2529. else
  2530. {
  2531. sql = @"update ICSContainer set EATTRIBUTE1='已绑定' where ContainerCode='{0}' AND WorkPoint='{1}'";
  2532. }
  2533. sql = string.Format(sql, ContainerCode, WorkPoint, LocationCode);
  2534. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2535. {
  2536. throw new Exception(language.GetNameByCode("WMSAPIInfo207"));//料架状态更新失败
  2537. }
  2538. //if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
  2539. //{
  2540. // string Year = DateTime.Now.Year.ToString();
  2541. // string Month = DateTime.Now.Month.ToString().PadLeft(2, '0');
  2542. // string Day = DateTime.Now.Day.ToString().PadLeft(2, '0');
  2543. // string Hour = DateTime.Now.Hour.ToString().PadLeft(2, '0');
  2544. // string Minute = DateTime.Now.Minute.ToString().PadLeft(2, '0');
  2545. // string Second = DateTime.Now.Second.ToString().PadLeft(2, '0');
  2546. // AGVStartTaskModel Info = new AGVStartTaskModel();
  2547. // List<AGVStartTaskLineModel> LineList = new List<AGVStartTaskLineModel>();
  2548. // AGVStartTaskLineModel LineInfo = new AGVStartTaskLineModel();
  2549. // Info.reqCode = Year + Month + Day + Hour + Minute + Second;
  2550. // Info.podCode = ContainerCode;
  2551. // Info.taskTyp = "F01";
  2552. // LineInfo.positionCode = LocationCode;
  2553. // LineInfo.type = "00";
  2554. // LineList.Add(LineInfo);
  2555. // LineInfo = new AGVStartTaskLineModel();
  2556. // LineInfo.positionCode = "1";//目标位置编码待提供
  2557. // LineInfo.type = "04";
  2558. // LineList.Add(LineInfo);
  2559. // Info.positionCodePath = LineList;
  2560. // string poststr = JsonConvert.SerializeObject(Info);
  2561. // string resultstr = HTTPHelper.HttpPost("AGV开始任务", ERPUrl.AGVTaskStart, poststr);
  2562. // AGVStartTaskResultModel result = JsonConvert.DeserializeObject<AGVStartTaskResultModel>(resultstr.ToString());
  2563. // if (result.code == 0)
  2564. // {
  2565. // }
  2566. // else
  2567. // {
  2568. // throw new Exception(result.message);
  2569. // }
  2570. //}
  2571. }
  2572. catch (Exception)
  2573. {
  2574. throw;
  2575. }
  2576. }
  2577. /// <summary>
  2578. /// 获取AGV搬运的目标位置
  2579. /// </summary>
  2580. /// <param name="LocationCode"></param>
  2581. /// <param name="User"></param>
  2582. /// <param name="WorkPoint"></param>
  2583. /// <param name="cmd"></param>
  2584. /// <param name="language"></param>
  2585. public static string GetAGVTaskPosition(string LocationCode, string User, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  2586. {
  2587. try
  2588. {
  2589. string sql = @"select Define1 from Sys_EnumValues
  2590. where EnumKey='00011' AND EnumText='{0}' AND WorkPointCode='{1}'";
  2591. sql = string.Format(sql, LocationCode, WorkPoint);
  2592. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  2593. if (dt.Rows.Count == 0)
  2594. {
  2595. return "";
  2596. }
  2597. else
  2598. {
  2599. return dt.Rows[0]["Define1"].ToString();
  2600. }
  2601. }
  2602. catch (Exception)
  2603. {
  2604. throw;
  2605. }
  2606. }
  2607. }
  2608. }