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

1046 lines
61 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
  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="LocationCode"></param>
  25. /// <param name="LotNo"></param>
  26. /// <param name="Quantity"></param>
  27. /// <param name="User"></param>
  28. /// <param name="WorkPoint"></param>
  29. /// <param name="TransType"></param>
  30. /// <param name="BusinessCode"></param>
  31. /// <param name="cmd"></param>
  32. public static void WareHouseLotInfoUp(string Identification, string LocationCode, string LotNo, string Quantity, string User,
  33. string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  34. {
  35. try
  36. {
  37. ///添加库存(原条码退回,更新库存;新条码直接入库)
  38. string sql = string.Empty;
  39. if(BusinessCode != TransTypeEnum.SalesReturnBack.GetDescription<DBValue>())
  40. {
  41. sql = @"IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  42. BEGIN
  43. RAISERROR('" + language.GetNameByCode("WMSAPIInfo164") + @"',16,1);
  44. RETURN
  45. END ";
  46. }
  47. sql += @" IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  48. BEGIN
  49. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  50. RETURN
  51. END
  52. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  53. BEGIN
  54. UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{3}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  55. END
  56. ELSE
  57. BEGIN
  58. INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  59. SELECT NEWID(),a.LotNo ,e.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
  60. FROM ICSInventoryLot a
  61. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  62. --INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  63. INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
  64. INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
  65. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  66. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  67. END";
  68. sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, LocationCode);
  69. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  70. {
  71. throw new Exception("" + language.GetNameByCode("WMSAPIInfo165") + @"");
  72. }
  73. ///添加日志
  74. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  75. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  76. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  77. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  78. MTIME,WorkPoint,EATTRIBUTE1)
  79. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  80. '','',c.WarehouseCode,c.LocationCode,'{6}',
  81. '','0','{4}','{5}','0','',
  82. '','','',f.F_Account ,f.F_RealName ,
  83. SYSDATETIME() ,a.WorkPoint ,''
  84. FROM ICSInventoryLot a
  85. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  86. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  87. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  88. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  89. ";
  90. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode,Quantity);
  91. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  92. {
  93. throw new Exception("" + language.GetNameByCode("WMSAPIInfo166") + @"");
  94. }
  95. }
  96. catch (Exception)
  97. {
  98. throw;
  99. }
  100. }
  101. /// <summary>
  102. /// 减少库存
  103. /// </summary>
  104. /// <param name="Identification"></param>
  105. /// <param name="TransCode"></param>
  106. /// <param name="TransSequence"></param>
  107. /// <param name="LotNo"></param>
  108. /// <param name="Quantity"></param>
  109. /// <param name="User"></param>
  110. /// <param name="WorkPoint"></param>
  111. /// <param name="TransType"></param>
  112. /// <param name="BusinessCode"></param>
  113. /// <param name="cmd"></param>
  114. public static void WareHouseLotInfoDown(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
  115. string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  116. {
  117. try
  118. {
  119. ///更新库存
  120. string sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  121. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
  122. BEGIN
  123. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  124. RETURN
  125. END";
  126. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  127. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  128. {
  129. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  130. }
  131. ///添加日志
  132. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  133. BEGIN
  134. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  135. RETURN
  136. END
  137. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  138. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  139. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  140. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  141. MTIME,WorkPoint,EATTRIBUTE1)
  142. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  143. c.WarehouseCode,c.LocationCode,'','','{6}',
  144. '','0','{7}','{8}','0','',
  145. '','','',f.F_Account ,f.F_RealName ,
  146. SYSDATETIME() ,a.WorkPoint ,''
  147. FROM ICSInventoryLot a
  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, TransCode, TransSequence, Quantity, TransType, BusinessCode);
  153. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  154. {
  155. throw new Exception("" + language.GetNameByCode("WMSAPIInfo166") + @"");
  156. }
  157. }
  158. catch (Exception)
  159. {
  160. throw;
  161. }
  162. }
  163. /// <summary>
  164. /// 修改库存
  165. /// </summary>
  166. /// <param name="Identification"></param>
  167. /// <param name="TransCode"></param>
  168. /// <param name="TransSequence"></param>
  169. /// <param name="LotNo"></param>
  170. /// <param name="Quantity"></param>
  171. /// <param name="User"></param>
  172. /// <param name="WorkPoint"></param>
  173. /// <param name="TransType"></param>
  174. /// <param name="cmd"></param>
  175. public static void WareHouseLotInfoUpdate(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
  176. string WorkPoint, string TransType, SqlCommand cmd, Dictionary<string, string> language)
  177. {
  178. try
  179. {
  180. ///添加日志
  181. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  182. BEGIN
  183. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  184. RETURN
  185. END
  186. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  187. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  188. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  189. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  190. MTIME,WorkPoint,EATTRIBUTE1)
  191. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  192. a.WarehouseCode,a.LocationCode,'','',a.Quantity,
  193. '','0','{6}','{7}','0','',
  194. '','','',f.F_Account ,f.F_RealName ,
  195. SYSDATETIME() ,a.WorkPoint ,''
  196. FROM ICSWareHouseLotInfo a
  197. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  198. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  199. ";
  200. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, TransTypeEnum.LOTCheckBefore.GetDescription<DBValue>());
  201. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  202. {
  203. throw new Exception("" + language.GetNameByCode("WMSAPIInfo166") + @"");
  204. }
  205. ///更新库存
  206. sql = @"UPDATE ICSWareHouseLotInfo SET Quantity='{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'";
  207. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  208. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  209. {
  210. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  211. }
  212. ///添加日志
  213. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  214. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  215. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  216. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  217. MTIME,WorkPoint,EATTRIBUTE1)
  218. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  219. a.WarehouseCode,a.LocationCode,'','',a.Quantity,
  220. '','0','{6}','{7}','0','',
  221. '','','',f.F_Account ,f.F_RealName ,
  222. SYSDATETIME() ,a.WorkPoint ,''
  223. FROM ICSWareHouseLotInfo a
  224. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  225. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  226. ";
  227. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, TransTypeEnum.LOTCheckAfter.GetDescription<DBValue>());
  228. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  229. {
  230. throw new Exception("" + language.GetNameByCode("WMSAPIInfo166") + @"");
  231. }
  232. }
  233. catch (Exception)
  234. {
  235. throw;
  236. }
  237. }
  238. /// <summary>
  239. /// 调拨
  240. /// </summary>
  241. /// <param name="LocationCode"></param>
  242. /// <param name="LotNo"></param>
  243. /// <param name="Quantity"></param>
  244. /// <param name="User"></param>
  245. /// <param name="WorkPoint"></param>
  246. /// <param name="TransType"></param>
  247. /// <param name="BusinessCode"></param>
  248. /// <param name="cmd"></param>
  249. public static void WareHouseLotInfoTransfer(string Identification, string TransCode, string TransSequence, string WarehouseCode, string LocationCode,
  250. string LotNo, string Quantity, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  251. {
  252. try
  253. {
  254. ///添加日志
  255. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  256. BEGIN
  257. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  258. RETURN
  259. END
  260. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  261. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  262. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  263. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  264. MTIME,WorkPoint,EATTRIBUTE1)
  265. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  266. c.WarehouseCode,c.LocationCode,'{9}','{10}','{6}',
  267. '','0','{7}','{8}','0','',
  268. '','','',f.F_Account ,f.F_RealName ,
  269. SYSDATETIME() ,a.WorkPoint ,''
  270. FROM ICSInventoryLot a
  271. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  272. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  273. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  274. ";
  275. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, WarehouseCode, LocationCode);
  276. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  277. {
  278. throw new Exception("" + language.GetNameByCode("WMSAPIInfo166") + @"");
  279. }
  280. ///添加库存
  281. sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity>0)
  282. BEGIN
  283. RAISERROR('" + language.GetNameByCode("WMSAPIInfo038") + @"',16,1);
  284. RETURN
  285. END
  286. IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE LotNo='{0}' AND WorkPoint='{1}' AND a.Quantity<'{4}')
  287. BEGIN
  288. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  289. RETURN
  290. END
  291. UPDATE ICSWareHouseLotInfo SET WarehouseCode='{2}',LocationCode='{3}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  292. ";
  293. sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode, Quantity);
  294. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  295. {
  296. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存表更新失败!");
  297. }
  298. }
  299. catch (Exception)
  300. {
  301. throw;
  302. }
  303. }
  304. /// <summary>
  305. /// 移库
  306. /// </summary>
  307. /// <param name="LocationCode"></param>
  308. /// <param name="LotNo"></param>
  309. /// <param name="Quantity"></param>
  310. /// <param name="User"></param>
  311. /// <param name="WorkPoint"></param>
  312. /// <param name="TransType"></param>
  313. /// <param name="BusinessCode"></param>
  314. /// <param name="cmd"></param>
  315. public static void WareHouseLotInfoLibrary(string Identification, string TransCode, string TransSequence, string WarehouseCode, string LocationCode,
  316. string LotNo, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  317. {
  318. try
  319. {
  320. ///添加日志
  321. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  322. BEGIN
  323. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  324. RETURN
  325. END
  326. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  327. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  328. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  329. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  330. MTIME,WorkPoint,EATTRIBUTE1)
  331. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  332. c.WarehouseCode,c.LocationCode,'{8}','{9}',c.Quantity,
  333. '','0','{6}','{7}','0','',
  334. '','','',f.F_Account ,f.F_RealName ,
  335. SYSDATETIME() ,a.WorkPoint ,''
  336. FROM ICSInventoryLot a
  337. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  338. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  339. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  340. ";
  341. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, BusinessCode, WarehouseCode, LocationCode);
  342. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  343. {
  344. throw new Exception("" + language.GetNameByCode("WMSAPIInfo166") + @"");
  345. }
  346. ///添加库存
  347. sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity>0)
  348. BEGIN
  349. RAISERROR('" + language.GetNameByCode("WMSAPIInfo038") + @"',16,1);
  350. RETURN
  351. END
  352. UPDATE ICSWareHouseLotInfo SET WarehouseCode='{2}',LocationCode='{3}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  353. ";
  354. sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode);
  355. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  356. {
  357. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存表更新失败!");
  358. }
  359. }
  360. catch (Exception)
  361. {
  362. throw;
  363. }
  364. }
  365. /// <summary>
  366. /// 两步调入
  367. /// </summary>
  368. /// <param name="LocationCode"></param>
  369. /// <param name="LotNo"></param>
  370. /// <param name="Quantity"></param>
  371. /// <param name="User"></param>
  372. /// <param name="WorkPoint"></param>
  373. /// <param name="TransType"></param>
  374. /// <param name="BusinessCode"></param>
  375. /// <param name="cmd"></param>
  376. public static void WareHouseLotInfoTwoStepTransferDocIn(string Identification, string TransCode, string TransSequence, string WarehouseCode,
  377. string LocationCode, string LotNo, string Quantity, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  378. {
  379. try
  380. {
  381. ///添加日志
  382. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  383. BEGIN
  384. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  385. RETURN
  386. END
  387. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  388. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  389. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  390. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  391. MTIME,WorkPoint,EATTRIBUTE1)
  392. SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
  393. c.WarehouseCode,c.LocationCode,'{9}','{10}','{6}',
  394. '','0','{7}','{8}','0','',
  395. '','','',f.F_Account ,f.F_RealName ,
  396. SYSDATETIME() ,a.WorkPoint ,''
  397. FROM ICSInventoryLot a
  398. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  399. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  400. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  401. ";
  402. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, WarehouseCode, LocationCode);
  403. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  404. {
  405. throw new Exception("" + language.GetNameByCode("WMSAPIInfo166") + @"");
  406. }
  407. ///添加库存
  408. sql = @"IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity>0)
  409. BEGIN
  410. RAISERROR('" + language.GetNameByCode("WMSAPIInfo164") + @"',16,1);
  411. RETURN
  412. END
  413. UPDATE ICSWareHouseLotInfo SET WarehouseCode='{2}',LocationCode='{3}',Quantity='{4}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  414. ";
  415. sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode, Quantity);
  416. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  417. {
  418. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存表更新失败!");
  419. }
  420. }
  421. catch (Exception)
  422. {
  423. throw;
  424. }
  425. }
  426. /// <summary>
  427. /// 拆分、合并日志
  428. /// </summary>
  429. /// <param name="Identification"></param>
  430. /// <param name="LotNo"></param>
  431. /// <param name="User"></param>
  432. /// <param name="WorkPoint"></param>
  433. /// <param name="TransType"></param>
  434. /// <param name="BusinessCode"></param>
  435. /// <param name="cmd"></param>
  436. public static void WareHouseLotInfoLog(string Identification, string LotNo, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  437. {
  438. try
  439. {
  440. ///添加日志
  441. string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  442. BEGIN
  443. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  444. RETURN
  445. END
  446. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  447. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  448. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  449. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  450. MTIME,WorkPoint,EATTRIBUTE1)
  451. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  452. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  453. '','0','{4}','{5}','0','',
  454. '','','',f.F_Account ,f.F_RealName ,
  455. SYSDATETIME() ,a.WorkPoint ,''
  456. FROM ICSInventoryLot a
  457. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  458. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  459. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  460. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  461. ";
  462. sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode);
  463. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  464. {
  465. throw new Exception("" + language.GetNameByCode("WMSAPIInfo166") + @"");
  466. }
  467. }
  468. catch (Exception)
  469. {
  470. throw;
  471. }
  472. }
  473. /// <summary>
  474. /// 合并
  475. /// </summary>
  476. /// <param name="Identification"></param>
  477. /// <param name="LotNo"></param>
  478. /// <param name="User"></param>
  479. /// <param name="WorkPoint"></param>
  480. /// <param name="TransType"></param>
  481. /// <param name="BusinessCode"></param>
  482. /// <param name="cmd"></param>
  483. public static void WareHouseLotInfoMerge(string Identification, string LotNo, string CurrentLotNo, string Quantity, string User, string WorkPoint, string TransType,
  484. string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  485. {
  486. try
  487. {
  488. ///更新目标条码库存
  489. string sql = @"IF NOT EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  490. INNER JOIN ICSInventoryLot b ON b.LotNo='{3}' AND a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  491. WHERE a.LotNo='{0}' AND a.WorkPoint='6000')
  492. BEGIN
  493. RAISERROR('" + language.GetNameByCode("WMSAPIInfo170") + @"',16,1);
  494. RETURN
  495. END
  496. IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  497. BEGIN
  498. RAISERROR('" + language.GetNameByCode("WMSAPIInfo171") + @"',16,1);
  499. RETURN
  500. END
  501. UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  502. ";
  503. sql = string.Format(sql, LotNo, WorkPoint, Quantity,CurrentLotNo);
  504. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  505. {
  506. throw new Exception(language.GetNameByCode("WMSAPIInfo169"));//"目标条码库存更新失败!");
  507. }
  508. ///更新原条码库存
  509. sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  510. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
  511. BEGIN
  512. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  513. RETURN
  514. END";
  515. sql = string.Format(sql, CurrentLotNo, WorkPoint, Quantity);
  516. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  517. {
  518. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  519. }
  520. ///添加日志
  521. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  522. BEGIN
  523. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  524. RETURN
  525. END
  526. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  527. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  528. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  529. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  530. MTIME,WorkPoint,EATTRIBUTE1)
  531. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  532. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  533. '','0','{4}','{5}','0','',
  534. '','','',f.F_Account ,f.F_RealName ,
  535. SYSDATETIME() ,a.WorkPoint ,''
  536. FROM ICSInventoryLot a
  537. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  538. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  539. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  540. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  541. ";
  542. sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Identification, TransType, BusinessCode);
  543. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  544. {
  545. throw new Exception("" + language.GetNameByCode("WMSAPIInfo166") + @"");
  546. }
  547. }
  548. catch (Exception)
  549. {
  550. throw;
  551. }
  552. }
  553. /// <summary>
  554. /// 拆分
  555. /// </summary>
  556. /// <param name="Identification"></param>
  557. /// <param name="LotNo"></param>
  558. /// <param name="User"></param>
  559. /// <param name="WorkPoint"></param>
  560. /// <param name="TransType"></param>
  561. /// <param name="BusinessCode"></param>
  562. /// <param name="cmd"></param>
  563. public static void WareHouseLotInfoSplit(string Identification, string LotNo, string CurrentLotNo, string Quantity, string User, string WorkPoint, string TransType,
  564. string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  565. {
  566. try
  567. {
  568. ///更新库存
  569. string sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
  570. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
  571. BEGIN
  572. RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
  573. RETURN
  574. END";
  575. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  576. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  577. {
  578. throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
  579. }
  580. #region 添加库存
  581. //插入条码表
  582. sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  583. BEGIN
  584. RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
  585. RETURN
  586. END
  587. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a WHERE a.LotNo='{4}' AND a.WorkPoint='{1}')
  588. BEGIN
  589. RAISERROR('" + language.GetNameByCode("WMSAPIInfo172") + @"',16,1);
  590. RETURN
  591. END
  592. INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  593. SELECT NEWID(),'{4}' ,a.InvCode,a.ProductDate,a.ExpirationDate ,'{3}',a.ExtensionID,'10',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,a.LotNo
  594. FROM ICSInventoryLot a
  595. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  596. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  597. sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, CurrentLotNo);
  598. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  599. {
  600. throw new Exception(language.GetNameByCode("WMSAPIInfo173"));//"条码表写入失败!");
  601. }
  602. //插入条码单据表
  603. sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  604. SELECT '{3}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
  605. FROM ICSInventoryLot a
  606. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  607. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  608. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  609. sql = string.Format(sql, LotNo, WorkPoint, User, CurrentLotNo);
  610. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  611. {
  612. throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
  613. }
  614. ///添加库存
  615. sql = @"IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
  616. BEGIN
  617. RAISERROR('" + language.GetNameByCode("WMSAPIInfo164") + @"',16,1);
  618. RETURN
  619. END
  620. INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  621. SELECT NEWID(),a.LotNo ,d.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
  622. FROM ICSInventoryLot a
  623. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  624. INNER JOIN ICSWareHouseLotInfo d ON a.EATTRIBUTE1=d.LotNo AND a.WorkPoint=d.WorkPoint
  625. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  626. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  627. sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Quantity);
  628. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  629. {
  630. throw new Exception("" + language.GetNameByCode("WMSAPIInfo165") + @"");
  631. }
  632. ///添加日志
  633. sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  634. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  635. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  636. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  637. MTIME,WorkPoint,EATTRIBUTE1)
  638. SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  639. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  640. '','0','{4}','{5}','0','',
  641. '','','',f.F_Account ,f.F_RealName ,
  642. SYSDATETIME() ,a.WorkPoint ,''
  643. FROM ICSInventoryLot a
  644. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  645. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  646. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  647. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  648. ";
  649. sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Identification, TransType, BusinessCode);
  650. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  651. {
  652. throw new Exception("" + language.GetNameByCode("WMSAPIInfo166") + @"");
  653. }
  654. #endregion
  655. }
  656. catch (Exception)
  657. {
  658. throw;
  659. }
  660. }
  661. /// <summary>
  662. /// 回写ERP ID
  663. /// </summary>
  664. /// <param name="TransType"></param>
  665. /// <param name="SourceDetailID"></param>
  666. /// <param name="Identification"></param>
  667. /// <param name="ID"></param>
  668. /// <param name="DetailID"></param>
  669. /// <param name="Code"></param>
  670. /// <param name="Sequence"></param>
  671. /// <param name="cmd"></param>
  672. public static void WareHouseLotInfoLogUpdate(string TransType, string SourceDetailID, string Identification, string ID, string DetailID, string Code, string Sequence, SqlCommand cmd, Dictionary<string, string> language)
  673. {
  674. string ERPupdate = string.Empty;
  675. try
  676. {
  677. //采购入库
  678. if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription())
  679. {
  680. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  681. FROM ICSWareHouseLotInfoLog a
  682. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  683. INNER JOIN ICSPurchaseOrder c ON b.TransCode=c.POCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  684. WHERE c.PODetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  685. ";
  686. }
  687. //审核的到货单
  688. else if (TransType == TransTypeEnum.DeliveryNotice.GetDescription())
  689. {
  690. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  691. FROM ICSWareHouseLotInfoLog a
  692. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  693. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  694. WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  695. ";
  696. }
  697. //采购拒收
  698. else if (TransType == TransTypeEnum.PurchaseRejectDoc.GetDescription())
  699. {
  700. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  701. FROM ICSWareHouseLotInfoLog a
  702. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  703. INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  704. WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  705. ";
  706. }
  707. //审核的委外到货单
  708. else if (TransType == TransTypeEnum.ODeliveryNotice.GetDescription())
  709. {
  710. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  711. FROM ICSWareHouseLotInfoLog a
  712. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  713. INNER JOIN ICSODeliveryNotice c ON b.TransCode=c.ODNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  714. WHERE c.ODNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  715. ";
  716. }
  717. //委外拒收
  718. else if (TransType == TransTypeEnum.OutsourcingRejectDoc.GetDescription())
  719. {
  720. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  721. FROM ICSWareHouseLotInfoLog a
  722. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  723. INNER JOIN ICSODeliveryNotice c ON b.TransCode=c.ODNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  724. WHERE c.ODNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  725. ";
  726. }
  727. //采购退货
  728. else if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
  729. {
  730. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  731. FROM ICSWareHouseLotInfoLog a
  732. INNER JOIN ICSDeliveryNotice c ON a.TransCode=c.DNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  733. WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.DNType='2'
  734. ";
  735. }
  736. //委外发料
  737. else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
  738. {
  739. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  740. FROM ICSWareHouseLotInfoLog a
  741. INNER JOIN ICSOutsourcingOrder y ON a.TransCode=y.OOCode AND a.WorkPoint=y.WorkPoint
  742. INNER JOIN ICSOOPick x ON x.OODetailID=y.OODetailID AND a.TransSequence=y.Sequence+'-'+x.Sequence AND x.WorkPoint=y.WorkPoint
  743. WHERE x.PickID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  744. ";
  745. }
  746. //委外退料
  747. else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
  748. || TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
  749. || TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
  750. {
  751. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  752. FROM ICSWareHouseLotInfoLog a
  753. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  754. INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  755. WHERE c.SourceDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  756. ";
  757. }
  758. //委外入库
  759. else if (TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription())
  760. {
  761. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  762. FROM ICSWareHouseLotInfoLog a
  763. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  764. INNER JOIN ICSOutsourcingOrder c ON b.TransCode=c.OOCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  765. WHERE c.OODetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  766. ";
  767. }
  768. //委外退货
  769. else if (TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription())
  770. {
  771. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  772. FROM ICSWareHouseLotInfoLog a
  773. INNER JOIN ICSODeliveryNotice c ON a.TransCode=c.ODNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  774. WHERE c.ODNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.ODNType='2'
  775. ";
  776. }
  777. //生产发料
  778. else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
  779. {
  780. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  781. FROM ICSWareHouseLotInfoLog a
  782. INNER JOIN ICSMO y ON a.TransCode=y.MOCode AND a.WorkPoint=y.WorkPoint
  783. INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND a.TransSequence=y.Sequence+'-'+x.Sequence AND x.WorkPoint=y.WorkPoint
  784. WHERE x.PickID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  785. ";
  786. }
  787. //生产退料
  788. else if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
  789. || TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
  790. || TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
  791. {
  792. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  793. FROM ICSWareHouseLotInfoLog a
  794. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  795. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  796. WHERE c.SourceDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  797. ";
  798. }
  799. //生产入库
  800. else if (TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription())
  801. {
  802. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  803. FROM ICSWareHouseLotInfoLog a
  804. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  805. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  806. WHERE c.MODetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  807. ";
  808. }
  809. //开立的生产入库单
  810. else if (TransType == TransTypeEnum.ManufactureReceive.GetDescription())
  811. {
  812. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  813. FROM ICSWareHouseLotInfoLog a
  814. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  815. INNER JOIN ICSManufactureReceive c ON b.TransCode=c.RCVCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  816. WHERE c.RCVID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1'
  817. ";
  818. }
  819. //销售出库
  820. else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
  821. {
  822. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  823. FROM ICSWareHouseLotInfoLog a
  824. INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  825. WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1'
  826. ";
  827. }
  828. //销售退货
  829. else if (TransType == TransTypeEnum.SalesShipmentDocNegative.GetDescription())
  830. {
  831. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  832. FROM ICSWareHouseLotInfoLog a
  833. INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  834. WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2'
  835. ";
  836. }
  837. //一步调拨
  838. else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
  839. {
  840. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  841. FROM ICSWareHouseLotInfoLog a
  842. INNER JOIN ICSTransfer c ON a.TransCode=c.TransferNO AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  843. WHERE c.TransferID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1'
  844. ";
  845. }
  846. //两步调出
  847. else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
  848. {
  849. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  850. FROM ICSWareHouseLotInfoLog a
  851. INNER JOIN ICSOtherOut c ON a.TransCode=c.OutCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  852. INNER JOIN ICSTransfer d ON c.TransferDetailID=d.TransferDetailID AND c.WorkPoint=d.WorkPoint
  853. WHERE c.OutID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  854. ";
  855. }
  856. //两步调入
  857. else if (TransType == TransTypeEnum.TwoStepTransferDocIn.GetDescription())
  858. {
  859. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  860. FROM ICSWareHouseLotInfoLog a
  861. INNER JOIN ICSOtherIn b ON a.TransCode=b.InCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  862. INNER JOIN ICSTransfer c ON b.TransferDetailID=c.TransferDetailID AND b.WorkPoint=c.WorkPoint
  863. WHERE b.InID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  864. ";
  865. }
  866. //销售退货-原条码
  867. else if (TransType == TransTypeEnum.SalesReturnBack.GetDescription())
  868. {
  869. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  870. FROM ICSWareHouseLotInfoLog a
  871. INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  872. WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2'
  873. ";
  874. }
  875. //其他出库
  876. else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
  877. {
  878. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  879. FROM ICSWareHouseLotInfoLog a
  880. INNER JOIN ICSOtherOut c ON a.TransCode=c.OutCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  881. WHERE c.OutID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  882. ";
  883. }
  884. //其他入库
  885. else if (TransType == TransTypeEnum.OtherInDoc.GetDescription())
  886. {
  887. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  888. FROM ICSWareHouseLotInfoLog a
  889. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  890. INNER JOIN ICSOtherIn c ON b.TransCode=c.InCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  891. WHERE c.InID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  892. ";
  893. }
  894. //拆卸单
  895. else if (TransType == TransTypeEnum.DisassemblyDoc.GetDescription())
  896. {
  897. ERPupdate = @"UPDATE d set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  898. FROM ICSWareHouseLotInfoLog a
  899. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  900. INNER JOIN ICSDisassemblyDoc c ON b.TransCode=c.DABDOCCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  901. INNER JOIN ICSWareHouseLotInfoLog d ON b.TransCode=d.TransCode AND d.TransSequence='1' AND b.WorkPoint=d.WorkPoint
  902. WHERE c.DABDOCID='{0}' AND a.Identification='{1}' AND d.ERPUpload='0'
  903. UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  904. FROM ICSWareHouseLotInfoLog a
  905. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  906. INNER JOIN ICSDisassemblyDoc c ON b.TransCode=c.DABDOCCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  907. WHERE c.DABDOCID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.DABDOCType='2'
  908. ";
  909. }
  910. //领料申请单
  911. else if (TransType == TransTypeEnum.MOApply.GetDescription())
  912. {
  913. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  914. FROM ICSWareHouseLotInfoLog a
  915. INNER JOIN ICSMOApply c ON a.TransCode=c.ApplyCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  916. WHERE c.ApplyDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  917. ";
  918. }
  919. //委外领料申请单
  920. else if (TransType == TransTypeEnum.OOApply.GetDescription())
  921. {
  922. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  923. FROM ICSWareHouseLotInfoLog a
  924. INNER JOIN ICSOApply c ON a.TransCode=c.ApplyCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  925. WHERE c.ApplyDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  926. ";
  927. }
  928. //开立材料出库
  929. else if (TransType == TransTypeEnum.MOIssue.GetDescription())
  930. {
  931. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  932. FROM ICSWareHouseLotInfoLog a
  933. INNER JOIN ICSMOIssue c ON a.TransCode=c.IssueCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  934. WHERE c.IssueID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  935. ";
  936. }
  937. //开立委外材料出库
  938. else if (TransType == TransTypeEnum.OOIssue.GetDescription())
  939. {
  940. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  941. FROM ICSWareHouseLotInfoLog a
  942. INNER JOIN ICSOIssue c ON a.TransCode=c.IssueCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  943. WHERE c.IssueID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  944. ";
  945. }
  946. //开立红字入库单
  947. else if (TransType == TransTypeEnum.PurchaseReceive.GetDescription())
  948. {
  949. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  950. FROM ICSWareHouseLotInfoLog a
  951. INNER JOIN ICSPurchaseReceive c ON a.TransCode=c.RCVCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  952. WHERE c.RCVID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2'
  953. ";
  954. }
  955. //开立委外红字入库单
  956. else if (TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription())
  957. {
  958. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  959. FROM ICSWareHouseLotInfoLog a
  960. INNER JOIN ICSOutsourcingReceive c ON a.TransCode=c.RCVCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  961. WHERE c.RCVID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2'
  962. ";
  963. }
  964. //借用
  965. else if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
  966. {
  967. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  968. FROM ICSWareHouseLotInfoLog a
  969. INNER JOIN ICSBrrow c ON a.TransCode=c.BrrowCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  970. WHERE c.BrrowDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  971. ";
  972. }
  973. //归还
  974. else if (TransType == TransTypeEnum.ReturnDoc.GetDescription())
  975. {
  976. ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  977. FROM ICSWareHouseLotInfoLog a
  978. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  979. INNER JOIN ICSReturn c ON b.TransCode=c.ReturnCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  980. WHERE c.ReturnDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0'
  981. ";
  982. }
  983. ERPupdate = string.Format(ERPupdate, SourceDetailID, Identification, ID, DetailID, Code, Sequence);
  984. if (!DBHelper.ExecuteNonQuery(ERPupdate, cmd))
  985. {
  986. throw new Exception(TransType + language.GetNameByCode("WMSAPIInfo175"));//"回写日志失败!");
  987. }
  988. }
  989. catch (Exception ex)
  990. {
  991. log.Debug(ex.ToString());
  992. log.Debug(TransType + Environment.NewLine + ERPupdate);
  993. }
  994. }
  995. }
  996. }