纽威

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