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

3200 lines
203 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
2 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
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
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
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
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
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
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
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
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
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
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 TransCode, string TransLine, string INVCode, 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. string LotNo = "";
  518. #region 根据传入的料号和数量自动生成条码
  519. if (BusinessCode == "2")
  520. {
  521. string ExtensionID = "";
  522. string Pre = "DN" + TransCode + TransLine;
  523. string PRODUCTDATE = DateTime.Now.ToString();
  524. string lotsql = @"SELECT TOP 1 ISNULL(ExtensionID,'') AS ExtensionID FROM ICSDeliveryNotice WHERE DNCode='{0}' AND WorkPoint='{1}'";
  525. lotsql = string.Format(lotsql, TransCode, WorkPoint);
  526. DataTable lotdt = DBHelper.SQlReturnData(lotsql, cmd);
  527. if (lotdt.Rows.Count != 0)
  528. {
  529. ExtensionID = lotdt.Rows[0]["ExtensionID"].ToString();
  530. }
  531. lotsql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  532. lotsql = string.Format(lotsql, WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  533. LotNo = DBHelper.SQlReturnData(lotsql, cmd).Rows[0][0].ToString();
  534. lotsql = string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  535. Values('{0}','{1}','{2}','{3}','{3}',getdate(),'{4}' )",
  536. LotNo, TransCode, TransLine, User, WorkPoint);
  537. lotsql += string.Format(@"insert into ICSInventoryLot
  538. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  539. select
  540. newid(),'{0}',InvCode,'{1}','2999-12-31 00:00:00.000','{2}','{7}','7','{3}','{3}', getdate(),'{4}',0
  541. from ICSDeliveryNotice where DNCode='{5}' and Sequence='{6}' and WorkPoint='{4}'",
  542. LotNo, PRODUCTDATE, Quantity, User, WorkPoint, TransCode, TransLine, ExtensionID);
  543. if (!DBHelper.ExecuteNonQuery(lotsql, cmd))
  544. {
  545. throw new Exception(language.GetNameByCode("WMSAPIInfo215"));
  546. }
  547. }
  548. else if (BusinessCode == "18")
  549. {
  550. string ExtensionID = "";
  551. string Pre = "KCP" + TransCode + TransLine;
  552. string PRODUCTDATE = DateTime.Now.ToString();
  553. string lotsql = @"SELECT TOP 1 ISNULL(ExtensionID,'') AS ExtensionID FROM ICSManufactureReceive WHERE RCVCode='{0}' AND WorkPoint='{1}'";
  554. lotsql = string.Format(lotsql, TransCode, WorkPoint);
  555. DataTable lotdt = DBHelper.SQlReturnData(lotsql, cmd);
  556. if (lotdt.Rows.Count != 0)
  557. {
  558. ExtensionID = lotdt.Rows[0]["ExtensionID"].ToString();
  559. }
  560. lotsql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  561. lotsql = string.Format(lotsql, WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  562. LotNo = DBHelper.SQlReturnData(lotsql, cmd).Rows[0][0].ToString();
  563. lotsql = string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  564. Values('{0}','{1}','{2}','{3}','{3}',getdate(),'{4}' )",
  565. LotNo, TransCode, TransLine, User, WorkPoint);
  566. lotsql += string.Format(@"insert into ICSInventoryLot
  567. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  568. select
  569. newid(),'{0}',InvCode,'{1}','2999-12-31 00:00:00.000','{2}','{7}','9','{3}','{3}', getdate(),'{4}',0
  570. from ICSManufactureReceive where RCVCode='{5}' and Sequence='{6}' and WorkPoint='{4}'",
  571. LotNo, PRODUCTDATE, Quantity, User, WorkPoint, TransCode, TransLine, ExtensionID);
  572. if (!DBHelper.ExecuteNonQuery(lotsql, cmd))
  573. {
  574. throw new Exception(language.GetNameByCode("WMSAPIInfo215"));
  575. }
  576. }
  577. else if (BusinessCode == "16")
  578. {
  579. string ExtensionID = "";
  580. string Pre = "MA" + TransCode + TransLine;
  581. string PRODUCTDATE = DateTime.Now.ToString();
  582. string lotsql = @"SELECT TOP 1 ISNULL(ExtensionID,'') AS ExtensionID FROM ICSMOApplyNegDetail WHERE ApplyNegCode='{0}' AND WorkPoint='{1}'";
  583. lotsql = string.Format(lotsql, TransCode, WorkPoint);
  584. DataTable lotdt = DBHelper.SQlReturnData(lotsql, cmd);
  585. if (lotdt.Rows.Count != 0)
  586. {
  587. ExtensionID = lotdt.Rows[0]["ExtensionID"].ToString();
  588. }
  589. lotsql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  590. lotsql = string.Format(lotsql, WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  591. LotNo = DBHelper.SQlReturnData(lotsql, cmd).Rows[0][0].ToString();
  592. lotsql = string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  593. Values('{0}','{1}','{2}','{3}','{3}',getdate(),'{4}' )",
  594. LotNo, TransCode, TransLine, User, WorkPoint);
  595. lotsql += string.Format(@"insert into ICSInventoryLot
  596. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  597. select
  598. newid(),'{0}',InvCode,'{1}','2999-12-31 00:00:00.000','{2}','{7}','12','{3}','{3}', getdate(),'{4}',0
  599. from ICSMOApplyNegDetail where ApplyNegCode='{5}' and Sequence='{6}' and WorkPoint='{4}'",
  600. LotNo, PRODUCTDATE, Quantity, User, WorkPoint, TransCode, TransLine, ExtensionID);
  601. if (!DBHelper.ExecuteNonQuery(lotsql, cmd))
  602. {
  603. throw new Exception(language.GetNameByCode("WMSAPIInfo215"));
  604. }
  605. }
  606. #endregion
  607. #region 正常入库
  608. #region 根据传入的货柜机器号找到对应的入库库位和仓库(一个机器号可能对应多个库位,需要根据料号找到对应区域确认唯一的入库库位)
  609. string chksql = @"select F_Define2 AS BinCode,C.WarehouseCode AS WHCode from Sys_SRM_ItemsDetail A
  610. LEFT JOIN ICSLocation B ON B.LocationCode=A.F_Define2 AND B.WorkPoint=A.F_Define4
  611. LEFT JOIN ICSWarehouse C ON C.ID=B.WHID AND C.WorkPoint=B.WorkPoint
  612. where F_Define1='{0}' AND F_ItemName='HG_Location' AND F_Define4='{1}'";
  613. chksql = string.Format(chksql, HGCode, WorkPoint);
  614. DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd);
  615. if (chkdt.Rows.Count == 0)
  616. {
  617. throw new Exception("传入货柜机器号:" + HGCode + "没有维护对应的WMS入库库位!");
  618. }
  619. else
  620. {
  621. #region 根据料号和仓库找到对应的区域
  622. string locationsql = @"";
  623. if (BusinessCode == "2")
  624. {
  625. locationsql = @"select B.LocationCode from ICSDeliveryNotice A
  626. INNER JOIN ICSInventoryDetail B ON B.INVCode=A.InvCode AND B.WHCode=A.WHCode
  627. AND B.WorkPoint=A.WorkPoint
  628. WHERE A.DNCode='{0}' AND A.WorkPoint='{1}'";
  629. }
  630. else if (BusinessCode == "18")
  631. {
  632. locationsql = @"select B.LocationCode from ICSManufactureReceive A
  633. INNER JOIN ICSInventoryDetail B ON B.INVCode=A.InvCode AND B.WHCode=A.WHCode AND B.WorkPoint=A.WorkPoint
  634. WHERE A.RCVCode='{0}' AND A.WorkPoint='{1}'";
  635. }
  636. else if (BusinessCode == "16")
  637. {
  638. locationsql = @"select B.LocationCode from ICSMOApplyNeg A
  639. INNER JOIN ICSMOApplyNegDetail C ON C.ApplyNegCode=A.ApplyNegCode AND C.WorkPoint=A.WorkPoint
  640. INNER JOIN ICSInventoryDetail B ON B.INVCode=C.InvCode AND B.WHCode=C.WHCode AND B.WorkPoint=C.WorkPoint
  641. WHERE A.ApplyNegCode='{0}' AND A.WorkPoint='{1}'";
  642. }
  643. locationsql = string.Format(locationsql, TransCode, WorkPoint);
  644. DataTable locationdt = DBHelper.SQlReturnData(locationsql, cmd);
  645. if (locationdt.Rows.Count == 0)
  646. {
  647. throw new Exception("单据:" + TransCode + "对应仓库及物料没有维护对应的区域,无法入库!");
  648. }
  649. else
  650. {
  651. foreach (DataRow dr in chkdt.Rows)
  652. {
  653. if (dr["BinCode"].ToString().Split('-')[1].ToString() == locationdt.Rows[0]["LocationCode"].ToString())
  654. {
  655. LocationCode = dr["BinCode"].ToString();
  656. WHCode = dr["WHCode"].ToString();
  657. }
  658. }
  659. }
  660. #endregion
  661. }
  662. #endregion
  663. if (LocationCode == "")
  664. {
  665. throw new Exception("传入机器号:" + HGCode + "对应的库位所在区域与单据:"+ TransCode + "对应仓库及物料的所在区域不符,无法入库!");
  666. }
  667. string sql = string.Empty;
  668. sql = @" INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  669. SELECT NEWID(),a.LotNo ,'{4}','{5}',a.InvCode ,'{3}',SYSDATETIME(),'0','{2}','{2}',SYSDATETIME() ,a.WorkPoint ,''
  670. FROM ICSInventoryLot a
  671. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  672. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  673. sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, WHCode, LocationCode);
  674. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  675. {
  676. throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
  677. }
  678. ///添加日志
  679. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  680. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  681. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  682. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  683. MTIME,WorkPoint,EATTRIBUTE1)
  684. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  685. '','',c.WarehouseCode,c.LocationCode,'{6}',
  686. '','0','{4}','{5}','0','',
  687. '','','','{2}','{2}',
  688. SYSDATETIME() ,a.WorkPoint ,''
  689. FROM ICSInventoryLot a
  690. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  691. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  692. --INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  693. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  694. ";
  695. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity);
  696. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  697. {
  698. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  699. }
  700. #endregion
  701. }
  702. catch (Exception)
  703. {
  704. throw;
  705. }
  706. }
  707. /// <summary>
  708. /// 减少库存
  709. /// </summary>
  710. /// <param name="Identification"></param>
  711. /// <param name="TransCode"></param>
  712. /// <param name="TransSequence"></param>
  713. /// <param name="LotNo"></param>
  714. /// <param name="Quantity"></param>
  715. /// <param name="User"></param>
  716. /// <param name="WorkPoint"></param>
  717. /// <param name="TransType"></param>
  718. /// <param name="BusinessCode"></param>
  719. /// <param name="cmd"></param>
  720. public static DataTable WareHouseLotInfoDown(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
  721. string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string MergeID = "")
  722. {
  723. String LotEnable = "";
  724. String PrintEnable = "";
  725. string lotstr = "";
  726. int result = 0;
  727. List<string> NewBarCodeList = new List<string>();
  728. DataTable dtLotno = new DataTable();
  729. DataTable lstDt = new DataTable();
  730. try
  731. {
  732. ///更新库存
  733. string sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  734. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
  735. BEGIN
  736. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  737. RETURN
  738. END";
  739. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  740. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  741. {
  742. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  743. }
  744. //出库后取消占料
  745. sql = @"update b set b.LockQuantity = convert(decimal(18, 6), b.LockQuantity) - convert(decimal(18, 6), c.Quantity)
  746. from dbo.ICSWareHouseLotInfo b
  747. inner join (select sum(Quantity) as Quantity, LotNo from ICSWareHouseLotInfolog where
  748. LotNo='{0}' AND TransCode ='{1}' AND TransSequence='{2}'
  749. and TransType = '15' and WorkPoint = '{3}' group by LotNo) c
  750. on c.LotNo = b.LotNo
  751. DELETE FROM ICSWareHouseLotInfoLog
  752. WHERE LotNo='{0}' AND TransCode='{1}' AND TransSequence='{2}' AND WorkPoint='{3}' AND TransType='15'";
  753. sql = string.Format(sql, LotNo, TransCode, TransSequence, WorkPoint);
  754. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  755. {
  756. //throw new Exception("占料信息解除失败!");//"库存更新失败!");
  757. }
  758. //检验是否分批
  759. sql = @"SELECT b.LotEnable,b.PrintEnable FROM ICSInventoryLot a
  760. LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  761. where a.LotNo='{0}' and a.WorkPoint='{1}'
  762. ";
  763. sql = string.Format(sql, LotNo, WorkPoint);
  764. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  765. if (dt.Rows.Count == 0)
  766. {
  767. throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
  768. }
  769. else
  770. {
  771. LotEnable = dt.Rows[0]["LotEnable"].ToString();
  772. PrintEnable = dt.Rows[0]["PrintEnable"].ToString();
  773. }
  774. if (LotEnable.Equals("True"))
  775. {
  776. ///分批前添加日志
  777. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  778. BEGIN
  779. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  780. RETURN
  781. END
  782. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  783. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  784. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  785. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  786. MTIME,WorkPoint,EATTRIBUTE1)
  787. SELECT NEWID(),'{3}','{7}','{8}',a.LotNo ,a.InvCode ,
  788. c.WarehouseCode,c.LocationCode,'','',c.Quantity+{6},
  789. '','0','{4}','31','0','',
  790. '','','',f.F_Account ,f.F_RealName ,
  791. SYSDATETIME() ,a.WorkPoint ,''
  792. FROM ICSInventoryLot a
  793. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  794. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  795. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  796. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  797. ";
  798. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, TransCode, TransSequence);
  799. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  800. {
  801. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  802. }
  803. #region 获取分批后的条码(lotstr)
  804. sql = @"SELECT TOP 1 LotNO FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}' AND WorkPoint='{1}'
  805. ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
  806. sql = string.Format(sql, LotNo, WorkPoint);
  807. dt = DBHelper.SQlReturnData(sql, cmd);
  808. if (dt.Rows.Count == 0)
  809. {
  810. lotstr = LotNo + "-" + 1;
  811. }
  812. else
  813. {
  814. lotstr = LotNo + "-" + (Convert.ToInt32(dt.Rows[0]["LotNO"].ToString().Split('-')[dt.Rows[0]["LotNO"].ToString().Split('-').Length - 1]) + 1).ToString();
  815. }
  816. NewBarCodeList.Add(lotstr);//将分批后新条码添加到新集合
  817. #endregion
  818. #region 将分批后的条码记录插入条码表,库存表及日志表并将原条码库存数量清零
  819. sql = @"INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
  820. Quantity,Amount,ExtensionID,Type,PrintTimes,
  821. LastPrintUser,LastPrintTime,MUSER,MUSERName,MTIME,
  822. WorkPoint,EATTRIBUTE1)
  823. SELECT TOP 1 NEWID(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,
  824. '{2}',a.Amount,a.ExtensionID,a.Type,a.PrintTimes,
  825. a.LastPrintUser,a.LastPrintTime,a.MUSER ,a.MUSERName ,GETDATE(),
  826. a.WorkPoint ,'{1}'
  827. From ICSInventoryLot a
  828. where a.LotNo='{1}' and a.WorkPoint='{3}'";
  829. sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
  830. cmd.CommandText = sql;
  831. result = cmd.ExecuteNonQuery();
  832. if (result <= 0)
  833. {
  834. throw new Exception(language.GetNameByCode("WMSAPIInfo195"));//条码分批后条码表存入失败!
  835. }
  836. sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  837. select NEWID(),'{0}',WarehouseCode,LocationCode,InvCode,'0',InDate,0
  838. ,MUSER,MUSERName,GETDATE(),'{3}',''
  839. from ICSWareHouseLotInfo
  840. where LotNO='{1}' AND WorkPoint='{3}'";
  841. sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
  842. cmd.CommandText = sql;
  843. result = cmd.ExecuteNonQuery();
  844. if (result <= 0)
  845. {
  846. throw new Exception(language.GetNameByCode("WMSAPIInfo196"));//条码分批后库存表存入失败!
  847. }
  848. //插入条码单据表
  849. sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  850. SELECT '{3}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
  851. FROM ICSInventoryLot a
  852. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  853. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  854. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  855. sql = string.Format(sql, LotNo, WorkPoint, User, lotstr);
  856. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  857. {
  858. throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
  859. }
  860. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  861. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  862. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  863. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  864. MTIME,WorkPoint,EATTRIBUTE1,LogID)
  865. SELECT NEWID(),'{3}','{4}','{5}','{10}' ,a.InvCode ,
  866. c.WarehouseCode,c.LocationCode,'','','{6}',
  867. '','0','{7}','{8}','0','',
  868. '','','',f.F_Account ,f.F_RealName ,
  869. SYSDATETIME() ,a.WorkPoint ,'','{9}'
  870. FROM ICSInventoryLot a
  871. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  872. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  873. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  874. ";
  875. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, lotstr);
  876. cmd.CommandText = sql;
  877. result = cmd.ExecuteNonQuery();
  878. if (result <= 0)
  879. {
  880. throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//条码分批后库存日志表存入失败!
  881. }
  882. if (PrintEnable.Equals("True"))
  883. {
  884. 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
  885. from ICSWareHouseLotInfolog A
  886. left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
  887. left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
  888. left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
  889. where A.lotno like'{0}%' and a.workpoint='{1}'
  890. ";
  891. sql = string.Format(sql, LotNo, WorkPoint);
  892. dtLotno = DBHelper.SQlReturnData(sql, cmd);
  893. lstDt = dtLotno;
  894. }
  895. ///添加日志
  896. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  897. BEGIN
  898. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  899. RETURN
  900. END
  901. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  902. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  903. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  904. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  905. MTIME,WorkPoint,EATTRIBUTE1,MergeID)
  906. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  907. c.WarehouseCode,c.LocationCode,'','',c.Quantity,
  908. '','0','{7}','32','0','',
  909. '','','',f.F_Account ,f.F_RealName ,
  910. SYSDATETIME() ,a.WorkPoint ,'','{9}'
  911. FROM ICSInventoryLot a
  912. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  913. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  914. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  915. ";
  916. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID);
  917. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  918. {
  919. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  920. }
  921. #endregion
  922. }
  923. else
  924. {
  925. NewBarCodeList.Add(LotNo);
  926. ///添加日志
  927. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  928. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  929. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  930. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  931. MTIME,WorkPoint,EATTRIBUTE1,MergeID)
  932. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  933. c.WarehouseCode,c.LocationCode,'','','{6}',
  934. '','0','{7}','{8}','0','',
  935. '','','','{2}','{2}',
  936. SYSDATETIME() ,a.WorkPoint ,'','{9}'
  937. FROM ICSInventoryLot a
  938. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  939. --INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  940. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  941. ";
  942. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID);
  943. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  944. {
  945. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  946. }
  947. }
  948. }
  949. catch (Exception)
  950. {
  951. throw;
  952. }
  953. return lstDt;
  954. }
  955. /// <summary>
  956. /// 减少库存(货柜)
  957. /// </summary>
  958. /// <param name="Identification"></param>
  959. /// <param name="TransCode"></param>
  960. /// <param name="TransSequence"></param>
  961. /// <param name="LotNo"></param>
  962. /// <param name="Quantity"></param>
  963. /// <param name="User"></param>
  964. /// <param name="WorkPoint"></param>
  965. /// <param name="TransType"></param>
  966. /// <param name="BusinessCode"></param>
  967. /// <param name="cmd"></param>
  968. public static DataTable WareHouseLotInfoDownHG(string Identification, string TransCode, string User,
  969. string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string MergeID = "")
  970. {
  971. String LotEnable = "";
  972. String PrintEnable = "";
  973. string lotstr = "";
  974. int result = 0;
  975. DataTable dtLotno = new DataTable();
  976. DataTable lstDt = new DataTable();
  977. try
  978. {
  979. #region 根据占料获取库存条码
  980. string sql = @"select TransSequence,LotNo,Quantity,InvCode from ICSWareHouseLotInfoLog
  981. where TransCode='{0}' and TransType='15' and WorkPoint='{1}'";
  982. sql = string.Format(sql, TransCode, WorkPoint);
  983. DataTable lotdt = DBHelper.SQlReturnData(sql, cmd);
  984. if (lotdt.Rows.Count == 0)
  985. {
  986. throw new Exception("未查询到单据占料信息,无法出库!");
  987. }
  988. #endregion
  989. foreach (DataRow dr in lotdt.Rows)
  990. {
  991. ///更新库存
  992. sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  993. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
  994. BEGIN
  995. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  996. RETURN
  997. END";
  998. sql = string.Format(sql, dr["LotNo"].ToString(), WorkPoint, Convert.ToDecimal(dr["Quantity"]));
  999. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1000. {
  1001. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  1002. }
  1003. //出库后取消占料
  1004. sql = @"update b set b.LockQuantity = convert(decimal(18, 6), b.LockQuantity) - convert(decimal(18, 6), c.Quantity)
  1005. from dbo.ICSWareHouseLotInfo b
  1006. inner join (select sum(Quantity) as Quantity, LotNo from ICSWareHouseLotInfolog where
  1007. LotNo='{0}' AND TransCode ='{1}' AND TransSequence='{2}'
  1008. and TransType = '15' and WorkPoint = '{3}' group by LotNo) c
  1009. on c.LotNo = b.LotNo
  1010. DELETE FROM ICSWareHouseLotInfoLog
  1011. WHERE LotNo='{0}' AND TransCode='{1}' AND TransSequence='{2}' AND WorkPoint='{3}' AND TransType='15'";
  1012. sql = string.Format(sql, dr["LotNo"].ToString(), TransCode, dr["TransSequence"].ToString(), WorkPoint);
  1013. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1014. {
  1015. //throw new Exception("占料信息解除失败!");//"库存更新失败!");
  1016. }
  1017. ///添加日志
  1018. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1019. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1020. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1021. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1022. MTIME,WorkPoint,EATTRIBUTE1,MergeID)
  1023. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  1024. c.WarehouseCode,c.LocationCode,'','','{6}',
  1025. '','0','{7}','{8}','0','',
  1026. '','','','{2}','{2}',
  1027. SYSDATETIME() ,a.WorkPoint ,'','{9}'
  1028. FROM ICSInventoryLot a
  1029. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1030. --INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1031. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  1032. ";
  1033. sql = string.Format(sql, dr["LotNo"].ToString(), WorkPoint, User, Identification, TransCode, dr["TransSequence"].ToString()
  1034. , Convert.ToDecimal(dr["Quantity"]), TransType, BusinessCode, MergeID);
  1035. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1036. {
  1037. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1038. }
  1039. }
  1040. }
  1041. catch (Exception)
  1042. {
  1043. throw;
  1044. }
  1045. return lstDt;
  1046. }
  1047. /// <summary>
  1048. /// 出库单据增加验证,整单全部出库之后删除所有跟单据关联的占料信息,解锁占料数量
  1049. /// </summary>
  1050. /// <param name="TransCode"></param>
  1051. /// <param name="WorkPoint"></param>
  1052. /// <param name="cmd"></param>
  1053. /// <param name="language"></param>
  1054. public static void MaterialOccpyCancel(string TransType, string TransCode, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  1055. {
  1056. try
  1057. {
  1058. //验证单据是否整单出库完成,若已完成,则删除所有相关占料信息并解除占料数量
  1059. bool DocComplete = false;
  1060. string sql = "";
  1061. if (TransType == "采购退货-采购退货单")
  1062. {
  1063. sql = @"select SUM(Quantity) as NeedQTY,SUM(RCVQuantity) AS HasQTY from ICSDeliveryNotice
  1064. where DNCode='{0}' and WorkPoint='{1}'";
  1065. }
  1066. else if (TransType == "生产发料-领料申请单")
  1067. {
  1068. sql = @"select SUM(Quantity) as NeedQTY,SUM(IssueQuantity) AS HasQTY from ICSMOApply
  1069. where ApplyCode='{0}' and WorkPoint='{1}'";
  1070. }
  1071. else if (TransType == "委外发料-委外领料申请单")
  1072. {
  1073. sql = @"select SUM(Quantity) as NeedQTY,SUM(IssueQuantity) AS HasQTY from ICSOApply
  1074. where ApplyCode='{0}' and WorkPoint='{1}'";
  1075. }
  1076. else if (TransType == "销售发货-销售发货单")
  1077. {
  1078. sql = @"select SUM(Quantity) as NeedQTY,SUM(SDNQuantity) AS HasQTY from ICSSDN
  1079. where SDNCode='{0}' and WorkPoint='{1}'";
  1080. }
  1081. else if (TransType == "杂发")
  1082. {
  1083. sql = @"select SUM(Quantity) as NeedQTY,SUM(OutQuantity) AS HasQTY from ICSOtherOut
  1084. where OutCode='{0}' and WorkPoint='{1}'";
  1085. }
  1086. sql = string.Format(sql, TransCode, WorkPoint);
  1087. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  1088. if (dt.Rows.Count != 0)
  1089. {
  1090. if (Convert.ToDecimal(dt.Rows[0]["NeedQTY"]) == Convert.ToDecimal(dt.Rows[0]["HasQTY"]))
  1091. {
  1092. DocComplete = true;
  1093. }
  1094. }
  1095. if (DocComplete == true)
  1096. {
  1097. sql = @"select LotNo,Quantity from ICSWareHouseLotInfoLog
  1098. where TransCode='{0}' AND WorkPoint='{1}' and TransType=15";
  1099. sql = string.Format(sql, TransCode, WorkPoint);
  1100. dt = DBHelper.SQlReturnData(sql, cmd);
  1101. foreach (DataRow dr in dt.Rows)
  1102. {
  1103. sql += @" update ICSWareHouseLotInfo set LockQuantity=CONVERT(decimal(18,6),LockQuantity)-{0}
  1104. where LotNo='{1}' AND WorkPoint='{2}' ";
  1105. sql = string.Format(sql, dr["Quantity"].ToString(), dr["LotNo"].ToString(), WorkPoint);
  1106. }
  1107. DBHelper.ExecuteNonQuery(sql, cmd);
  1108. sql = @"DELETE FROM ICSWareHouseLotInfoLog
  1109. WHERE TransType=15 AND TransCode='{0}' AND WorkPoint='{1}'";
  1110. sql = string.Format(sql, TransCode, WorkPoint);
  1111. DBHelper.ExecuteNonQuery(sql, cmd);
  1112. }
  1113. }
  1114. catch (Exception)
  1115. {
  1116. throw;
  1117. }
  1118. }
  1119. /// <summary>
  1120. /// 减少库存(无条码领料)
  1121. /// </summary>
  1122. /// <param name="Identification"></param>
  1123. /// <param name="TransCode"></param>
  1124. /// <param name="TransSequence"></param>
  1125. /// <param name="LotNo"></param>
  1126. /// <param name="Quantity"></param>
  1127. /// <param name="User"></param>
  1128. /// <param name="WorkPoint"></param>
  1129. /// <param name="TransType"></param>
  1130. /// <param name="BusinessCode"></param>
  1131. /// <param name="cmd"></param>
  1132. public static DataTable WareHouseLotInfoDownWithOutLot(string Identification, string TransCode, string User,
  1133. string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string MergeID = "")
  1134. {
  1135. String LotEnable = "";
  1136. String PrintEnable = "";
  1137. string lotstr = "";
  1138. int result = 0;
  1139. List<string> NewBarCodeList = new List<string>();
  1140. DataTable dtLotno = new DataTable();
  1141. DataTable lstDt = new DataTable();
  1142. try
  1143. {
  1144. #region 根据单据获得占料信息
  1145. string docsql = @"select TransSequence,LotNo,Quantity,InvCode from ICSWareHouseLotInfoLog
  1146. where TransCode='{0}' and TransType='15' and WorkPoint='{1}'";
  1147. docsql = string.Format(docsql, TransCode, WorkPoint);
  1148. DataTable docdt = DBHelper.SQlReturnData(docsql, cmd);
  1149. #endregion
  1150. foreach (DataRow dr in docdt.Rows)
  1151. {
  1152. string INVCode = dr["InvCode"].ToString();
  1153. decimal lotQuantity = Convert.ToDecimal(dr["Quantity"]);
  1154. string DocLineNO = dr["TransSequence"].ToString();
  1155. string LotNO = dr["LotNo"].ToString();
  1156. ///更新库存
  1157. string sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  1158. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
  1159. BEGIN
  1160. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  1161. RETURN
  1162. END";
  1163. sql = string.Format(sql, LotNO, WorkPoint, lotQuantity);
  1164. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1165. {
  1166. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  1167. }
  1168. ///添加日志
  1169. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1170. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1171. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1172. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1173. MTIME,WorkPoint,EATTRIBUTE1,MergeID)
  1174. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  1175. c.WarehouseCode,c.LocationCode,'','','{6}',
  1176. '','0','{7}','{8}','0','',
  1177. '','','','{2}','{2}',
  1178. SYSDATETIME() ,a.WorkPoint ,'','{9}'
  1179. FROM ICSInventoryLot a
  1180. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1181. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  1182. sql = string.Format(sql, LotNO, WorkPoint, User, Identification, TransCode, DocLineNO, lotQuantity, TransType, BusinessCode, MergeID);
  1183. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1184. {
  1185. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1186. }
  1187. }
  1188. //出库后取消占料
  1189. string cancelsql = @"update b set b.LockQuantity = convert(decimal(18, 6), b.LockQuantity) - convert(decimal(18, 6), c.Quantity)
  1190. from dbo.ICSWareHouseLotInfo b
  1191. inner join (select sum(Quantity) as Quantity, LotNo from ICSWareHouseLotInfolog where TransCode ='{0}'
  1192. and TransType = '15' and WorkPoint = '{1}' group by LotNo) c
  1193. on c.LotNo = b.LotNo
  1194. DELETE FROM ICSWareHouseLotInfoLog
  1195. WHERE TransCode='{0}' AND WorkPoint='{1}' AND TransType='15'";
  1196. cancelsql = string.Format(cancelsql, TransCode, WorkPoint);
  1197. if (!DBHelper.ExecuteNonQuery(cancelsql, cmd))
  1198. {
  1199. //throw new Exception("占料信息解除失败!");//"库存更新失败!");
  1200. }
  1201. }
  1202. catch (Exception)
  1203. {
  1204. throw;
  1205. }
  1206. return lstDt;
  1207. }
  1208. /// <summary>
  1209. /// 修改库存
  1210. /// </summary>
  1211. /// <param name="Identification"></param>
  1212. /// <param name="TransCode"></param>
  1213. /// <param name="TransSequence"></param>
  1214. /// <param name="LotNo"></param>
  1215. /// <param name="Quantity"></param>
  1216. /// <param name="User"></param>
  1217. /// <param name="WorkPoint"></param>
  1218. /// <param name="TransType"></param>
  1219. /// <param name="cmd"></param>
  1220. public static void WareHouseLotInfoUpdate(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
  1221. string WorkPoint, string TransType, string CheckKind, SqlCommand cmd, Dictionary<string, string> language)
  1222. {
  1223. try
  1224. {
  1225. ///添加日志
  1226. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  1227. BEGIN
  1228. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  1229. RETURN
  1230. END
  1231. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1232. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1233. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1234. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1235. MTIME,WorkPoint,EATTRIBUTE1)
  1236. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  1237. a.WarehouseCode,a.LocationCode,'','',a.Quantity,
  1238. '{8}','0','{6}','{7}','0','',
  1239. '','','',f.F_Account ,f.F_RealName ,
  1240. SYSDATETIME() ,a.WorkPoint ,''
  1241. FROM ICSWareHouseLotInfo a
  1242. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1243. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  1244. ";
  1245. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, TransTypeEnum.LOTCheckBefore.GetDescription<DBValue>(), CheckKind);
  1246. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1247. {
  1248. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1249. }
  1250. ///更新库存
  1251. sql = @"UPDATE ICSWareHouseLotInfo SET Quantity='{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'";
  1252. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  1253. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1254. {
  1255. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  1256. }
  1257. ///添加日志
  1258. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1259. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1260. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1261. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1262. MTIME,WorkPoint,EATTRIBUTE1)
  1263. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  1264. a.WarehouseCode,a.LocationCode,'','',a.Quantity,
  1265. '{8}','0','{6}','{7}','0','',
  1266. '','','',f.F_Account ,f.F_RealName ,
  1267. SYSDATETIME() ,a.WorkPoint ,''
  1268. FROM ICSWareHouseLotInfo a
  1269. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1270. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  1271. ";
  1272. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, TransTypeEnum.LOTCheckAfter.GetDescription<DBValue>(), CheckKind);
  1273. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1274. {
  1275. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1276. }
  1277. }
  1278. catch (Exception)
  1279. {
  1280. throw;
  1281. }
  1282. }
  1283. /// <summary>
  1284. /// 调拨
  1285. /// </summary>
  1286. /// <param name="LocationCode"></param>
  1287. /// <param name="LotNo"></param>
  1288. /// <param name="Quantity"></param>
  1289. /// <param name="User"></param>
  1290. /// <param name="WorkPoint"></param>
  1291. /// <param name="TransType"></param>
  1292. /// <param name="BusinessCode"></param>
  1293. /// <param name="cmd"></param>
  1294. public static DataTable WareHouseLotInfoTransfer(string Identification, string TransCode, string TransSequence, string WarehouseCode, string LocationCode,
  1295. string LotNo, string Quantity, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string MergeID)
  1296. {
  1297. bool? LotEnable = null;
  1298. String PrintEnable = "";
  1299. string lotstr = "";
  1300. int result = 0;
  1301. DataTable dtLotno = new DataTable();
  1302. DataTable lstDt = new DataTable();
  1303. List<string> NewBarCodeList = new List<string>();
  1304. try
  1305. {
  1306. var tranferWorkpoint = string.Empty;
  1307. var checksql = $@"SELECT
  1308. top 1 a.EATTRIBUTE1
  1309. FROM
  1310. ICSTransfer a
  1311. WHERE
  1312. TransferNO = '{TransCode}'
  1313. AND Sequence = '{TransSequence}'
  1314. AND WorkPoint = '{WorkPoint}'
  1315. AND Type = '{TransType}'";
  1316. var workPoint = DBHelper.ExecuteScalar(checksql, cmd).ToString();
  1317. if (workPoint == null || workPoint == "")
  1318. {
  1319. tranferWorkpoint = WorkPoint;
  1320. }
  1321. else
  1322. {
  1323. tranferWorkpoint = workPoint.ToString();
  1324. }
  1325. #region 先删除条码的占料信息
  1326. string sql = @" update b set b.LockQuantity = convert(decimal(18, 6), b.LockQuantity) - convert(decimal(18, 6), c.Quantity)
  1327. from dbo.ICSWareHouseLotInfo b
  1328. inner join (select sum(Quantity) as Quantity, LotNo from ICSWareHouseLotInfolog where
  1329. LotNo='{0}' AND TransCode ='{1}' AND TransSequence='{2}'
  1330. and TransType = '15' and WorkPoint = '{3}' group by LotNo) c
  1331. on c.LotNo = b.LotNo
  1332. delete from ICSWareHouseLotInfoLog
  1333. where LotNo='{0}' and TransCode='{1}' and TransSequence='{2}' and WorkPoint='{3}' and TransType=15";
  1334. sql = string.Format(sql, LotNo, TransCode, TransSequence, WorkPoint);
  1335. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1336. {
  1337. //throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1338. }
  1339. #endregion
  1340. ///分批前添加日志
  1341. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  1342. BEGIN
  1343. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  1344. RETURN
  1345. END
  1346. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1347. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1348. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1349. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1350. MTIME,WorkPoint,EATTRIBUTE1)
  1351. SELECT NEWID(),'{3}','{7}','{8}',a.LotNo ,a.InvCode ,
  1352. c.WarehouseCode,c.LocationCode,'','',c.Quantity,
  1353. '','0','{4}','31','0','',
  1354. '','','',f.F_Account ,f.F_RealName ,
  1355. SYSDATETIME() ,'{1}' ,'{9}'
  1356. FROM ICSInventoryLot a
  1357. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1358. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1359. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1360. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  1361. ";
  1362. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, TransCode, TransSequence, tranferWorkpoint);
  1363. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1364. {
  1365. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1366. }
  1367. ///更新库存
  1368. sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}',--LocationCode = '{3}',
  1369. WorkPoint ='{4}' WHERE LotNo='{0}' AND WorkPoint='{1}';
  1370. UPDATE ICSInventoryLot SET WorkPoint='{4}' WHERE LotNo='{0}' AND WorkPoint='{1}';
  1371. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
  1372. BEGIN
  1373. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  1374. RETURN
  1375. END";
  1376. sql = string.Format(sql, LotNo, WorkPoint, Quantity, LocationCode, tranferWorkpoint);
  1377. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1378. {
  1379. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  1380. }
  1381. #region 获取分批后的条码(lotstr)
  1382. sql = @"SELECT TOP 1 LotNO FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}' AND WorkPoint='{1}'
  1383. ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
  1384. sql = string.Format(sql, LotNo, tranferWorkpoint);
  1385. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  1386. if (dt.Rows.Count == 0)
  1387. {
  1388. lotstr = LotNo + "-" + 1;
  1389. }
  1390. else
  1391. {
  1392. lotstr = LotNo + "-" + (Convert.ToInt32(dt.Rows[0]["LotNO"].ToString().Split('-')[dt.Rows[0]["LotNO"].ToString().Split('-').Length - 1]) + 1).ToString();
  1393. }
  1394. NewBarCodeList.Add(lotstr);//将分批后新条码添加到新集合
  1395. #endregion
  1396. #region 将分批后的条码记录插入条码表,库存表及日志表并将原条码库存数量清零
  1397. sql = @"INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
  1398. Quantity,Amount,ExtensionID,Type,PrintTimes,
  1399. LastPrintUser,LastPrintTime,MUSER,MUSERName,MTIME,
  1400. WorkPoint,EATTRIBUTE1)
  1401. SELECT TOP 1 NEWID(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,
  1402. '{2}',a.Amount,a.ExtensionID,a.Type,a.PrintTimes,
  1403. a.LastPrintUser,a.LastPrintTime,a.MUSER ,a.MUSERName ,GETDATE(),
  1404. '{3}' ,'{1}'
  1405. From ICSInventoryLot a
  1406. where a.LotNo='{1}' and a.WorkPoint='{3}'";
  1407. sql = string.Format(sql, lotstr, LotNo, Quantity, tranferWorkpoint);
  1408. cmd.CommandText = sql;
  1409. result = cmd.ExecuteNonQuery();
  1410. if (result <= 0)
  1411. {
  1412. throw new Exception(language.GetNameByCode("WMSAPIInfo195"));//条码分批后条码表存入失败!
  1413. }
  1414. #endregion
  1415. sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  1416. select NEWID(),'{0}','{4}','{5}',InvCode,'{2}',InDate,0
  1417. ,MUSER,MUSERName,GETDATE(),'{3}',''
  1418. from ICSWareHouseLotInfo
  1419. where LotNO='{1}' AND WorkPoint='{3}'";
  1420. sql = string.Format(sql, lotstr, LotNo, Quantity, tranferWorkpoint, WarehouseCode, LocationCode);
  1421. cmd.CommandText = sql;
  1422. result = cmd.ExecuteNonQuery();
  1423. if (result <= 0)
  1424. {
  1425. throw new Exception(language.GetNameByCode("WMSAPIInfo196"));//条码分批后库存表存入失败!
  1426. }
  1427. //插入条码单据表
  1428. sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  1429. SELECT '{0}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,'{1}'
  1430. FROM ICSInventoryLot a
  1431. INNER JOIN ICSInventoryLotDetail b ON b.LotNo='{3}' AND a.WorkPoint=b.WorkPoint
  1432. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1433. WHERE a.LotNo='{3}' AND a.WorkPoint='{1}'";
  1434. sql = string.Format(sql, lotstr, tranferWorkpoint, User, LotNo);
  1435. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1436. {
  1437. throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
  1438. }
  1439. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1440. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1441. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1442. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1443. MTIME,WorkPoint,EATTRIBUTE1,LogID)
  1444. SELECT NEWID(),'{3}','{4}','{5}','{10}' ,a.InvCode ,
  1445. c.WarehouseCode,c.LocationCode,'{11}','{12}','{6}',
  1446. '','0','{7}','{8}','0','',
  1447. '','','',f.F_Account ,f.F_RealName ,
  1448. SYSDATETIME() ,'{1}' ,'{13}','{9}'
  1449. FROM ICSInventoryLot a
  1450. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1451. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1452. WHERE a.LotNo='{0}' AND a.WorkPoint='{13}'
  1453. ";
  1454. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, lotstr, WarehouseCode, LocationCode, tranferWorkpoint);
  1455. cmd.CommandText = sql;
  1456. result = cmd.ExecuteNonQuery();
  1457. if (result <= 0)
  1458. {
  1459. throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//条码分批后库存日志表存入失败!
  1460. }
  1461. ///添加日志
  1462. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  1463. BEGIN
  1464. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  1465. RETURN
  1466. END
  1467. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1468. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1469. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1470. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1471. MTIME,WorkPoint,EATTRIBUTE1,MergeID)
  1472. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  1473. c.WarehouseCode,c.LocationCode,'','',c.Quantity,
  1474. '','0','{7}','32','0','',
  1475. '','','',f.F_Account ,f.F_RealName ,
  1476. SYSDATETIME() ,'{1}' ,'{10}','{9}'
  1477. FROM ICSInventoryLot a
  1478. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1479. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1480. WHERE a.LotNo='{0}' AND a.WorkPoint='{10}'
  1481. ";
  1482. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, tranferWorkpoint);
  1483. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1484. {
  1485. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1486. }
  1487. if (PrintEnable.Equals("True"))
  1488. {
  1489. sql = @"select A.LotNO , C.Quantity AS OLDLotQty, B.Quantity AS LotQty ,b.InvCode,d.INVSTD,d.INVNAME,b.MTIME,A.TransCode
  1490. from ICSWareHouseLotInfolog A
  1491. left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
  1492. left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
  1493. left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
  1494. where (a.BusinessCode ='{2}' or a.BusinessCode='32')
  1495. and A.lotno like '{0}%' and a.workpoint='{1}'
  1496. and a.TransCode='{3}' and a.TransSequence='{4}'
  1497. ";
  1498. sql = string.Format(sql, LotNo, WorkPoint, BusinessCode, TransCode, TransSequence);
  1499. dtLotno = DBHelper.SQlReturnData(sql, cmd);
  1500. lstDt = dtLotno;
  1501. }
  1502. #region 整单验证,如果单据全部完成,整单删除占料信息
  1503. bool DocComplete = false;
  1504. sql = @"select SUM(Quantity) as NeedQTY,SUM(TransferQuantity) AS HasQTY from ICSTransfer
  1505. where TransferNO='{0}' and WorkPoint='{1}'";
  1506. sql = string.Format(sql, TransCode, WorkPoint);
  1507. DataTable chkdt = DBHelper.SQlReturnData(sql, cmd);
  1508. if (dt.Rows.Count != 0)
  1509. {
  1510. if (Convert.ToDecimal(chkdt.Rows[0]["NeedQTY"]) == Convert.ToDecimal(chkdt.Rows[0]["HasQTY"]))
  1511. {
  1512. DocComplete = true;
  1513. }
  1514. }
  1515. if (DocComplete == true)
  1516. {
  1517. sql = @"select LotNo,Quantity from ICSWareHouseLotInfoLog
  1518. where TransCode='{0}' AND WorkPoint='{1}' and TransType=15";
  1519. sql = string.Format(sql, TransCode, WorkPoint);
  1520. dt = DBHelper.SQlReturnData(sql, cmd);
  1521. foreach (DataRow dr in dt.Rows)
  1522. {
  1523. sql += @" update ICSWareHouseLotInfo set LockQuantity=CONVERT(decimal(18,6),LockQuantity)-{0}
  1524. where LotNo='{1}' AND WorkPoint='{2}' ";
  1525. sql = string.Format(sql, dr["Quantity"].ToString(), dr["LotNo"].ToString(), WorkPoint);
  1526. }
  1527. DBHelper.ExecuteNonQuery(sql, cmd);
  1528. sql = @"DELETE FROM ICSWareHouseLotInfoLog
  1529. WHERE TransType=15 AND TransCode='{0}' AND WorkPoint='{1}'";
  1530. sql = string.Format(sql, TransCode, WorkPoint);
  1531. DBHelper.ExecuteNonQuery(sql, cmd);
  1532. }
  1533. #endregion
  1534. }
  1535. catch (Exception)
  1536. {
  1537. throw;
  1538. }
  1539. return lstDt;
  1540. }
  1541. /// <summary>
  1542. /// 移库
  1543. /// </summary>
  1544. /// <param name="LocationCode"></param>
  1545. /// <param name="LotNo"></param>
  1546. /// <param name="Quantity"></param>
  1547. /// <param name="User"></param>
  1548. /// <param name="WorkPoint"></param>
  1549. /// <param name="TransType"></param>
  1550. /// <param name="BusinessCode"></param>
  1551. /// <param name="cmd"></param>
  1552. public static void WareHouseLotInfoLibrary(string Identification, string TransCode, string TransSequence, string WarehouseCode, string LocationCode,
  1553. string LotNo, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  1554. {
  1555. try
  1556. {
  1557. string sql = @"SELECT WarehouseCode FROM ICSWareHouseLotInfo a WHERE LotNo='{0}' AND WorkPoint='{1}'";
  1558. sql = string.Format(sql, LotNo, WorkPoint);
  1559. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  1560. if (dt == null || dt.Rows.Count <= 0)
  1561. {
  1562. throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo171"), LotNo));
  1563. }
  1564. string whcode = dt.Rows[0]["WarehouseCode"].ToString();
  1565. ///添加日志
  1566. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  1567. BEGIN
  1568. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  1569. RETURN
  1570. END
  1571. IF('" + whcode + @"' != '{8}')
  1572. BEGIN
  1573. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo394"), "{8}", whcode) + @"', 16, 1);
  1574. RETURN
  1575. END
  1576. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1577. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1578. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1579. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1580. MTIME,WorkPoint,EATTRIBUTE1)
  1581. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  1582. c.WarehouseCode,c.LocationCode,'{8}','{9}',c.Quantity,
  1583. '','0','{6}','{7}','0','',
  1584. '','','',f.F_Account ,f.F_RealName ,
  1585. SYSDATETIME() ,a.WorkPoint ,''
  1586. FROM ICSInventoryLot a
  1587. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1588. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1589. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  1590. ";
  1591. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, BusinessCode, WarehouseCode, LocationCode);
  1592. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1593. {
  1594. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1595. }
  1596. ///添加库存
  1597. sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity>0)
  1598. BEGIN
  1599. RAISERROR('" + language.GetNameByCode("WMSAPIInfo038") + @"',16,1);
  1600. RETURN
  1601. END
  1602. IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.WarehouseCode='{2}')
  1603. BEGIN
  1604. RAISERROR('" + language.GetNameByCode("WMSAPIInfo038") + @"',16,1);
  1605. RETURN
  1606. END
  1607. UPDATE ICSWareHouseLotInfo SET WarehouseCode='{2}',LocationCode='{3}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  1608. ";
  1609. sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode);
  1610. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1611. {
  1612. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存表更新失败!");
  1613. }
  1614. }
  1615. catch (Exception)
  1616. {
  1617. throw;
  1618. }
  1619. }
  1620. /// <summary>
  1621. /// 两步调入
  1622. /// </summary>
  1623. /// <param name="LocationCode"></param>
  1624. /// <param name="LotNo"></param>
  1625. /// <param name="Quantity"></param>
  1626. /// <param name="User"></param>
  1627. /// <param name="WorkPoint"></param>
  1628. /// <param name="TransType"></param>
  1629. /// <param name="BusinessCode"></param>
  1630. /// <param name="cmd"></param>
  1631. public static void WareHouseLotInfoTwoStepTransferDocIn(string Identification, string TransCode, string TransSequence, string WarehouseCode,
  1632. string LocationCode, string LotNo, string Quantity, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  1633. {
  1634. try
  1635. {
  1636. ///添加日志
  1637. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  1638. BEGIN
  1639. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  1640. RETURN
  1641. END
  1642. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1643. ToWarehouseCode,ToLocationCode,Quantity,
  1644. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1645. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1646. MTIME,WorkPoint,EATTRIBUTE1)
  1647. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  1648. '{9}','{10}','{6}',
  1649. '','0','{7}','{8}','0','',
  1650. '','','',f.F_Account ,f.F_RealName ,
  1651. SYSDATETIME() ,a.WorkPoint ,''
  1652. FROM ICSInventoryLot a
  1653. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1654. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1655. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  1656. ";
  1657. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, WarehouseCode, LocationCode);
  1658. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1659. {
  1660. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1661. }
  1662. ///添加库存
  1663. sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  1664. BEGIN
  1665. RAISERROR('" + language.GetNameByCode("WMSAPIInfo171") + @"',16,1);
  1666. RETURN
  1667. END
  1668. UPDATE ICSWareHouseLotInfo SET WarehouseCode='{2}',LocationCode='{3}',Quantity=Quantity+'{4}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  1669. ";
  1670. sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode, Quantity);
  1671. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1672. {
  1673. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存表更新失败!");
  1674. }
  1675. }
  1676. catch (Exception)
  1677. {
  1678. throw;
  1679. }
  1680. }
  1681. /// <summary>
  1682. /// 拆分、合并日志
  1683. /// </summary>
  1684. /// <param name="Identification"></param>
  1685. /// <param name="LotNo"></param>
  1686. /// <param name="User"></param>
  1687. /// <param name="WorkPoint"></param>
  1688. /// <param name="TransType"></param>
  1689. /// <param name="BusinessCode"></param>
  1690. /// <param name="cmd"></param>
  1691. public static DataTable WareHouseLotInfoLog(string Identification, string LotNo, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  1692. {
  1693. String LotEnable = "";
  1694. String PrintEnable = "";
  1695. DataTable dtLotno = new DataTable();
  1696. DataTable lstDt = new DataTable();
  1697. try
  1698. {
  1699. //检验是否分批
  1700. string sql = @"SELECT b.LotEnable,b.PrintEnable FROM ICSInventoryLot a
  1701. LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  1702. where a.LotNo='{0}' and a.WorkPoint='{1}'
  1703. ";
  1704. sql = string.Format(sql, LotNo, WorkPoint);
  1705. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  1706. if (dt.Rows.Count == 0)
  1707. {
  1708. throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
  1709. }
  1710. else
  1711. {
  1712. LotEnable = dt.Rows[0]["LotEnable"].ToString();
  1713. PrintEnable = dt.Rows[0]["PrintEnable"].ToString();
  1714. }
  1715. ///添加日志
  1716. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  1717. BEGIN
  1718. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  1719. RETURN
  1720. END
  1721. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1722. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1723. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1724. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1725. MTIME,WorkPoint,EATTRIBUTE1)
  1726. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  1727. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  1728. '','0','{4}','{5}','0','',
  1729. '','','',f.F_Account ,f.F_RealName ,
  1730. SYSDATETIME() ,a.WorkPoint ,''
  1731. FROM ICSInventoryLot a
  1732. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1733. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1734. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1735. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  1736. ";
  1737. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode);
  1738. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1739. {
  1740. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1741. }
  1742. if (PrintEnable.Equals("True"))
  1743. {
  1744. sql = @"select A.LotNO , C.Quantity AS OLDLotQty, B.Quantity AS LotQty ,b.InvCode,d.INVSTD,d.INVNAME,b.MTIME,A.TransCode
  1745. from ICSWareHouseLotInfolog A
  1746. left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
  1747. left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
  1748. left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
  1749. where a.BusinessCode='32'
  1750. and A.lotno like '{0}%' and a.workpoint='{1}'
  1751. ";
  1752. sql = string.Format(sql, LotNo, WorkPoint, BusinessCode);
  1753. dtLotno = DBHelper.SQlReturnData(sql, cmd);
  1754. lstDt = dtLotno;
  1755. }
  1756. }
  1757. catch (Exception)
  1758. {
  1759. throw;
  1760. }
  1761. return lstDt;
  1762. }
  1763. /// <summary>
  1764. /// 合并
  1765. /// </summary>
  1766. /// <param name="Identification"></param>
  1767. /// <param name="LotNo"></param>
  1768. /// <param name="User"></param>
  1769. /// <param name="WorkPoint"></param>
  1770. /// <param name="TransType"></param>
  1771. /// <param name="BusinessCode"></param>
  1772. /// <param name="cmd"></param>
  1773. public static void WareHouseLotInfoMerge(string Identification, string LotNo, string CurrentLotNo, string Quantity, string User, string WorkPoint, string TransType,
  1774. string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  1775. {
  1776. try
  1777. {
  1778. ///更新目标条码库存
  1779. string sql = @"IF NOT EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  1780. INNER JOIN ICSInventoryLot b ON b.LotNo='{3}' AND a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  1781. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  1782. BEGIN
  1783. RAISERROR('" + language.GetNameByCode("WMSAPIInfo170") + @"',16,1);
  1784. RETURN
  1785. END
  1786. IF NOT EXISTS (SELECT a.LotNo FROM ICSInventoryLot a,ICSInventoryLot b WHERE
  1787. a.LotNo= '{0}' AND b.LotNo= '{3}'
  1788. AND a.WorkPoint= '{1}' AND a.ExtensionID= b.ExtensionID )
  1789. BEGIN
  1790. RAISERROR ('" + language.GetNameByCode("WMSAPIInfo467") + @"',16,1 );
  1791. RETURN
  1792. END
  1793. IF NOT EXISTS (SELECT a.LotNo FROM ICSWareHouseLotInfo a,ICSWareHouseLotInfo b WHERE
  1794. a.LotNo= '{0}' AND b.LotNo= '{3}'
  1795. AND a.WorkPoint= '{1}' AND a.WarehouseCode= b.WarehouseCode )
  1796. BEGIN
  1797. RAISERROR ( '" + language.GetNameByCode("WMSAPIInfo468") + @"', 16, 1 );
  1798. RETURN
  1799. END
  1800. IF NOT EXISTS (SELECT a.LotNo FROM ICSWareHouseLotInfo a,ICSWareHouseLotInfo b WHERE
  1801. a.LotNo= '{0}' AND b.LotNo= '{3}'
  1802. AND a.WorkPoint= '{1}' AND a.LocationCode= b.LocationCode )
  1803. BEGIN
  1804. RAISERROR ( '" + language.GetNameByCode("WMSAPIInfo469") + @"', 16, 1 );
  1805. RETURN
  1806. END
  1807. IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  1808. BEGIN
  1809. RAISERROR('" + language.GetNameByCode("WMSAPIInfo171") + @"',16,1);
  1810. RETURN
  1811. END
  1812. UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  1813. ";
  1814. sql = string.Format(sql, LotNo, WorkPoint, Quantity, CurrentLotNo);
  1815. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1816. {
  1817. throw new Exception(language.GetNameByCode("WMSAPIInfo169"));//"目标条码库存更新失败!");
  1818. }
  1819. ///更新原条码库存
  1820. sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  1821. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
  1822. BEGIN
  1823. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  1824. RETURN
  1825. END";
  1826. sql = string.Format(sql, CurrentLotNo, WorkPoint, Quantity);
  1827. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1828. {
  1829. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  1830. }
  1831. ///添加日志
  1832. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  1833. BEGIN
  1834. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  1835. RETURN
  1836. END
  1837. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1838. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1839. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1840. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1841. MTIME,WorkPoint,EATTRIBUTE1)
  1842. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  1843. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  1844. '','0','{4}','{5}','0','',
  1845. '','','',f.F_Account ,f.F_RealName ,
  1846. SYSDATETIME() ,a.WorkPoint ,''
  1847. FROM ICSInventoryLot a
  1848. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1849. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1850. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1851. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  1852. ";
  1853. sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Identification, TransType, BusinessCode);
  1854. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1855. {
  1856. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1857. }
  1858. }
  1859. catch (Exception)
  1860. {
  1861. throw;
  1862. }
  1863. }
  1864. /// <summary>
  1865. /// 拆分
  1866. /// </summary>
  1867. /// <param name="Identification"></param>
  1868. /// <param name="LotNo"></param>
  1869. /// <param name="User"></param>
  1870. /// <param name="WorkPoint"></param>
  1871. /// <param name="TransType"></param>
  1872. /// <param name="BusinessCode"></param>
  1873. /// <param name="cmd"></param>
  1874. public static void WareHouseLotInfoSplit(string Identification, string LotNo, string CurrentLotNo, string Quantity, string User, string WorkPoint, string TransType,
  1875. string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  1876. {
  1877. try
  1878. {
  1879. ///更新库存
  1880. string sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  1881. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
  1882. BEGIN
  1883. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  1884. RETURN
  1885. END";
  1886. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  1887. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1888. {
  1889. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  1890. }
  1891. #region 添加库存
  1892. //插入条码表
  1893. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  1894. BEGIN
  1895. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  1896. RETURN
  1897. END
  1898. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a WHERE a.LotNo='{4}' AND a.WorkPoint='{1}')
  1899. BEGIN
  1900. RAISERROR('" + language.GetNameByCode("WMSAPIInfo172") + @"',16,1);
  1901. RETURN
  1902. END
  1903. INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  1904. SELECT NEWID(),'{4}' ,a.InvCode,a.ProductDate,a.ExpirationDate ,'{3}',a.ExtensionID,'101',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,a.LotNo
  1905. FROM ICSInventoryLot a
  1906. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1907. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  1908. sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, CurrentLotNo);
  1909. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1910. {
  1911. throw new Exception(language.GetNameByCode("WMSAPIInfo173"));//"条码表写入失败!");
  1912. }
  1913. //插入条码单据表
  1914. sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  1915. SELECT '{3}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
  1916. FROM ICSInventoryLot a
  1917. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1918. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1919. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  1920. sql = string.Format(sql, LotNo, WorkPoint, User, CurrentLotNo);
  1921. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1922. {
  1923. throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
  1924. }
  1925. ///添加库存
  1926. sql = @"IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  1927. BEGIN
  1928. RAISERROR('" + language.GetNameByCode("WMSAPIInfo164") + @"',16,1);
  1929. RETURN
  1930. END
  1931. IF EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
  1932. INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
  1933. INNER JOIN ICSWareHouseLotInfo d ON a.EATTRIBUTE1=d.LotNo AND a.WorkPoint=d.WorkPoint
  1934. WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
  1935. BEGIN
  1936. IF NOT EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
  1937. INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
  1938. INNER JOIN ICSWareHouseLotInfo d ON a.EATTRIBUTE1=d.LotNo AND a.WorkPoint=d.WorkPoint AND il.LocationCode=d.LocationCode
  1939. WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
  1940. BEGIN
  1941. RAISERROR('" + language.GetNameByCode("WMSAPIInfo180") + @"',16,1);
  1942. RETURN
  1943. END
  1944. END
  1945. INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  1946. SELECT NEWID(),a.LotNo ,d.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
  1947. FROM ICSInventoryLot a
  1948. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1949. INNER JOIN ICSWareHouseLotInfo d ON a.EATTRIBUTE1=d.LotNo AND a.WorkPoint=d.WorkPoint
  1950. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1951. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  1952. sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Quantity);
  1953. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1954. {
  1955. throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
  1956. }
  1957. ///添加日志
  1958. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1959. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1960. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1961. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1962. MTIME,WorkPoint,EATTRIBUTE1)
  1963. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  1964. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  1965. '','0','{4}','{5}','0','',
  1966. '','','',f.F_Account ,f.F_RealName ,
  1967. SYSDATETIME() ,a.WorkPoint ,''
  1968. FROM ICSInventoryLot a
  1969. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1970. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1971. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  1972. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  1973. ";
  1974. sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Identification, TransType, BusinessCode);
  1975. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1976. {
  1977. throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
  1978. }
  1979. #endregion
  1980. }
  1981. catch (Exception)
  1982. {
  1983. throw;
  1984. }
  1985. }
  1986. /// <summary>
  1987. /// 回写ERP ID
  1988. /// </summary>
  1989. /// <param name="TransType"></param>
  1990. /// <param name="SourceDetailID"></param>
  1991. /// <param name="Identification"></param>
  1992. /// <param name="ID"></param>
  1993. /// <param name="DetailID"></param>
  1994. /// <param name="Code"></param>
  1995. /// <param name="Sequence"></param>
  1996. /// <param name="cmd"></param>
  1997. 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)
  1998. {
  1999. string ERPupdate = string.Empty;
  2000. try
  2001. {
  2002. //采购入库
  2003. if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription())
  2004. {
  2005. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2006. FROM ICSWareHouseLotInfoLog a
  2007. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2008. INNER JOIN ICSPurchaseOrder c ON b.TransCode=c.POCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2009. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2010. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2011. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2012. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2013. WHERE c.PODetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2014. 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, '') +
  2015. 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}'
  2016. ";
  2017. }
  2018. //审核的到货单
  2019. else if (TransType == TransTypeEnum.DeliveryNotice.GetDescription())
  2020. {
  2021. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2022. FROM ICSWareHouseLotInfoLog a
  2023. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2024. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2025. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2026. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2027. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2028. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2029. WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2030. 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, '') +
  2031. 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}'
  2032. ";
  2033. }
  2034. //采购拒收
  2035. else if (TransType == TransTypeEnum.PurchaseRejectDoc.GetDescription())
  2036. {
  2037. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2038. FROM ICSWareHouseLotInfoLog a
  2039. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2040. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2041. WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2042. ";
  2043. }
  2044. //审核的委外到货单
  2045. else if (TransType == TransTypeEnum.ODeliveryNotice.GetDescription())
  2046. {
  2047. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2048. FROM ICSWareHouseLotInfoLog a
  2049. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2050. INNER JOIN ICSODeliveryNotice c ON b.TransCode=c.ODNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2051. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2052. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2053. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2054. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2055. WHERE c.ODNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2056. 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, '') +
  2057. 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}'
  2058. ";
  2059. }
  2060. //委外拒收
  2061. else if (TransType == TransTypeEnum.OutsourcingRejectDoc.GetDescription())
  2062. {
  2063. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2064. FROM ICSWareHouseLotInfoLog a
  2065. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2066. INNER JOIN ICSODeliveryNotice c ON b.TransCode=c.ODNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2067. ";
  2068. }
  2069. //采购退货
  2070. else if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
  2071. {
  2072. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2073. FROM ICSWareHouseLotInfoLog a
  2074. INNER JOIN ICSDeliveryNotice c ON a.TransCode=c.DNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2075. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2076. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2077. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2078. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2079. WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.DNType='2' AND a.BusinessCode ='{7}'
  2080. 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, '') +
  2081. 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}'
  2082. ";
  2083. }
  2084. //委外发料
  2085. else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
  2086. {
  2087. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2088. FROM ICSWareHouseLotInfoLog a
  2089. INNER JOIN ICSOutsourcingOrder y ON a.TransCode=y.OOCode AND a.WorkPoint=y.WorkPoint
  2090. INNER JOIN ICSOOPick x ON x.OODetailID=y.OODetailID AND a.TransSequence=y.Sequence+'~'+x.Sequence AND x.WorkPoint=y.WorkPoint
  2091. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2092. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2093. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2094. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2095. WHERE x.PickID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2096. 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, '') +
  2097. 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}'
  2098. ";
  2099. }
  2100. //委外退料
  2101. else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
  2102. || TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
  2103. || TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
  2104. {
  2105. ERPupdate = @"--根据退料单退料
  2106. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2107. FROM ICSWareHouseLotInfoLog a
  2108. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2109. INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2110. INNER JOIN ICSOApplyNeg d ON c.OApplyNegCode=d.OApplyNegCode AND c.WorkPoint=d.WorkPoint
  2111. Left JOIN ICSOIssue m ON (CASE WHEN d.Type='3' THEN c.SourceDetailID ELSE 0 END)=m.IssueDetailID AND c.WorkPoint=m.WorkPoint
  2112. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2113. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2114. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2115. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2116. WHERE ISNULL(m.ApplyDetailID,ISNULL(m.PickID, c.SourceDetailID))='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2117. 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, '') +
  2118. 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}'
  2119. --退-
  2120. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2121. FROM ICSWareHouseLotInfoLog a
  2122. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  2123. INNER JOIN ICSOutsourcingOrder y ON b.TransCode=y.OOCode AND b.WorkPoint=y.WorkPoint
  2124. INNER JOIN ICSOOPick x ON x.OODetailID=y.OODetailID AND x.WorkPoint=y.WorkPoint AND b.TransSequence = y.Sequence + '~' + x.Sequence
  2125. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2126. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2127. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2128. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2129. WHERE x.PickID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
  2130. 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, '') +
  2131. 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}'
  2132. --退-
  2133. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2134. FROM ICSWareHouseLotInfoLog a
  2135. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  2136. INNER JOIN ICSOApply z ON b.TransCode=z.ApplyCode AND b.TransSequence=z.Sequence AND b.WorkPoint=z.WorkPoint
  2137. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2138. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2139. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2140. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2141. WHERE z.ApplyDetailID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
  2142. 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, '') +
  2143. 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}'
  2144. --退-
  2145. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2146. FROM ICSWareHouseLotInfoLog a
  2147. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  2148. INNER JOIN ICSOIssue m ON b.TransCode=m.IssueCode AND b.TransSequence=m.Sequence AND b.WorkPoint=m.WorkPoint
  2149. LEFT JOIN ICSOOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
  2150. LEFT JOIN ICSOutsourcingOrder y ON x.OODetailID=y.OODetailID AND x.WorkPoint=y.WorkPoint
  2151. LEFT JOIN ICSOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.WorkPoint
  2152. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2153. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2154. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2155. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2156. WHERE ISNULL(m.ApplyDetailID, m.PickID)='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
  2157. 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, '') +
  2158. 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}'
  2159. ";
  2160. }
  2161. //委外入库
  2162. else if (TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription())
  2163. {
  2164. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2165. FROM ICSWareHouseLotInfoLog a
  2166. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2167. INNER JOIN ICSOutsourcingOrder c ON b.TransCode=c.OOCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2168. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2169. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2170. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2171. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2172. WHERE c.OODetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2173. 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, '') +
  2174. 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}'
  2175. ";
  2176. }
  2177. //委外退货
  2178. else if (TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription())
  2179. {
  2180. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2181. FROM ICSWareHouseLotInfoLog a
  2182. INNER JOIN ICSODeliveryNotice c ON a.TransCode=c.ODNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2183. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2184. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2185. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2186. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2187. WHERE c.ODNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.ODNType='2' AND a.BusinessCode ='{7}'
  2188. 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, '') +
  2189. 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}'
  2190. ";
  2191. }
  2192. //生产发料
  2193. else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
  2194. {
  2195. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2196. FROM ICSWareHouseLotInfoLog a
  2197. INNER JOIN ICSMO y ON a.TransCode=y.MOCode AND a.WorkPoint=y.WorkPoint
  2198. INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND a.TransSequence=y.Sequence+'~'+x.Sequence AND x.WorkPoint=y.WorkPoint
  2199. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2200. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2201. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2202. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2203. WHERE x.PickID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2204. 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, '') +
  2205. 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}'
  2206. ";
  2207. }
  2208. //生产退料
  2209. else if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
  2210. || TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
  2211. || TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
  2212. {
  2213. ERPupdate = @"--根据退料单退料
  2214. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2215. FROM ICSWareHouseLotInfoLog a
  2216. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2217. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2218. INNER JOIN ICSMOApplyNeg d ON c.ApplyNegCode=d.ApplyNegCode AND c.WorkPoint=d.WorkPoint
  2219. left JOIN ICSMOIssue m ON (CASE WHEN d.Type='3' THEN c.SourceDetailID ELSE 0 END)=m.IssueDetailID AND c.WorkPoint=m.WorkPoint
  2220. WHERE ISNULL(m.ApplyDetailID, ISNULL(m.PickID, c.SourceDetailID))='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2221. --退-
  2222. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2223. FROM ICSWareHouseLotInfoLog a
  2224. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  2225. INNER JOIN ICSMO y ON b.TransCode=y.MOCode AND b.WorkPoint=y.WorkPoint
  2226. INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint AND b.TransSequence = y.Sequence + '~' + x.Sequence
  2227. WHERE x.PickID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
  2228. --退-
  2229. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2230. FROM ICSWareHouseLotInfoLog a
  2231. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  2232. INNER JOIN ICSMOApply z ON b.TransCode=z.ApplyCode AND b.TransSequence=z.Sequence AND b.WorkPoint=z.WorkPoint
  2233. WHERE z.ApplyDetailID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
  2234. --退-
  2235. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2236. FROM ICSWareHouseLotInfoLog a
  2237. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  2238. INNER JOIN ICSMOIssue m ON b.TransCode=m.IssueCode AND b.TransSequence=m.Sequence AND b.WorkPoint=m.WorkPoint
  2239. LEFT JOIN ICSMOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
  2240. LEFT JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
  2241. LEFT JOIN ICSMOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.WorkPoint
  2242. WHERE ISNULL(m.ApplyDetailID, m.PickID)='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
  2243. ";
  2244. }
  2245. //生产入库
  2246. else if (TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription())
  2247. {
  2248. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2249. FROM ICSWareHouseLotInfoLog a
  2250. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2251. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2252. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2253. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2254. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2255. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2256. WHERE c.MODetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2257. 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, '') +
  2258. 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}'
  2259. ";
  2260. }
  2261. //开立的生产入库单
  2262. else if (TransType == TransTypeEnum.ManufactureReceive.GetDescription())
  2263. {
  2264. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2265. FROM ICSWareHouseLotInfoLog a
  2266. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2267. INNER JOIN ICSManufactureReceive c ON b.TransCode=c.RCVCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2268. WHERE c.RCVID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1' AND a.BusinessCode ='{7}'
  2269. ";
  2270. }
  2271. //销售出库
  2272. else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
  2273. {
  2274. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2275. FROM ICSWareHouseLotInfoLog a
  2276. INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2277. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2278. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2279. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2280. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2281. WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1' AND a.BusinessCode ='{7}'
  2282. 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, '') +
  2283. 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}'
  2284. ";
  2285. }
  2286. //销售退货
  2287. else if (TransType == TransTypeEnum.SalesShipmentDocNegative.GetDescription())
  2288. {
  2289. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2290. FROM ICSWareHouseLotInfoLog a
  2291. INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2292. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2293. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2294. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2295. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2296. WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2' AND a.BusinessCode ='{7}'
  2297. 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, '') +
  2298. 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}'
  2299. ";
  2300. }
  2301. //返工工单
  2302. else if (TransType == TransTypeEnum.ReWorkReceiveMo.GetDescription())
  2303. {
  2304. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2305. FROM ICSWareHouseLotInfoLog a
  2306. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2307. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.WorkPoint=c.WorkPoint
  2308. INNER JOIN ICSMOPick d ON d.MODetailID=c.MODetailID AND d.WorkPoint=c.WorkPoint and b.TransSequence=c.Sequence+'-'+d.Sequence
  2309. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2310. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2311. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2312. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2313. WHERE d.PickID='{3}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2314. 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, '') +
  2315. 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}'
  2316. ";
  2317. }
  2318. //一步调拨
  2319. else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
  2320. {
  2321. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2322. FROM ICSWareHouseLotInfoLog a
  2323. INNER JOIN ICSTransfer c ON a.TransCode=c.TransferNO AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2324. WHERE c.TransferID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1' AND a.BusinessCode ='{7}'
  2325. ";
  2326. }
  2327. //调拨
  2328. else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
  2329. {
  2330. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2331. FROM ICSWareHouseLotInfoLog a
  2332. INNER JOIN ICSTransfer c ON a.TransCode=c.TransferNO AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2333. WHERE c.TransferID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1' AND a.BusinessCode ='{7}'
  2334. ";
  2335. }
  2336. //两步调出
  2337. else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
  2338. {
  2339. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2340. FROM ICSWareHouseLotInfoLog a
  2341. INNER JOIN ICSOtherOut c ON a.TransCode=c.OutCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2342. INNER JOIN ICSTransfer d ON c.TransferDetailID=d.TransferDetailID AND c.WorkPoint=d.WorkPoint
  2343. WHERE c.OutID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2344. ";
  2345. }
  2346. //两步调入
  2347. else if (TransType == TransTypeEnum.TwoStepTransferDocIn.GetDescription())
  2348. {
  2349. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2350. FROM ICSWareHouseLotInfoLog a
  2351. INNER JOIN ICSOtherIn b ON a.TransCode=b.InCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  2352. INNER JOIN ICSTransfer c ON b.TransferDetailID=c.TransferDetailID AND b.WorkPoint=c.WorkPoint
  2353. WHERE b.InID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2354. ";
  2355. }
  2356. //销售退货-原条码
  2357. else if (TransType == TransTypeEnum.SalesReturnBack.GetDescription())
  2358. {
  2359. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2360. FROM ICSWareHouseLotInfoLog a
  2361. INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2362. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2363. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2364. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2365. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2366. WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2' AND a.BusinessCode ='{7}'
  2367. 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, '') +
  2368. 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}'
  2369. ";
  2370. }
  2371. //其他出库
  2372. else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
  2373. {
  2374. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2375. FROM ICSWareHouseLotInfoLog a
  2376. INNER JOIN ICSOtherOut c ON a.TransCode=c.OutCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2377. WHERE c.OutID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
  2378. ";
  2379. }
  2380. //其他入库
  2381. else if (TransType == TransTypeEnum.OtherInDoc.GetDescription())
  2382. {
  2383. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2384. FROM ICSWareHouseLotInfoLog a
  2385. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2386. INNER JOIN ICSOtherIn c ON b.TransCode=c.InCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2387. WHERE c.InID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2388. ";
  2389. }
  2390. //拆卸单
  2391. else if (TransType == TransTypeEnum.DisassemblyDoc.GetDescription())
  2392. {
  2393. ERPupdate = @"UPDATE d set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2394. FROM ICSWareHouseLotInfoLog a
  2395. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2396. INNER JOIN ICSDisassemblyDoc c ON b.TransCode=c.DABDOCCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2397. INNER JOIN ICSWareHouseLotInfoLog d ON b.TransCode=d.TransCode AND d.TransSequence='1' AND b.WorkPoint=d.WorkPoint
  2398. WHERE c.DABDOCID='{0}' AND a.Identification='{1}' AND d.ERPUpload='0' AND a.BusinessCode ='{7}'
  2399. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2400. FROM ICSWareHouseLotInfoLog a
  2401. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2402. INNER JOIN ICSDisassemblyDoc c ON b.TransCode=c.DABDOCCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2403. WHERE c.DABDOCID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.DABDOCType='2' AND a.BusinessCode ='{7}'
  2404. ";
  2405. }
  2406. //领料申请单
  2407. else if (TransType == TransTypeEnum.MOApply.GetDescription())
  2408. {
  2409. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2410. FROM ICSWareHouseLotInfoLog a
  2411. INNER JOIN ICSMOApply c ON a.TransCode=c.ApplyCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2412. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2413. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2414. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2415. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2416. WHERE c.ApplyDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2417. 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, '') +
  2418. 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}'
  2419. ";
  2420. }
  2421. //委外领料申请单
  2422. else if (TransType == TransTypeEnum.OOApply.GetDescription())
  2423. {
  2424. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2425. FROM ICSWareHouseLotInfoLog a
  2426. INNER JOIN ICSOApply c ON a.TransCode=c.ApplyCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2427. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2428. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2429. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2430. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2431. WHERE c.ApplyDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2432. 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, '') +
  2433. 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}'
  2434. ";
  2435. }
  2436. //开立材料出库
  2437. else if (TransType == TransTypeEnum.MOIssue.GetDescription())
  2438. {
  2439. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2440. FROM ICSWareHouseLotInfoLog a
  2441. INNER JOIN ICSMOIssue c ON a.TransCode=c.IssueCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2442. WHERE c.IssueID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2443. ";
  2444. }
  2445. //开立委外材料出库
  2446. else if (TransType == TransTypeEnum.OOIssue.GetDescription())
  2447. {
  2448. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2449. FROM ICSWareHouseLotInfoLog a
  2450. INNER JOIN ICSOIssue c ON a.TransCode=c.IssueCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2451. WHERE c.IssueID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2452. ";
  2453. }
  2454. //开立红字入库单
  2455. else if (TransType == TransTypeEnum.PurchaseReceive.GetDescription())
  2456. {
  2457. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2458. FROM ICSWareHouseLotInfoLog a
  2459. INNER JOIN ICSPurchaseReceive c ON a.TransCode=c.RCVCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2460. WHERE c.RCVID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2' AND a.BusinessCode ='{7}'
  2461. ";
  2462. }
  2463. //开立委外红字入库单
  2464. else if (TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription())
  2465. {
  2466. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2467. FROM ICSWareHouseLotInfoLog a
  2468. INNER JOIN ICSOutsourcingReceive c ON a.TransCode=c.RCVCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2469. WHERE c.RCVID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2' AND a.BusinessCode ='{7}'
  2470. ";
  2471. }
  2472. //借用
  2473. else if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
  2474. {
  2475. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2476. FROM ICSWareHouseLotInfoLog a
  2477. INNER JOIN ICSBrrow c ON a.TransCode=c.BrrowCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  2478. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2479. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2480. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2481. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2482. WHERE c.BrrowDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2483. 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, '') +
  2484. 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}'
  2485. ";
  2486. }
  2487. //归还
  2488. else if (TransType == TransTypeEnum.ReturnDoc.GetDescription())
  2489. {
  2490. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2491. FROM ICSWareHouseLotInfoLog a
  2492. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2493. INNER JOIN ICSReturn c ON b.TransCode=c.ReturnCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2494. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2495. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2496. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2497. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2498. WHERE c.ReturnDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
  2499. 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, '') +
  2500. 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}'
  2501. ";
  2502. }
  2503. ERPupdate = string.Format(ERPupdate, SourceDetailID, Identification, ID, DetailID, Code, Sequence, col, BusinessCode);
  2504. if (!DBHelper.ExecuteNonQuery(ERPupdate, cmd))
  2505. {
  2506. throw new Exception(TransType + language.GetNameByCode("WMSAPIInfo175"));//"回写日志失败!");
  2507. }
  2508. }
  2509. catch (Exception ex)
  2510. {
  2511. log.Debug(ex.ToString());
  2512. log.Debug(TransType + Environment.NewLine + ERPupdate);
  2513. throw;
  2514. }
  2515. }
  2516. /// <summary>
  2517. /// 倒冲时子件已领数量回写
  2518. /// </summary>
  2519. public static void DetailQTYUpdate()
  2520. {
  2521. }
  2522. /// <summary>
  2523. /// 生成条码
  2524. /// </summary>
  2525. /// <param name="LotNo"></param>
  2526. /// <param name="Quantity"></param>
  2527. /// <param name="TransCode"></param>
  2528. /// <param name="TransSequence"></param>
  2529. /// <param name="WorkPoint"></param>
  2530. /// <param name="Identification"></param>
  2531. /// <param name="User"></param>
  2532. /// <param name="InvCode"></param>
  2533. /// <param name="BusinessCode"></param>
  2534. /// <param name="ProjectCode"></param>
  2535. /// <param name="BatchCode"></param>
  2536. /// <param name="Version"></param>
  2537. /// <param name="Brand"></param>
  2538. /// <param name="cFree1"></param>
  2539. /// <param name="cFree2"></param>
  2540. /// <param name="cFree3"></param>
  2541. /// <param name="cFree4"></param>
  2542. /// <param name="cFree5"></param>
  2543. /// <param name="cFree6"></param>
  2544. /// <param name="cFree7"></param>
  2545. /// <param name="cFree8"></param>
  2546. /// <param name="cFree9"></param>
  2547. /// <param name="cFree10"></param>
  2548. /// <param name="cmd"></param>
  2549. /// <param name="language"></param>
  2550. public static void CreateLotNo(string LotNo, string Quantity, string TransCode, string TransSequence, string WorkPoint, string Identification, string User, string InvCode, string BusinessCode,
  2551. 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)
  2552. {
  2553. try
  2554. {
  2555. String EffectiveEnable = "";
  2556. String Colspan = "";
  2557. String IDD = "";
  2558. int EffectiveDays = 0;
  2559. String Time = "";
  2560. int EffectiveDayss = 0;
  2561. DateTime dtt;
  2562. DateTime now = DateTime.Now;
  2563. string sql = string.Empty;
  2564. //string sql = @"select EffectiveEnable,EffectiveDays from ICSInventory a
  2565. // Left Join ICSMO b ON a.InvCode=b.InvCode and a.WorkPoint = b.WorkPoint
  2566. // where b.MoCode='{0}' and b.WorkPoint='{1}'";
  2567. //sql = string.Format(sql, TransCode, WorkPoint);
  2568. //DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  2569. //if (dt.Rows.Count == 0)
  2570. //{
  2571. // throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
  2572. //}
  2573. //else
  2574. //{
  2575. // EffectiveEnable = dt.Rows[0]["EffectiveEnable"].ToString();
  2576. //EffectiveDays = Convert.ToInt32(dt.Rows[0]["EffectiveDays"]);
  2577. //}
  2578. //EffectiveDayss = Convert.ToInt32(EffectiveDays);
  2579. //if (!EffectiveEnable.Equals("False"))
  2580. //{
  2581. int year = now.Year;
  2582. int month = now.Month;
  2583. int day = now.Day;
  2584. int n = DateTime.DaysInMonth(year, month);
  2585. int k = day + EffectiveDays;
  2586. if (k > n)
  2587. {
  2588. day = EffectiveDays - (n - day);
  2589. month = month + 1;
  2590. if (month > 12)
  2591. {
  2592. month = 1;
  2593. year = year + 1;
  2594. }
  2595. }
  2596. else
  2597. {
  2598. day = day + EffectiveDays;
  2599. }
  2600. Time = year + "-" + month + "-" + day;
  2601. //}
  2602. //else
  2603. //{
  2604. // Time = "2999-12-31 00:00:00.000";
  2605. //}
  2606. dtt = Convert.ToDateTime(Time);
  2607. //检验自由项
  2608. Colspan = ProjectCode + "~" + BatchCode + "~" + Version
  2609. + "~" + Brand + "~" + cFree1
  2610. + "~" + cFree2 + "~" + cFree3 + "~" + cFree4
  2611. + "~" + cFree5 + "~" + cFree6 + "~" + cFree7
  2612. + "~" + cFree8 + "~" + cFree9 + "~" + cFree10;
  2613. sql = @"select ID,Colspan from ICSExtension a
  2614. where Colspan='{0}' and WorkPoint='{1}'";
  2615. sql = string.Format(sql, Colspan, WorkPoint);
  2616. DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
  2617. if (dttt.Rows.Count == 0)
  2618. {
  2619. IDD = Guid.NewGuid().ToString();
  2620. sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
  2621. 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}'";
  2622. sql = string.Format(sql, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, User, WorkPoint, IDD);
  2623. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2624. {
  2625. throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
  2626. }
  2627. }
  2628. else
  2629. {
  2630. IDD = dttt.Rows[0]["ID"].ToString();
  2631. }
  2632. //存入条码表
  2633. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{4}')
  2634. BEGIN
  2635. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  2636. RETURN
  2637. END
  2638. INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
  2639. Quantity,Amount,ExtensionID,Type,PrintTimes,
  2640. LastPrintUser,LastPrintTime,MUSER,MUSERName,MTIME,
  2641. WorkPoint,EATTRIBUTE1)
  2642. SELECT TOP 1 NEWID(),'{0}','{8}',GETDATE(),'{6}',
  2643. '{1}','0','{7}','16',null,
  2644. null,null,'{2}' ,f.F_RealName ,GETDATE(),
  2645. '{4}' ,''
  2646. FROM Sys_SRM_User f
  2647. where f.F_Account='{2}' and f.F_Location='{4}'
  2648. ";
  2649. sql = string.Format(sql, LotNo, Quantity, User, TransCode, WorkPoint, TransSequence, dtt, IDD, InvCode);
  2650. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2651. {
  2652. throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
  2653. }
  2654. ///存入条码关联表
  2655. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{3}')
  2656. BEGIN
  2657. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  2658. RETURN
  2659. END
  2660. INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,
  2661. WorkPoint,EATTRIBUTE1)
  2662. SELECT '{4}','{0}','{1}',f.F_Account ,f.F_RealName,GETDATE(),
  2663. a.WorkPoint,''
  2664. FROM ICSInventoryLot a
  2665. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2666. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  2667. WHERE a.LotNo='{5}' AND a.WorkPoint='{3}'
  2668. ";
  2669. sql = string.Format(sql, TransCode, TransSequence, User, WorkPoint, LotNo, OLDLotNo);
  2670. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2671. {
  2672. throw new Exception(language.GetNameByCode("WMSAPIInfo367"));
  2673. }
  2674. //存入库存表
  2675. sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  2676. SELECT NEWID(),a.LotNo ,e.WarehouseCode,d.LocationCode,a.InvCode ,'0',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
  2677. FROM ICSInventoryLot a
  2678. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2679. --INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2680. INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
  2681. INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
  2682. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  2683. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  2684. sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, LocationCode);
  2685. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2686. {
  2687. throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
  2688. }
  2689. }
  2690. catch (Exception)
  2691. {
  2692. throw;
  2693. }
  2694. }
  2695. /// <summary>
  2696. /// 料架条码绑定
  2697. /// </summary>
  2698. /// <param name="LotNo"></param>
  2699. /// <param name="ContainerCode"></param>
  2700. /// <param name="User"></param>
  2701. /// <param name="WorkPoint"></param>
  2702. /// <param name="cmd"></param>
  2703. /// <param name="language"></param>
  2704. public static void ContainerBind(string LotNo, string ContainerCode, string ContainerType, string LocationCode, string RecomendBinCode, string User, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  2705. {
  2706. try
  2707. {
  2708. ///添加日志
  2709. if (ContainerType != "窄巷道叉车(木托盘)")
  2710. {
  2711. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{3}' AND F_Location='{2}')
  2712. BEGIN
  2713. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{3}") + @"',16,1);
  2714. RETURN
  2715. END
  2716. IF NOT EXISTS (SELECT * FROM ICSContainerLot WHERE ContainerID=
  2717. (SELECT ID FROM ICSContainer WHERE ContainerCode='{1}' AND WorkPoint='{2}'))
  2718. BEGIN
  2719. update ICSContainer set LocationCode='{4}',EATTRIBUTE1='' where ContainerCode='{1}' AND WorkPoint='{2}'
  2720. INSERT INTO ICSContainerLot
  2721. (ID,ContainerID,LotNo,MUSER,MUSERName,WorkPoint,MTIME,EATTRIBUTE1)
  2722. SELECT NEWID(),ID,'{0}','{3}'
  2723. ,(SELECT F_RealName FROM Sys_SRM_User WHERE F_Account='{3}' AND F_Location='{2}'),'{2}',GETDATE(),'{4}' FROM ICSContainer
  2724. WHERE ContainerCode='{1}' AND WorkPoint='{2}'
  2725. END
  2726. ELSE
  2727. BEGIN
  2728. update ICSContainer set LocationCode='{4}',EATTRIBUTE1='' where ContainerCode='{1}' AND WorkPoint='{2}'
  2729. UPDATE ICSContainerLot SET LotNo='{0}' WHERE ContainerID=
  2730. (SELECT ID FROM ICSContainer WHERE ContainerCode='{1}' AND WorkPoint='{2}')
  2731. END
  2732. ";
  2733. sql = string.Format(sql, LotNo, ContainerCode, WorkPoint, User, ContainerType, LocationCode);
  2734. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2735. {
  2736. throw new Exception("容器:" + ContainerCode + "与条码:" + LotNo + "绑定失败!");
  2737. }
  2738. }
  2739. else
  2740. {
  2741. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{3}' AND F_Location='{2}')
  2742. BEGIN
  2743. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{3}") + @"',16,1);
  2744. RETURN
  2745. END
  2746. IF NOT EXISTS (SELECT * FROM ICSContainerLot WHERE ContainerID=
  2747. (SELECT ID FROM ICSContainer WHERE ContainerCode='{1}' AND WorkPoint='{2}'))
  2748. BEGIN
  2749. INSERT INTO ICSContainerLot
  2750. (ID,ContainerID,LotNo,MUSER,MUSERName,WorkPoint,MTIME,EATTRIBUTE1)
  2751. SELECT NEWID(),ID,'{0}','{3}'
  2752. ,(SELECT F_RealName FROM Sys_SRM_User WHERE F_Account='{3}' AND F_Location='{2}'),'{2}',GETDATE(),'{4}' FROM ICSContainer
  2753. WHERE ContainerCode='{1}' AND WorkPoint='{2}'
  2754. END
  2755. ELSE
  2756. BEGIN
  2757. UPDATE ICSContainerLot SET LotNo='{0}' WHERE ContainerID=
  2758. (SELECT ID FROM ICSContainer WHERE ContainerCode='{1}' AND WorkPoint='{2}')
  2759. END
  2760. ";
  2761. sql = string.Format(sql, LotNo, ContainerCode, WorkPoint, User, ContainerType, LocationCode);
  2762. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2763. {
  2764. throw new Exception("容器:" + ContainerCode + "与条码:" + LotNo + "绑定失败!");
  2765. }
  2766. if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadForkLift"]))
  2767. {
  2768. string ForkLiftUrl = System.Configuration.ConfigurationManager.AppSettings["ForkLiftUrl"];
  2769. string Year = DateTime.Now.Year.ToString();
  2770. string Month = DateTime.Now.Month.ToString().PadLeft(2, '0');
  2771. string Day = DateTime.Now.Day.ToString().PadLeft(2, '0');
  2772. string Hour = DateTime.Now.Hour.ToString().PadLeft(2, '0');
  2773. string Minute = DateTime.Now.Minute.ToString().PadLeft(2, '0');
  2774. string Second = DateTime.Now.Second.ToString().PadLeft(2, '0');
  2775. string InspectJosn = "{";
  2776. InspectJosn += "\"ID\":\"" + Year + Month + Day + Hour + Minute + Second + "\",";
  2777. InspectJosn += "\"PalletID\": \"" + ContainerCode + "\",";
  2778. InspectJosn += "\"LaneCode\": \"\",";
  2779. InspectJosn += "\"TaskType\": \"PTWY\",";
  2780. InspectJosn += "\"SourceBin\": \"\",";
  2781. InspectJosn += "\"DestBin\": \"" + RecomendBinCode + "\"";
  2782. InspectJosn += "}";
  2783. RestHelper rest = new RestHelper(ForkLiftUrl, HttpVerb.POST);
  2784. rest.PostData = InspectJosn;
  2785. string strResult = rest.MakeRequest();
  2786. //string resultstr = HTTPHelper.Post(ERPUrl.AGVBineURL, InspectJosn);
  2787. ForkLiftStartTaskResultModel result = JsonConvert.DeserializeObject<ForkLiftStartTaskResultModel>(strResult);
  2788. if (result.Ret == 1)
  2789. {
  2790. sql = @"update ICSContainer set LocationCode='{2}',EATTRIBUTE1='已搬运' where ContainerCode='{0}' AND WorkPoint='{1}'";
  2791. sql = string.Format(sql, ContainerCode, WorkPoint, LocationCode);
  2792. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2793. {
  2794. throw new Exception(language.GetNameByCode("WMSAPIInfo207"));//料架状态更新失败
  2795. }
  2796. }
  2797. else
  2798. {
  2799. throw new Exception(result.RetMsg);
  2800. }
  2801. }
  2802. }
  2803. //else
  2804. //{
  2805. // if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
  2806. // {
  2807. // string Year = DateTime.Now.Year.ToString();
  2808. // string Month = DateTime.Now.Month.ToString().PadLeft(2, '0');
  2809. // string Day = DateTime.Now.Day.ToString().PadLeft(2, '0');
  2810. // string Hour = DateTime.Now.Hour.ToString().PadLeft(2, '0');
  2811. // string Minute = DateTime.Now.Minute.ToString().PadLeft(2, '0');
  2812. // string Second = DateTime.Now.Second.ToString().PadLeft(2, '0');
  2813. // // {
  2814. // // "reqCode":"20230420150602",
  2815. // // "podCode":"200051",
  2816. // // "positionCode":"105670AA130750",
  2817. // // "indBind":"1"
  2818. // //}
  2819. // string InspectJosn = "{";
  2820. // InspectJosn += "\"reqCode\":\"" + Year + Month + Day + Hour + Minute + Second + "\",";
  2821. // InspectJosn += "\"podCode\": \"" + ContainerCode + "\",";
  2822. // InspectJosn += "\"positionCode\": \"" + LocationCode + "\",";
  2823. // InspectJosn += "\"indBind\": \"1\",";
  2824. // InspectJosn += "\"PodDir\": \"0\"";
  2825. // InspectJosn += "}";
  2826. // if (InspectJosn != "")
  2827. // {
  2828. // RestHelper rest = new RestHelper(ERPUrl.AGVBineURL, HttpVerb.POST);
  2829. // rest.PostData = InspectJosn;
  2830. // string strResult = rest.MakeRequest();
  2831. // //string resultstr = HTTPHelper.Post(ERPUrl.AGVBineURL, InspectJosn);
  2832. // AGVPodBindOutputModel result = JsonConvert.DeserializeObject<AGVPodBindOutputModel>(strResult);
  2833. // if (result.code == 0)
  2834. // {
  2835. // sql = @"update ICSContainer set LocationCode='{2}',EATTRIBUTE1='已绑定' where ContainerCode='{0}' AND WorkPoint='{1}'";
  2836. // sql = string.Format(sql, ContainerCode, WorkPoint, LocationCode);
  2837. // if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2838. // {
  2839. // throw new Exception(language.GetNameByCode("WMSAPIInfo207"));//料架状态更新失败
  2840. // }
  2841. // }
  2842. // else
  2843. // {
  2844. // throw new Exception(result.message);
  2845. // }
  2846. // }
  2847. // }
  2848. //}
  2849. }
  2850. catch (Exception)
  2851. {
  2852. throw;
  2853. }
  2854. }
  2855. /// <summary>
  2856. /// 料架条码解绑
  2857. /// </summary>
  2858. /// <param name="ContainerCode"></param>
  2859. /// <param name="WorkPoint"></param>
  2860. /// <param name="cmd"></param>
  2861. /// <param name="language"></param>
  2862. public static void ContainerUnBind(string ContainerCode, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  2863. {
  2864. try
  2865. {
  2866. string datasql = @"select LocationCode from ICSContainer
  2867. where ContainerCode='{0}' and WorkPoint='{1}'";
  2868. datasql = string.Format(datasql, ContainerCode, WorkPoint);
  2869. DataTable datadt = DBHelper.SQlReturnData(datasql, cmd);
  2870. if (datadt.Rows.Count == 0)
  2871. {
  2872. throw new Exception(language.GetNameByCode("WMSAPIInfo207"));
  2873. }
  2874. else
  2875. {
  2876. string LocationCode = datadt.Rows[0]["LocationCode"].ToString();
  2877. string sql = @"delete from ICSContainerLot
  2878. WHERE ContainerID=
  2879. (SELECT ID FROM ICSContainer WHERE ContainerCode='{0}' AND WorkPoint='{1}')";
  2880. sql = string.Format(sql, ContainerCode, WorkPoint);
  2881. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2882. {
  2883. throw new Exception("料架:" + ContainerCode + "解绑失败!");
  2884. }
  2885. //else
  2886. //{
  2887. // if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
  2888. // {
  2889. // AGVPodBindInputModel Info = new AGVPodBindInputModel();
  2890. // Info.reqCode = "5";
  2891. // Info.podCode = ContainerCode;
  2892. // Info.positionCode = LocationCode;
  2893. // Info.indBind = "0";
  2894. // string poststr = JsonConvert.SerializeObject(Info);
  2895. // string resultstr = HTTPHelper.HttpPost("AGV料架解绑", ERPUrl.AGVBineURL, poststr);
  2896. // AGVPodBindOutputModel result = JsonConvert.DeserializeObject<AGVPodBindOutputModel>(resultstr.ToString());
  2897. // if (result.code != 0)
  2898. // {
  2899. // throw new Exception(result.message);
  2900. // }
  2901. // else
  2902. // {
  2903. // sql = @"Update ICSContainer set EATTRIBUTE1='',LocationCode=''
  2904. // WHERE ContainerCode='{0}' AND WorkPoint='{1}'";
  2905. // sql = string.Format(sql, ContainerCode, WorkPoint);
  2906. // if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2907. // {
  2908. // throw new Exception(language.GetNameByCode("WMSAPIInfo207"));//料架状态更新失败
  2909. // }
  2910. // }
  2911. // }
  2912. //}
  2913. }
  2914. }
  2915. catch (Exception)
  2916. {
  2917. throw;
  2918. }
  2919. }
  2920. /// <summary>
  2921. /// 呼叫AGV开始搬运任务
  2922. /// </summary>
  2923. /// <param name="ContainerCode"></param>
  2924. /// <param name="LocationCode"></param>
  2925. /// <param name="User"></param>
  2926. /// <param name="WorkPoint"></param>
  2927. /// <param name="cmd"></param>
  2928. /// <param name="language"></param>
  2929. public static void CallAGVStartTask(string ContainerCode, string TransType, string LocationCode, string User, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  2930. {
  2931. try
  2932. {
  2933. string sql = @"select ContainerCode from ICSContainer
  2934. where LocationCode='{0}' and WorkPoint='{1}'";
  2935. sql = string.Format(sql, ContainerCode, WorkPoint);
  2936. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  2937. if (dt.Rows.Count == 0)
  2938. {
  2939. throw new Exception(language.GetNameByCode("WMSAPIInfo209"));//位置编码未绑定料架
  2940. }
  2941. else
  2942. {
  2943. ContainerCode = dt.Rows[0]["ContainerCode"].ToString();
  2944. }
  2945. if (TransType == "开始任务")
  2946. {
  2947. sql = @"update ICSContainer set EATTRIBUTE1='已搬运' where ContainerCode='{0}' AND WorkPoint='{1}'";
  2948. }
  2949. else
  2950. {
  2951. sql = @"update ICSContainer set EATTRIBUTE1='已绑定' where ContainerCode='{0}' AND WorkPoint='{1}'";
  2952. }
  2953. sql = string.Format(sql, ContainerCode, WorkPoint, LocationCode);
  2954. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2955. {
  2956. throw new Exception(language.GetNameByCode("WMSAPIInfo207"));//料架状态更新失败
  2957. }
  2958. //if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
  2959. //{
  2960. // string Year = DateTime.Now.Year.ToString();
  2961. // string Month = DateTime.Now.Month.ToString().PadLeft(2, '0');
  2962. // string Day = DateTime.Now.Day.ToString().PadLeft(2, '0');
  2963. // string Hour = DateTime.Now.Hour.ToString().PadLeft(2, '0');
  2964. // string Minute = DateTime.Now.Minute.ToString().PadLeft(2, '0');
  2965. // string Second = DateTime.Now.Second.ToString().PadLeft(2, '0');
  2966. // AGVStartTaskModel Info = new AGVStartTaskModel();
  2967. // List<AGVStartTaskLineModel> LineList = new List<AGVStartTaskLineModel>();
  2968. // AGVStartTaskLineModel LineInfo = new AGVStartTaskLineModel();
  2969. // Info.reqCode = Year + Month + Day + Hour + Minute + Second;
  2970. // Info.podCode = ContainerCode;
  2971. // Info.taskTyp = "F01";
  2972. // LineInfo.positionCode = LocationCode;
  2973. // LineInfo.type = "00";
  2974. // LineList.Add(LineInfo);
  2975. // LineInfo = new AGVStartTaskLineModel();
  2976. // LineInfo.positionCode = "1";//目标位置编码待提供
  2977. // LineInfo.type = "04";
  2978. // LineList.Add(LineInfo);
  2979. // Info.positionCodePath = LineList;
  2980. // string poststr = JsonConvert.SerializeObject(Info);
  2981. // string resultstr = HTTPHelper.HttpPost("AGV开始任务", ERPUrl.AGVTaskStart, poststr);
  2982. // AGVStartTaskResultModel result = JsonConvert.DeserializeObject<AGVStartTaskResultModel>(resultstr.ToString());
  2983. // if (result.code == 0)
  2984. // {
  2985. // }
  2986. // else
  2987. // {
  2988. // throw new Exception(result.message);
  2989. // }
  2990. //}
  2991. }
  2992. catch (Exception)
  2993. {
  2994. throw;
  2995. }
  2996. }
  2997. /// <summary>
  2998. /// 获取AGV搬运的目标位置
  2999. /// </summary>
  3000. /// <param name="LocationCode"></param>
  3001. /// <param name="User"></param>
  3002. /// <param name="WorkPoint"></param>
  3003. /// <param name="cmd"></param>
  3004. /// <param name="language"></param>
  3005. public static string GetAGVTaskPosition(string LocationCode, string User, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  3006. {
  3007. try
  3008. {
  3009. string sql = @"select Define1 from Sys_EnumValues
  3010. where EnumKey='00011' AND EnumText='{0}' AND WorkPointCode='{1}'";
  3011. sql = string.Format(sql, LocationCode, WorkPoint);
  3012. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  3013. if (dt.Rows.Count == 0)
  3014. {
  3015. return "";
  3016. }
  3017. else
  3018. {
  3019. return dt.Rows[0]["Define1"].ToString();
  3020. }
  3021. }
  3022. catch (Exception)
  3023. {
  3024. throw;
  3025. }
  3026. }
  3027. }
  3028. }