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

1824 lines
111 KiB

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