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.

4501 lines
353 KiB

3 weeks ago
  1. using ICSSoft.Common;
  2. using ICSSoft.Entity;
  3. using Newtonsoft.Json;
  4. using Newtonsoft.Json.Linq;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Data.SqlClient;
  9. using System.Linq;
  10. using System.Net.Http;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. namespace ICSSoft.DataProject
  14. {
  15. /// <summary>
  16. /// 使用中
  17. /// 生产模块
  18. /// </summary>
  19. public class ICSManufactureService
  20. {
  21. private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
  22. #region 生产发料
  23. /// <summary>
  24. /// 生产发料
  25. /// </summary>
  26. /// <param name="TransCode"></param>
  27. /// <param name="TransSequence"></param>
  28. /// <param name="Quantity"></param>
  29. /// <param name="WorkPoint"></param>
  30. /// <param name="cmd"></param>
  31. public static void MOIssueDoc(string TransCode, string TransSequence, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language,string enableCode,string TransID)
  32. {
  33. try
  34. {
  35. string sql = @"DECLARE @Status VARCHAR(10)
  36. SELECT @Status=b.ERPStatus FROM ICSMOPick a
  37. INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
  38. WHERE b.MOCode='{0}' AND b.Sequence+'~'+a.Sequence='{3}' and a.id='{5}' AND a.WorkPoint='{1}'
  39. IF (@Status IS NULL)
  40. BEGIN
  41. RAISERROR('" + language.GetNameByCode("WMSAPIInfo125") + @"',16,1);
  42. RETURN
  43. END
  44. ELSE IF (@Status!='2')
  45. BEGIN
  46. RAISERROR('" + language.GetNameByCode("WMSAPIInfo126") + @"',16,1);
  47. RETURN
  48. END
  49. UPDATE a SET IssueQuantity=ISNULL(IssueQuantity,0)+'{2}'
  50. FROM ICSMOPick a
  51. INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
  52. WHERE b.MOCode='{0}' AND b.Sequence+'~'+a.Sequence='{3}' and a.id='{5}' AND a.WorkPoint='{1}'
  53. --IF EXISTS(SELECT a.ID FROM ICSMOPick a
  54. --INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
  55. --WHERE b.MOCode='{0}' AND b.Sequence+'~'+a.Sequence='{3}' and a.WorkPoint='{1}'
  56. -- AND (dbo.GetExcessQty(a.InvCode, b.Sequence+'~'+a.Sequence, b.MOCode, a.WorkPoint,'{4}'))<a.IssueQuantity)
  57. --BEGIN
  58. --RAISERROR('" + language.GetNameByCode("WMSAPIInfo091") + @"',16,1);
  59. --RETURN
  60. --END
  61. ";
  62. //东辉增加的超发卡控
  63. if (DBHelper.IsU9())
  64. { sql += @"IF EXISTS(SELECT a.ID FROM ICSMOPick a
  65. INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
  66. WHERE b.MOCode='{0}' AND b.Sequence+'~'+a.Sequence='{3}' and a.WorkPoint='{1}'
  67. AND try_cast( ISNULL(a.EATTRIBUTE3 ,a.Quantity) as DECIMAL(10,2))<a.IssueQuantity)
  68. BEGIN
  69. RAISERROR('"" + language.GetNameByCode(""WMSAPIInfo091"") + @""',16,1);
  70. RETURN
  71. END
  72. ";
  73. }
  74. sql = string.Format(sql, TransCode, WorkPoint, Quantity, TransSequence, enableCode, TransID);
  75. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  76. {
  77. throw new Exception(language.GetNameByCode("WMSAPIInfo127"));//"生产领料单更新失败!");
  78. }
  79. }
  80. catch (Exception)
  81. {
  82. throw;
  83. }
  84. }
  85. /// <summary>
  86. /// 生产发料
  87. /// </summary>
  88. /// <param name="TransCode"></param>
  89. /// <param name="TransSequence"></param>
  90. /// <param name="Quantity"></param>
  91. /// <param name="WorkPoint"></param>
  92. /// <param name="cmd"></param>
  93. public static void AMMOIssueDoc(string TransCode, string TransSequence, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language, string enableCode)
  94. {
  95. try
  96. {
  97. string cheksql = @"select c.EATTRIBUTE1 FROM ICSMOPick a
  98. INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
  99. INNER JOIN ICSInventory c on a.InvCode=c.InvCode and a.WorkPoint=c.WorkPoint
  100. WHERE b.MOCode='{0}' AND b.Sequence+'~'+a.Sequence='{3}' AND a.WorkPoint='{1}' and c.AmountEnable='1'";
  101. cheksql = string.Format(cheksql, TransCode, WorkPoint, Quantity, TransSequence, enableCode);
  102. DataTable dt = DBHelper.SQlReturnData(cheksql, cmd);
  103. if (dt.Rows.Count > 0)
  104. {
  105. Quantity = (decimal.Parse(Quantity) * decimal.Parse(dt.Rows[0]["EATTRIBUTE1"].ToString())).ToString();
  106. }
  107. string sql = @"DECLARE @Status VARCHAR(10)
  108. SELECT @Status=b.ERPStatus FROM ICSMOPick a
  109. INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
  110. WHERE b.MOCode='{0}' AND b.Sequence+'~'+a.Sequence='{3}' AND a.WorkPoint='{1}'
  111. IF (@Status IS NULL)
  112. BEGIN
  113. RAISERROR('" + language.GetNameByCode("WMSAPIInfo125") + @"',16,1);
  114. RETURN
  115. END
  116. ELSE IF (@Status!='2')
  117. BEGIN
  118. RAISERROR('" + language.GetNameByCode("WMSAPIInfo126") + @"',16,1);
  119. RETURN
  120. END
  121. UPDATE a SET IssueQuantity=ISNULL(IssueQuantity,0)+'{2}'
  122. FROM ICSMOPick a
  123. INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
  124. WHERE b.MOCode='{0}' AND b.Sequence+'~'+a.Sequence='{3}' AND a.WorkPoint='{1}'
  125. --IF EXISTS(SELECT a.ID FROM ICSMOPick a
  126. --INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
  127. --WHERE b.MOCode='{0}' AND b.Sequence+'~'+a.Sequence='{3}' and a.WorkPoint='{1}'
  128. -- AND (dbo.GetExcessQty(a.InvCode, b.Sequence+'~'+a.Sequence, b.MOCode, a.WorkPoint,'{4}'))<a.IssueQuantity)
  129. --BEGIN
  130. --RAISERROR('" + language.GetNameByCode("WMSAPIInfo091") + @"',16,1);
  131. --RETURN
  132. --END
  133. ";
  134. sql = string.Format(sql, TransCode, WorkPoint, Quantity, TransSequence, enableCode);
  135. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  136. {
  137. throw new Exception(language.GetNameByCode("WMSAPIInfo127"));//"生产领料单更新失败!");
  138. }
  139. }
  140. catch (Exception)
  141. {
  142. throw;
  143. }
  144. }
  145. /// <summary>
  146. /// 生产发料接口
  147. /// </summary>
  148. /// <param name="TransType"></param>
  149. /// <param name="Identification"></param>
  150. /// <param name="cmd"></param>
  151. public static void MOIssueDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode,string VenCode)
  152. {
  153. try
  154. {
  155. #region ERP
  156. string sql = string.Empty;
  157. string aasql = @"SELECT DISTINCT
  158. b.F_Define1
  159. FROM Sys_SRM_Items a
  160. LEFT JOIN Sys_SRM_ItemsDetail b ON a.F_Id = b.F_ItemId
  161. WHERE a.F_EnCode = 'InventoryLotWareHouseFixed'";
  162. DataTable adtt = DBHelper.SQlReturnData(aasql, cmd);
  163. if (adtt.Rows.Count > 0 && adtt != null)//晶华项目
  164. {
  165. sql = @"DECLARE @MOCode NVARCHAR(100);
  166. SELECT @MOCode = y.MOCode
  167. FROM ICSWareHouseLotInfoLog a
  168. INNER JOIN ICSMO y ON a.TransCode = y.MOCode AND a.WorkPoint = y.WorkPoint
  169. INNER JOIN ICSMOPick x ON x.MODetailID = y.MODetailID
  170. AND a.TransSequence = y.Sequence + '~' + x.Sequence
  171. AND a.transid = x.id
  172. AND x.WorkPoint = y.WorkPoint
  173. WHERE a.Identification = '{0}'
  174. AND a.ERPUpload = '0'
  175. AND a.BusinessCode = '{1}'
  176. AND ISNULL(x.Quantity, 0) <= 0;
  177. IF @MOCode IS NOT NULL
  178. BEGIN
  179. RAISERROR(':%s0', 16, 1, @MOCode);
  180. RETURN;
  181. END
  182. select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,TransCode,TransSequence,FromWarehouseCode,transid
  183. INTO #NewTempERP
  184. from ICSWareHouseLotInfoLog
  185. WHERE Identification='{0}' AND ERPUpload='0' AND BusinessCode = '{1}'
  186. SELECT isnull(y.DepCode,'')+a.FromWarehouseCode+y.MOCode+a.MUSER+CONVERT(VARCHAR(23), lot.ProductDate, 121) AS Costre,y.DepCode,a.FromWarehouseCode AS WarehouseCode,y.MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY y.DepCode,a.FromWarehouseCode,y.MOCode,x.PickID,a.InvCode) AS Sequence,CAST(SUBSTRING(a.TransSequence, CHARINDEX('~', a.TransSequence) + 1, LEN(a.TransSequence)) AS INT) AS TransSequence,
  187. a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(x.Amount/x.Quantity)) ELSE '0' END AS Amount,x.PickID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,conWhCode.Enable AS ErpWhCode
  188. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  189. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10,conv.Enable AS CompleteVerification
  190. ,'1'as DocTypeCode,inv.InvRate,lot.ProductDate
  191. INTO #TempERP
  192. FROM #NewTempERP a
  193. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  194. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  195. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  196. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  197. INNER JOIN ICSMO y ON a.TransCode=y.MOCode AND a.WorkPoint=y.WorkPoint
  198. INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND a.TransSequence=y.Sequence+'~'+x.Sequence and a.transid=x.id AND x.WorkPoint=y.WorkPoint
  199. INNER JOIN ICSConfiguration con ON con.Code='Stock002' AND a.WorkPoint=con.WorkPoint
  200. INNER JOIN ICSConfiguration conv ON conv.Code='CompleteVerification001' AND a.WorkPoint=conv.WorkPoint
  201. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  202. INNER JOIN ICSConfiguration conWhCode ON conWhCode.Code='ERPWHCode' AND a.WorkPoint=conWhCode.WorkPoint
  203. GROUP BY lot.ProductDate,conWhCode.Enable,a.TransSequence,inv.AmountEnable,y.DepCode,a.FromWarehouseCode,y.MOCode,a.MUSER,a.InvCode,x.PickID,x.MODetailID,con.Enable,conv.Enable,conStock.Enable,inv.InvRate
  204. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  205. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  206. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,'' AS SourceType,MOCode AS SourceCode,MUSER AS [User],UpdateTodoQuantity,CompleteVerification,UpdateStock FROM #TempERP
  207. SELECT TransSequence AS SubLineNO,WarehouseCode AS WHCode,Costre,'{2}' AS Vender,Sequence,InvCode,InvRate,Quantity,Amount,CASE WHEN isnull(ErpWhCode,0)='1' then WarehouseCode ELSE '' END AS WHCode,PickID AS SourceDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 FROM #TempERP
  208. DROP TABLE #TempERP
  209. DROP TABLE #NewTempERP";
  210. }
  211. else
  212. {
  213. sql = @"select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,TransCode,TransSequence,FromWarehouseCode,transid
  214. INTO #NewTempERP
  215. from ICSWareHouseLotInfoLog
  216. WHERE Identification='{0}' AND ERPUpload='0' AND BusinessCode = '{1}'
  217. SELECT isnull(y.DepCode,'')+a.FromWarehouseCode+y.MOCode+a.MUSER AS Costre,y.DepCode,a.FromWarehouseCode AS WarehouseCode,y.MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY y.DepCode,a.FromWarehouseCode,y.MOCode,x.PickID,a.InvCode) AS Sequence,CAST(SUBSTRING(a.TransSequence, CHARINDEX('~', a.TransSequence) + 1, LEN(a.TransSequence)) AS INT) AS TransSequence,
  218. a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(x.Amount/x.Quantity)) ELSE '0' END AS Amount,x.PickID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,conWhCode.Enable AS ErpWhCode
  219. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  220. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10,conv.Enable AS CompleteVerification
  221. ,'1'as DocTypeCode,inv.InvRate
  222. INTO #TempERP
  223. FROM #NewTempERP a
  224. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  225. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  226. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  227. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  228. INNER JOIN ICSMO y ON a.TransCode=y.MOCode AND a.WorkPoint=y.WorkPoint
  229. INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND a.TransSequence=y.Sequence+'~'+x.Sequence and a.transid=x.id AND x.WorkPoint=y.WorkPoint
  230. INNER JOIN ICSConfiguration con ON con.Code='Stock002' AND a.WorkPoint=con.WorkPoint
  231. INNER JOIN ICSConfiguration conv ON conv.Code='CompleteVerification001' AND a.WorkPoint=conv.WorkPoint
  232. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  233. INNER JOIN ICSConfiguration conWhCode ON conWhCode.Code='ERPWHCode' AND a.WorkPoint=conWhCode.WorkPoint
  234. GROUP BY conWhCode.Enable,a.TransSequence,inv.AmountEnable,y.DepCode,a.FromWarehouseCode,y.MOCode,a.MUSER,a.InvCode,x.PickID,x.MODetailID,con.Enable,conv.Enable,conStock.Enable,inv.InvRate
  235. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  236. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  237. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,'' AS SourceType,MOCode AS SourceCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,CompleteVerification,UpdateStock FROM #TempERP
  238. SELECT TransSequence AS SubLineNO,WarehouseCode AS WHCode,Costre,'{2}' AS Vender,Sequence,InvCode,InvRate,Quantity,Amount,CASE WHEN isnull(ErpWhCode,0)='1' then WarehouseCode ELSE '' END AS WHCode,PickID AS SourceDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 FROM #TempERP
  239. DROP TABLE #TempERP
  240. DROP TABLE #NewTempERP";
  241. }
  242. sql = string.Format(sql, Identification, BusinessCode, VenCode);
  243. DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  244. string Inputstr = DataToJsonHelper.DataSetToJson(ds, "details", "Costre");
  245. string resultStr = "";
  246. //if (DBHelper.IsU9())
  247. //{
  248. // resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.U9MOIssueDocURL, Inputstr);
  249. //}
  250. //else
  251. //{
  252. resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.MOIssueDocURL, Inputstr);
  253. //}
  254. Result result = new Result();
  255. result = JsonConvert.DeserializeObject<Result>(resultStr);
  256. if (result.Success)
  257. {
  258. try
  259. {
  260. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  261. foreach (var item in res)
  262. {
  263. JObject jo = (JObject)item;
  264. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  265. foreach (var detail in resdetail)
  266. {
  267. JObject det = (JObject)detail;
  268. if (adtt.Rows.Count > 0 && adtt != null)
  269. {
  270. string ERPUpdatesql = @"update ICSWareHouseLotInfoLog set ERPCode='{1}' where Identification='{0}'";
  271. ERPUpdatesql = string.Format(ERPUpdatesql,Identification, jo["TransCode"].ToString());
  272. if (!DBHelper.ExecuteNonQuery(ERPUpdatesql, cmd))
  273. {
  274. throw new Exception(TransType + language.GetNameByCode("WMSAPIInfo175"));//"回写日志失败!");
  275. }
  276. }
  277. else
  278. {
  279. string allcol = jo["WHCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  280. + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  281. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["SourceDetailID"].ToString(), Identification, jo["ID"].ToString(),
  282. det["DetailID"].ToString(), jo["IssueCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  283. }
  284. }
  285. }
  286. }
  287. catch (Exception ex)
  288. {
  289. log.Debug(ex.ToString());
  290. log.Debug(resultStr);
  291. }
  292. }
  293. else
  294. {
  295. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  296. }
  297. #endregion
  298. }
  299. catch (Exception)
  300. {
  301. throw;
  302. }
  303. }
  304. /// <summary>
  305. /// 金豪生产发料接口
  306. /// </summary>
  307. /// <param name="TransType"></param>
  308. /// <param name="Identification"></param>
  309. /// <param name="cmd"></param>
  310. public static void JHMOIssueDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode, string VenCode)
  311. {
  312. try
  313. {
  314. #region ERP
  315. string sql = @"SELECT LotNo, WorkPoint, InvCode, ToWarehouseCode, MUSER, Quantity, TransCode, TransSequence, FromWarehouseCode, transid
  316. INTO #NewTempERP
  317. FROM ICSWareHouseLotInfoLog
  318. WHERE Identification='{0}' AND ERPUpload='0' AND BusinessCode = '{1}'
  319. SELECT ISNULL(y.DepCode, '') + a.FromWarehouseCode + y.MOCode + a.MUSER AS Costre,y.DepCode,a.FromWarehouseCode AS WarehouseCode,y.CreateDateTime AS DocDate,inv.InvUnit,
  320. y.MOCode,a.MUSER,a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity * (x.Amount / x.Quantity)) ELSE '0' END AS Amount,
  321. x.PickID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,conWhCode.Enable AS ErpWhCode,a.WorkPoint,
  322. ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0') = '1') OR ISNULL(invBat.BatchEnable, '0') = '1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
  323. ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,
  324. ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10,
  325. conv.Enable AS CompleteVerification,'1' AS DocTypeCode,inv.InvRate
  326. INTO #TempERP
  327. FROM #NewTempERP a
  328. INNER JOIN ICSInventoryLot lot ON a.LotNo = lot.LotNo AND a.WorkPoint = lot.WorkPoint
  329. INNER JOIN ICSExtension ext ON lot.ExtensionID = ext.ID AND lot.WorkPoint = ext.WorkPoint
  330. INNER JOIN ICSInventory inv ON a.InvCode = inv.InvCode AND a.WorkPoint = inv.WorkPoint
  331. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode = invBat.InvCode AND a.FromWarehouseCode = invBat.WHCode AND a.WorkPoint = invBat.WorkPoint
  332. INNER JOIN ICSMO y ON a.TransCode = y.MOCode AND a.WorkPoint = y.WorkPoint
  333. LEFT JOIN ICSMOPick x ON x.MODetailID = y.MODetailID AND a.TransSequence = y.Sequence + '~' + x.Sequence AND a.transid = x.id AND x.WorkPoint = y.WorkPoint
  334. INNER JOIN ICSConfiguration con ON con.Code = 'Stock002' AND a.WorkPoint = con.WorkPoint
  335. INNER JOIN ICSConfiguration conv ON conv.Code = 'CompleteVerification001' AND a.WorkPoint = conv.WorkPoint
  336. INNER JOIN ICSConfiguration conStock ON conStock.Code = 'UpdateStock002' AND a.WorkPoint = conStock.WorkPoint
  337. INNER JOIN ICSConfiguration conWhCode ON conWhCode.Code = 'ERPWHCode' AND a.WorkPoint = conWhCode.WorkPoint
  338. GROUP BY y.CreateDateTime, inv.InvUnit, conWhCode.Enable, inv.AmountEnable, y.DepCode, a.FromWarehouseCode, y.MOCode, a.MUSER, a.InvCode, x.PickID, con.Enable, conv.Enable, conStock.Enable, inv.InvRate, a.WorkPoint, ISNULL(ext.ProjectCode, ''),
  339. CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0') = '1') OR ISNULL(invBat.BatchEnable, '0') = '1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,
  340. ISNULL(ext.Version, ''), ISNULL(ext.Brand, ''), ISNULL(ext.cFree1, ''), ISNULL(ext.cFree2, ''), ISNULL(ext.cFree3, ''), ISNULL(ext.cFree4, ''), ISNULL(ext.cFree5, ''), ISNULL(ext.cFree6, ''), ISNULL(ext.cFree7, ''),
  341. ISNULL(ext.cFree8, ''), ISNULL(ext.cFree9, ''), ISNULL(ext.cFree10, '')
  342. SELECT DISTINCT Costre, WorkPoint AS OrgCode, '' AS DocTypeCode, MOCode AS MOCODE, '' AS memo, MUSER AS [User], DocDate FROM #TempERP
  343. SELECT Costre,InvCode AS ITEM, InvUnit AS UOM, SUM(Quantity) AS ActualReqQty, WarehouseCode AS WH, ProjectCode, BatchCode AS LotNO, Version,
  344. Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10
  345. FROM #TempERP
  346. GROUP BY Costre,InvCode, InvUnit, WarehouseCode, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10
  347. DROP TABLE #TempERP
  348. DROP TABLE #NewTempERP";
  349. sql = string.Format(sql, Identification, BusinessCode, VenCode);
  350. DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  351. string Inputstr = DataToJsonHelper.DataSetToJson(ds, "linelist", "Costre");
  352. string resultStr = "";
  353. //if (DBHelper.IsU9())
  354. //{
  355. // resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.U9MOIssueDocURL, Inputstr);
  356. //}
  357. //else
  358. //{
  359. resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.JHMOIssueDocURL, Inputstr);
  360. //}
  361. Result result = new Result();
  362. result = JsonConvert.DeserializeObject<Result>(resultStr);
  363. if (result.Success)
  364. {
  365. try
  366. {
  367. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  368. foreach (var item in res)
  369. {
  370. JObject jo = (JObject)item;
  371. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  372. foreach (var detail in resdetail)
  373. {
  374. JObject det = (JObject)detail;
  375. string allcol = jo["WHCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  376. + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  377. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["SourceDetailID"].ToString(), Identification, jo["ID"].ToString(),
  378. det["DetailID"].ToString(), jo["IssueCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  379. }
  380. }
  381. }
  382. catch (Exception ex)
  383. {
  384. log.Debug(ex.ToString());
  385. log.Debug(resultStr);
  386. }
  387. }
  388. else
  389. {
  390. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  391. }
  392. #endregion
  393. }
  394. catch (Exception)
  395. {
  396. throw;
  397. }
  398. }
  399. /// <summary>
  400. /// 达翔生产发料接口
  401. /// </summary>
  402. /// <param name="TransType"></param>
  403. /// <param name="Identification"></param>
  404. /// <param name="cmd"></param>
  405. public static void DXMOIssueDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  406. {
  407. try
  408. {
  409. #region ERP
  410. string sql = @"select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,TransCode,TransSequence,FromWarehouseCode,transid
  411. INTO #NewTempERP
  412. from ICSWareHouseLotInfoLog
  413. WHERE Identification='{0}' AND ERPUpload='0' AND BusinessCode = '13'
  414. SELECT isnull(y.DepCode,'')+a.FromWarehouseCode+y.MOCode+a.MUSER AS Costre,y.DepCode,a.FromWarehouseCode AS WarehouseCode,y.MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY y.DepCode,a.FromWarehouseCode,y.MOCode,x.PickID,a.InvCode) AS Sequence,
  415. a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(x.Amount/x.Quantity)) ELSE '0' END AS Amount,x.PickID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock
  416. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  417. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10,conv.Enable AS CompleteVerification
  418. ,'1'as DocTypeCode
  419. INTO #TempERP
  420. FROM #NewTempERP a
  421. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  422. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  423. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  424. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  425. INNER JOIN ICSMO y ON a.TransCode=y.MOCode AND a.WorkPoint=y.WorkPoint
  426. INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND a.TransSequence=y.Sequence+'~'+x.Sequence and a.transid=x.id AND x.WorkPoint=y.WorkPoint
  427. INNER JOIN ICSConfiguration con ON con.Code='Stock002' AND a.WorkPoint=con.WorkPoint
  428. INNER JOIN ICSConfiguration conv ON conv.Code='CompleteVerification001' AND a.WorkPoint=conv.WorkPoint
  429. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  430. GROUP BY inv.AmountEnable,y.DepCode,a.FromWarehouseCode,y.MOCode,a.MUSER,a.InvCode,x.PickID,x.MODetailID,con.Enable,conv.Enable,conStock.Enable
  431. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  432. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  433. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,'' AS SourceType,MOCode AS SourceCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,CompleteVerification,UpdateStock FROM #TempERP
  434. SELECT WarehouseCode AS WHCode,Costre,Sequence,InvCode,Quantity,Amount,PickID AS SourceDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 FROM #TempERP
  435. DROP TABLE #TempERP
  436. DROP TABLE #NewTempERP";
  437. sql = string.Format(sql, Identification);
  438. DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  439. string Inputstr = DataToJsonHelper.DataSetToJson(ds, "details", "Costre");
  440. string resultStr = "";
  441. //if (DBHelper.IsU9())
  442. //{
  443. // resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.U9MOIssueDocURL, Inputstr);
  444. //}
  445. //else
  446. //{
  447. resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.DXMOIssueDocURL, Inputstr);
  448. //}
  449. Result result = new Result();
  450. result = JsonConvert.DeserializeObject<Result>(resultStr);
  451. if (result.Success)
  452. {
  453. try
  454. {
  455. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  456. foreach (var item in res)
  457. {
  458. JObject jo = (JObject)item;
  459. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  460. foreach (var detail in resdetail)
  461. {
  462. JObject det = (JObject)detail;
  463. string allcol = jo["WHCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  464. + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  465. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["SourceDetailID"].ToString(), Identification, jo["ID"].ToString(),
  466. det["DetailID"].ToString(), jo["IssueCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  467. }
  468. }
  469. }
  470. catch (Exception ex)
  471. {
  472. log.Debug(ex.ToString());
  473. log.Debug(resultStr);
  474. }
  475. }
  476. else
  477. {
  478. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  479. }
  480. #endregion
  481. }
  482. catch (Exception)
  483. {
  484. throw;
  485. }
  486. }
  487. #endregion
  488. #region 补料申请单生产发料
  489. /// <summary>
  490. /// 补料申请单生产发料
  491. /// </summary>
  492. /// <param name="TransCode"></param>
  493. /// <param name="TransSequence"></param>
  494. /// <param name="Quantity"></param>
  495. /// <param name="WorkPoint"></param>
  496. /// <param name="cmd"></param>
  497. public static void MOReplenishment(string TransCode, string TransSequence, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language,string enableCode)
  498. {
  499. try
  500. {
  501. string sql = @"DECLARE @Status VARCHAR(10)
  502. SELECT @Status=a.Status FROM ICSMOReplenishment a
  503. WHERE a.ReplenishmentCode='{0}' AND a.Sequence='{3}' AND a.WorkPoint='{1}'
  504. IF (@Status IS NULL)
  505. BEGIN
  506. RAISERROR('" + language.GetNameByCode("WMSAPIInfo128") + @"',16,1);
  507. RETURN
  508. END
  509. ELSE IF (@Status!='2')
  510. BEGIN
  511. RAISERROR('" + language.GetNameByCode("WMSAPIInfo129") + @"',16,1);
  512. RETURN
  513. END
  514. UPDATE a SET IssueQuantity=ISNULL(IssueQuantity,0)+'{2}'
  515. FROM ICSMOReplenishment a
  516. WHERE a.ReplenishmentCode='{0}' AND a.Sequence='{3}' AND a.WorkPoint='{1}'
  517. IF EXISTS(SELECT a.ID FROM ICSMOReplenishment a
  518. WHERE a.ReplenishmentCode='{0}' AND a.Sequence='{3}' and a.WorkPoint='{1}'
  519. AND (dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'{4}',2,2,''))<a.IssueQuantity)
  520. -- AND (dbo.GetExcessQty(a.InvCode, a.Sequence, a.ReplenishmentCode, a.WorkPoint,'{4}'))<a.IssueQuantity)
  521. BEGIN
  522. RAISERROR('" + language.GetNameByCode("WMSAPIInfo091") + @"',16,1);
  523. RETURN
  524. END";
  525. sql = string.Format(sql, TransCode, WorkPoint, Quantity, TransSequence,enableCode);
  526. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  527. {
  528. throw new Exception(language.GetNameByCode("WMSAPIInfo130"));//"领料申请单更新失败!");
  529. }
  530. }
  531. catch (Exception)
  532. {
  533. throw;
  534. }
  535. }
  536. /// <summary>
  537. /// 补料申请单生产发料接口
  538. /// </summary>
  539. /// <param name="TransType"></param>
  540. /// <param name="Identification"></param>
  541. /// <param name="cmd"></param>
  542. public static void MOReplenishmentERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language,string BusinessCode)
  543. {
  544. try
  545. {
  546. #region ERP
  547. string sql = @"SELECT a.FromWarehouseCode+b.ReplenishmentCode+ISNULL(c.DepCode,'')+a.MUSER AS Costre,a.FromWarehouseCode AS WarehouseCode,b.ReplenishmentCode,ISNULL(c.DepCode,'')AS DepCode,b.SourceCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY a.FromWarehouseCode,b.ReplenishmentCode,b.ReplenishmentDetailID,a.InvCode) AS Sequence,
  548. a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(b.Amount/b.Quantity)) ELSE '0' END AS Amount,b.ReplenishmentDetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,conWhCode.Enable AS ErpWhCode
  549. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  550. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10,conv.Enable AS CompleteVerification
  551. ,b.ReplenishmentID
  552. INTO #TempERP
  553. FROM ICSWareHouseLotInfoLog a
  554. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  555. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  556. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  557. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  558. INNER JOIN ICSMOReplenishment b ON a.TransCode=b.ReplenishmentCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  559. LEFT JOIN ( select mo.mocode,mo.DepCode ,mo.WorkPoint,isnull(pick.Sequence,mo.Sequence)as Sequence from ICSMO mo left join icsmopick pick on mo.modetailid = pick.modetailid) as c
  560. ON b.SourceCode=c.MOCode AND b.SourceSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  561. -- LEFT JOIN ICSMO c ON b.SourceCode=c.MOCode AND b.SourceSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  562. INNER JOIN ICSConfiguration con ON con.Code='Stock002' AND a.WorkPoint=con.WorkPoint
  563. INNER JOIN ICSConfiguration conv ON conv.Code='CompleteVerification001' AND a.WorkPoint=conv.WorkPoint
  564. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  565. INNER JOIN ICSConfiguration conWhCode ON conWhCode.Code='ERPWHCode' AND a.WorkPoint=conWhCode.WorkPoint
  566. WHERE a.Identification='{0}' AND ERPUpload='0' AND a.BusinessCode = '49'
  567. GROUP BY conWhCode.Enable,c.DepCode,inv.AmountEnable,a.FromWarehouseCode,b.ReplenishmentCode,b.SourceCode,a.MUSER,a.InvCode,b.ReplenishmentDetailID,b.ReplenishmentID,con.Enable,conv.Enable,conStock.Enable
  568. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  569. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  570. SELECT DISTINCT Costre,WorkPoint,ISNULL(DepCode,'') AS DepCode,WarehouseCode AS WHCode,'' AS SourceType,ReplenishmentCode AS SourceCode,SourceCode AS IssueCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,CompleteVerification,UpdateStock,ReplenishmentID as SourceID FROM #TempERP
  571. SELECT Costre,Sequence,InvCode,Quantity,Amount,CASE WHEN isnull(ErpWhCode,0)='1' then WarehouseCode ELSE '' END AS WHCode,ReplenishmentDetailID AS SourceDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 FROM #TempERP
  572. DROP TABLE #TempERP";
  573. sql = string.Format(sql, Identification);
  574. DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  575. string Inputstr = DataToJsonHelper.DataSetToJson(ds, "details", "Costre");
  576. string resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.MOReplenishmentURL, Inputstr);
  577. Result result = new Result();
  578. result = JsonConvert.DeserializeObject<Result>(resultStr);
  579. if (result.Success)
  580. {
  581. try
  582. {
  583. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  584. foreach (var item in res)
  585. {
  586. JObject jo = (JObject)item;
  587. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  588. foreach (var detail in resdetail)
  589. {
  590. JObject det = (JObject)detail;
  591. string allcol = jo["WHCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  592. + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  593. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["SourceDetailID"].ToString(), Identification, jo["ID"].ToString(),
  594. det["DetailID"].ToString(), jo["IssueCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  595. }
  596. }
  597. }
  598. catch (Exception ex)
  599. {
  600. log.Debug(ex.ToString());
  601. log.Debug(resultStr);
  602. }
  603. }
  604. else
  605. {
  606. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  607. }
  608. #endregion
  609. }
  610. catch (Exception)
  611. {
  612. throw;
  613. }
  614. }
  615. #endregion
  616. #region 领料申请单生产发料
  617. /// <summary>
  618. /// 领料申请单生产发料
  619. /// </summary>
  620. /// <param name="TransCode"></param>
  621. /// <param name="TransSequence"></param>
  622. /// <param name="Quantity"></param>
  623. /// <param name="WorkPoint"></param>
  624. /// <param name="cmd"></param>
  625. public static void MOApply(string TransCode, string TransSequence, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language, string enableCode, string TransID)
  626. {
  627. try
  628. {
  629. string sql = @"DECLARE @Status VARCHAR(10)
  630. SELECT @Status=a.Status FROM ICSMOApply a
  631. WHERE a.ApplyCode='{0}' AND a.Sequence='{3}' AND a.WorkPoint='{1}' and a.id='{5}'
  632. IF (@Status IS NULL)
  633. BEGIN
  634. RAISERROR('" + language.GetNameByCode("WMSAPIInfo128") + @"',16,1);
  635. RETURN
  636. END
  637. ELSE IF (@Status!='2')
  638. BEGIN
  639. RAISERROR('" + language.GetNameByCode("WMSAPIInfo129") + @"',16,1);
  640. RETURN
  641. END
  642. UPDATE a SET IssueQuantity=ISNULL(IssueQuantity,0)+'{2}'
  643. FROM ICSMOApply a
  644. WHERE a.ApplyCode='{0}' AND a.Sequence='{3}' AND a.WorkPoint='{1}' and a.id='{5}'
  645. IF EXISTS(SELECT a.ID FROM ICSMOApply a
  646. WHERE a.ApplyCode='{0}' AND a.Sequence='{3}' and a.id='{5}' and a.WorkPoint='{1}'
  647. AND (dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'{4}',2,2,''))<a.IssueQuantity)
  648. BEGIN
  649. RAISERROR('" + language.GetNameByCode("WMSAPIInfo091") + @"',16,1);
  650. RETURN
  651. END";
  652. sql = string.Format(sql, TransCode, WorkPoint, Quantity, TransSequence, enableCode, TransID);
  653. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  654. {
  655. throw new Exception(language.GetNameByCode("WMSAPIInfo130"));//"领料申请单更新失败!");
  656. }
  657. }
  658. catch (Exception)
  659. {
  660. throw;
  661. }
  662. }
  663. /// <summary>
  664. /// 领料申请单生产发料接口
  665. /// </summary>
  666. /// <param name="TransType"></param>
  667. /// <param name="Identification"></param>
  668. /// <param name="cmd"></param>
  669. public static void MOApplyERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  670. {
  671. try
  672. {
  673. #region ERP
  674. string sql = string.Empty;
  675. string Checksql = string.Empty;
  676. Checksql = @"SELECT a.F_Id
  677. FROM Sys_SRM_ItemsDetail a
  678. INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_Id
  679. WHERE b.F_EnCode='BatchInOutErp' AND a.F_ItemCode='BatchOut' AND a.F_EnabledMark='1'";
  680. Checksql = string.Format(Checksql);
  681. DataTable dtdao = DBHelper.SQlReturnData(Checksql, cmd);
  682. if (dtdao.Rows.Count > 0 && dtdao != null)
  683. {
  684. string checksql = @"select SUM(b.Quantity) AS SUMQty,SUM(b.IssueQuantity) AS ISSQty,a.transCode from ICSMOApply b inner join ICSWareHouseLotInfoLog a ON a.TransCode=b.ApplyCode AND a.WorkPoint=b.WorkPoint
  685. where a.Identification='{0}' GROUP BY a.transCode";
  686. checksql = string.Format(checksql, Identification);
  687. DataTable chekdt = DBHelper.SQlReturnData(checksql, cmd);
  688. decimal SUMQty = Convert.ToDecimal(chekdt.Rows[0]["SUMQty"]);
  689. decimal ISSQty = Convert.ToDecimal(chekdt.Rows[0]["ISSQty"]);
  690. string trancode = chekdt.Rows[0]["transCode"].ToString();
  691. if (SUMQty - ISSQty == 0)
  692. {
  693. string pnsql = @"select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,TransCode,TransSequence,FromWarehouseCode,transid
  694. INTO #NewTempERP
  695. from ICSWareHouseLotInfoLog
  696. WHERE TransCode='{0}' AND ERPUpload='0' AND BusinessCode = '14' and EATTRIBUTE1<>'1'
  697. SELECT (CASE WHEN isnull(conWhCode.Enable,0)='0' then a.FromWarehouseCode ELSE '' END)+b.ApplyCode+a.MUSER+ISNULL(b.SourceCode,'')+ISNULL(c.DepCode,'') AS Costre,a.FromWarehouseCode AS WarehouseCode,b.ApplyCode,ISNULL(b.SourceCode,'') AS SourceCode,ISNULL(c.DepCode,'') AS DepCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY a.FromWarehouseCode,b.ApplyCode,b.ApplyDetailID,a.InvCode) AS Sequence,
  698. a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(b.Amount/b.Quantity)) ELSE '0' END AS Amount,b.ApplyDetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,conWhCode.Enable AS ErpWhCode
  699. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  700. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10,conv.Enable AS CompleteVerification
  701. ,b.EATTRIBUTE2 as DocType,b.EATTRIBUTE4 as ClientCode,b.EATTRIBUTE7 as Project,b.EATTRIBUTE as Dep,a.transcode as HcFree4,b.EATTRIBUTE5 as HcFree2,b.EATTRIBUTE8 as HcFree3,b.EATTRIBUTE3 as HcFree1
  702. ,b.ApplyID,b.MUSERName ,b.EATTRIBUTE13
  703. INTO #TempERP
  704. FROM #NewTempERP a
  705. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  706. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  707. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  708. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  709. INNER JOIN ICSMOApply b ON a.TransCode=b.ApplyCode AND a.TransSequence=b.Sequence and a.transid=b.id AND a.WorkPoint=b.WorkPoint
  710. LEFT JOIN ( select mo.mocode,mo.DepCode ,mo.WorkPoint,isnull(pick.Sequence,mo.Sequence)as Sequence from ICSMO mo left join icsmopick pick on mo.modetailid = pick.modetailid) as c
  711. ON b.SourceCode=c.MOCode AND b.SourceSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  712. INNER JOIN ICSConfiguration con ON con.Code='Stock002' AND a.WorkPoint=con.WorkPoint
  713. INNER JOIN ICSConfiguration conv ON conv.Code='CompleteVerification001' AND a.WorkPoint=conv.WorkPoint
  714. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  715. INNER JOIN ICSConfiguration conWhCode ON conWhCode.Code='ERPWHCode' AND a.WorkPoint=conWhCode.WorkPoint
  716. GROUP BY inv.AmountEnable,conWhCode.Enable,a.FromWarehouseCode,b.ApplyCode,b.SourceCode,c.DepCode,a.MUSER,a.InvCode,b.ApplyDetailID,con.Enable,conv.Enable,conStock.Enable
  717. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  718. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, ''),b.EATTRIBUTE2,b.EATTRIBUTE4,b.EATTRIBUTE,b.EATTRIBUTE7,a.transcode,b.EATTRIBUTE5 ,b.EATTRIBUTE8,b.EATTRIBUTE3 ,b.ApplyID,b.MUSERName ,b.EATTRIBUTE13
  719. SELECT DISTINCT Costre,WorkPoint,ISNULL(DepCode,'') AS DepCode,CASE WHEN isnull(ErpWhCode,0)='0' then WarehouseCode ELSE '' END AS WHCode,'' AS SourceType,ApplyCode AS SourceCode,ISNULL(SourceCode,'') AS IssueCode ,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,CompleteVerification,UpdateStock,DocType,ClientCode,HcFree4,HcFree2,HcFree3,HcFree1,ApplyID as SourceID, MUSERName HcFree7, EATTRIBUTE13 HcFree8 FROM #TempERP
  720. SELECT Costre,Sequence,InvCode,Quantity,Amount,CASE WHEN isnull(ErpWhCode,0)='1' then WarehouseCode ELSE '' END AS WHCode,ApplyDetailID AS SourceDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,Project,Dep FROM #TempERP
  721. DROP TABLE #TempERP
  722. DROP TABLE #NewTempERP";
  723. pnsql = string.Format(pnsql, trancode);
  724. DataSet dss = DBHelper.SQlReturnDataSet(pnsql, cmd);
  725. string Inputstrr = DataToJsonHelper.DataSetToJson(dss, "details", "Costre");
  726. string resultStrr = "";
  727. if (DBHelper.IsU9())
  728. { resultStrr = HTTPHelper.HttpPost(TransType, ERPUrl.CreateOtherOutDocURL, Inputstrr); }
  729. else
  730. { resultStrr = HTTPHelper.HttpPost(TransType, ERPUrl.MOApplyURL, Inputstrr); }
  731. Result result = new Result();
  732. result = JsonConvert.DeserializeObject<Result>(resultStrr);
  733. if (result.Success)
  734. {
  735. try
  736. {
  737. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  738. foreach (var item in res)
  739. {
  740. JObject jo = (JObject)item;
  741. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  742. foreach (var detail in resdetail)
  743. {
  744. JObject det = (JObject)detail;
  745. string allcol = jo["WHCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  746. + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  747. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["SourceDetailID"].ToString(), Identification, jo["ID"].ToString(),
  748. det["DetailID"].ToString(), jo["IssueCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  749. }
  750. }
  751. }
  752. catch (Exception ex)
  753. {
  754. log.Debug(ex.ToString());
  755. log.Debug(resultStrr);
  756. }
  757. }
  758. else
  759. {
  760. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  761. }
  762. }
  763. }
  764. else
  765. {
  766. if (DBHelper.IsPNU9())
  767. {
  768. sql = @"select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,TransCode,TransSequence,FromWarehouseCode,transid
  769. INTO #NewTempERP
  770. from ICSWareHouseLotInfoLog
  771. WHERE Identification='{0}' AND ERPUpload='0' AND BusinessCode = '14'
  772. SELECT (CASE WHEN isnull(conWhCode.Enable,0)='0' then a.FromWarehouseCode ELSE '' END)+b.ApplyCode+a.MUSER+ISNULL(c.DepCode,'') AS Costre,a.FromWarehouseCode AS WarehouseCode,b.ApplyCode,ISNULL(b.SourceCode,'') AS SourceCode,ISNULL(c.DepCode,'') AS DepCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY a.FromWarehouseCode,b.ApplyCode,b.ApplyDetailID,a.InvCode) AS Sequence,
  773. a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(b.Amount/b.Quantity)) ELSE '0' END AS Amount,b.ApplyDetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,conWhCode.Enable AS ErpWhCode
  774. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  775. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10,conv.Enable AS CompleteVerification
  776. ,b.EATTRIBUTE2 as DocType,b.EATTRIBUTE4 as ClientCode,b.EATTRIBUTE7 as Project,b.EATTRIBUTE as Dep,a.transcode as HcFree4,b.EATTRIBUTE5 as HcFree2,b.EATTRIBUTE8 as HcFree3,b.EATTRIBUTE3 as HcFree1
  777. INTO #TempERP
  778. FROM #NewTempERP a
  779. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  780. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  781. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  782. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  783. INNER JOIN ICSMOApply b ON a.TransCode=b.ApplyCode AND a.TransSequence=b.Sequence and a.transid=b.id AND a.WorkPoint=b.WorkPoint
  784. LEFT JOIN ICSMO c ON b.SourceCode=c.MOCode AND b.SourceSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  785. INNER JOIN ICSConfiguration con ON con.Code='Stock002' AND a.WorkPoint=con.WorkPoint
  786. INNER JOIN ICSConfiguration conv ON conv.Code='CompleteVerification001' AND a.WorkPoint=conv.WorkPoint
  787. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  788. INNER JOIN ICSConfiguration conWhCode ON conWhCode.Code='ERPWHCode' AND a.WorkPoint=conWhCode.WorkPoint
  789. GROUP BY inv.AmountEnable,conWhCode.Enable,a.FromWarehouseCode,b.ApplyCode,b.SourceCode,c.DepCode,a.MUSER,a.InvCode,b.ApplyDetailID,con.Enable,conv.Enable,conStock.Enable
  790. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  791. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, ''),b.EATTRIBUTE2,b.EATTRIBUTE4,b.EATTRIBUTE,b.EATTRIBUTE7,a.transcode,b.EATTRIBUTE5 ,b.EATTRIBUTE8,b.EATTRIBUTE3
  792. SELECT DISTINCT Costre,WorkPoint,ISNULL(DepCode,'') AS DepCode,CASE WHEN isnull(ErpWhCode,0)='0' then WarehouseCode ELSE '' END AS WHCode,'' AS SourceType,ApplyCode AS SourceCode,'' AS IssueCode ,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,CompleteVerification,UpdateStock,DocType,ClientCode,HcFree4,HcFree2,HcFree3,HcFree1 FROM #TempERP
  793. SELECT Costre,Sequence,InvCode,Quantity,Amount,CASE WHEN isnull(ErpWhCode,0)='1' then WarehouseCode ELSE '' END AS WHCode,ApplyDetailID AS SourceDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,Project,Dep FROM #TempERP
  794. DROP TABLE #TempERP
  795. DROP TABLE #NewTempERP";
  796. }
  797. else
  798. {
  799. sql = @"select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,TransCode,TransSequence,FromWarehouseCode,transid
  800. INTO #NewTempERP
  801. from ICSWareHouseLotInfoLog
  802. WHERE Identification='{0}' AND ERPUpload='0' AND BusinessCode = '14'
  803. SELECT (CASE WHEN isnull(conWhCode.Enable,0)='0' then a.FromWarehouseCode ELSE '' END)+b.ApplyCode+a.MUSER+ISNULL(b.SourceCode,'')+ISNULL(c.DepCode,'') AS Costre,a.FromWarehouseCode AS WarehouseCode,b.ApplyCode,ISNULL(b.SourceCode,'') AS SourceCode,ISNULL(c.DepCode,'') AS DepCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY a.FromWarehouseCode,b.ApplyCode,b.ApplyDetailID,a.InvCode) AS Sequence,
  804. a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(b.Amount/b.Quantity)) ELSE '0' END AS Amount,b.ApplyDetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,conWhCode.Enable AS ErpWhCode
  805. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  806. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10,conv.Enable AS CompleteVerification
  807. ,b.EATTRIBUTE2 as DocType,b.EATTRIBUTE4 as ClientCode,b.EATTRIBUTE7 as Project,b.EATTRIBUTE as Dep,a.transcode as HcFree4,b.EATTRIBUTE5 as HcFree2,b.EATTRIBUTE8 as HcFree3,b.EATTRIBUTE3 as HcFree1
  808. ,b.ApplyID,b.MUSERName ,b.EATTRIBUTE13
  809. INTO #TempERP
  810. FROM #NewTempERP a
  811. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  812. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  813. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  814. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  815. INNER JOIN ICSMOApply b ON a.TransCode=b.ApplyCode AND a.TransSequence=b.Sequence and a.transid=b.id AND a.WorkPoint=b.WorkPoint
  816. LEFT JOIN ICSMO c ON b.SourceCode=c.MOCode AND b.SourceSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  817. INNER JOIN ICSConfiguration con ON con.Code='Stock002' AND a.WorkPoint=con.WorkPoint
  818. INNER JOIN ICSConfiguration conv ON conv.Code='CompleteVerification001' AND a.WorkPoint=conv.WorkPoint
  819. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  820. INNER JOIN ICSConfiguration conWhCode ON conWhCode.Code='ERPWHCode' AND a.WorkPoint=conWhCode.WorkPoint
  821. GROUP BY inv.AmountEnable,conWhCode.Enable,a.FromWarehouseCode,b.ApplyID,b.ApplyCode,b.SourceCode,c.DepCode,a.MUSER,a.InvCode,b.ApplyDetailID,con.Enable,conv.Enable,conStock.Enable
  822. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  823. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, ''),b.EATTRIBUTE2,b.EATTRIBUTE4,b.EATTRIBUTE,b.EATTRIBUTE7,a.transcode,b.EATTRIBUTE5 ,b.EATTRIBUTE8,b.EATTRIBUTE3 ,b.MUSERName ,b.EATTRIBUTE13
  824. SELECT DISTINCT Costre,WorkPoint,ISNULL(DepCode,'') AS DepCode,CASE WHEN isnull(ErpWhCode,0)='0' then WarehouseCode ELSE '' END AS WHCode,'' AS SourceType,ApplyCode AS SourceCode,ISNULL(SourceCode,'') AS IssueCode ,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,CompleteVerification,UpdateStock,DocType,ClientCode,HcFree4,HcFree2,HcFree3,HcFree1,ApplyID as SourceID, MUSERName HcFree7, EATTRIBUTE13 HcFree8 FROM #TempERP
  825. SELECT Costre,Sequence,InvCode,Quantity,Amount,CASE WHEN isnull(ErpWhCode,0)='1' then WarehouseCode ELSE '' END AS WHCode,ApplyDetailID AS SourceDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,Project,Dep FROM #TempERP
  826. DROP TABLE #TempERP
  827. DROP TABLE #NewTempERP";
  828. }
  829. //,ClientCode,HcFree4,HcFree2,HcFree3,HcFree1
  830. sql = string.Format(sql, Identification);
  831. DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  832. string Inputstr = DataToJsonHelper.DataSetToJson(ds, "details", "Costre");
  833. string resultStr = "";
  834. if (DBHelper.IsU9())
  835. { resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.CreateOtherOutDocURL , Inputstr); }
  836. else
  837. { resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.MOApplyURL, Inputstr); }
  838. Result result = new Result();
  839. result = JsonConvert.DeserializeObject<Result>(resultStr);
  840. if (result.Success)
  841. {
  842. try
  843. {
  844. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  845. foreach (var item in res)
  846. {
  847. JObject jo = (JObject)item;
  848. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  849. foreach (var detail in resdetail)
  850. {
  851. JObject det = (JObject)detail;
  852. string allcol = jo["WHCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  853. + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  854. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["SourceDetailID"].ToString(), Identification, jo["ID"].ToString(),
  855. det["DetailID"].ToString(), jo["IssueCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  856. }
  857. }
  858. }
  859. catch (Exception ex)
  860. {
  861. log.Debug(ex.ToString());
  862. log.Debug(resultStr);
  863. }
  864. }
  865. else
  866. {
  867. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  868. }
  869. }
  870. #endregion
  871. }
  872. catch (Exception)
  873. {
  874. throw;
  875. }
  876. }
  877. #endregion
  878. #region 材料出库单生产发料
  879. /// <summary>
  880. /// 材料出库单生产发料
  881. /// </summary>
  882. /// <param name="TransCode"></param>
  883. /// <param name="TransSequence"></param>
  884. /// <param name="Quantity"></param>
  885. /// <param name="WorkPoint"></param>
  886. /// <param name="cmd"></param>
  887. public static void MOIssue(string TransCode, string TransSequence, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language, string enableCode,string TransID)
  888. {
  889. try
  890. {
  891. string sql = @"DECLARE @Status VARCHAR(10)
  892. SELECT @Status=a.Status FROM ICSMOIssue a
  893. WHERE a.IssueCode='{0}' AND a.Sequence='{3}' AND a.id='{4}' AND a.WorkPoint='{1}'
  894. IF (@Status IS NULL)
  895. BEGIN
  896. RAISERROR('" + language.GetNameByCode("WMSAPIInfo131") + @"',16,1);
  897. RETURN
  898. END
  899. ELSE IF (@Status!='1')
  900. BEGIN
  901. RAISERROR('" + language.GetNameByCode("WMSAPIInfo132") + @"',16,1);
  902. RETURN
  903. END
  904. UPDATE a SET IssueQuantity=ISNULL(IssueQuantity,0)+'{2}'
  905. FROM ICSMOIssue a
  906. WHERE a.IssueCode='{0}' AND a.Sequence='{3}' AND a.id='{4}' AND a.WorkPoint='{1}'
  907. IF EXISTS(SELECT a.ID FROM ICSMOIssue a
  908. WHERE a.IssueCode='{0}' AND a.Sequence='{3}' and a.WorkPoint='{1}' AND a.id='{4}'
  909. AND dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'{5}',2,2,'')<a.IssueQuantity)
  910. BEGIN
  911. RAISERROR('" + language.GetNameByCode("WMSAPIInfo091") + @"',16,1);
  912. RETURN
  913. END";
  914. sql = string.Format(sql, TransCode, WorkPoint, Quantity, TransSequence, TransID, enableCode);
  915. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  916. {
  917. throw new Exception(language.GetNameByCode("WMSAPIInfo133"));//"材料出库单更新失败!");
  918. }
  919. }
  920. catch (Exception)
  921. {
  922. throw;
  923. }
  924. }
  925. /// <summary>
  926. /// 材料出库单生产发料接口
  927. /// </summary>
  928. /// <param name="TransType"></param>
  929. /// <param name="Identification"></param>
  930. /// <param name="cmd"></param>
  931. public static void MOIssueERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language,string BusinessCode)
  932. {
  933. try
  934. {
  935. #region ERP开立状态单据审核
  936. string sql = @"select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,TransCode,TransSequence,FromWarehouseCode
  937. INTO #NewTempERP
  938. from ICSWareHouseLotInfoLog
  939. WHERE Identification='{0}' AND ERPUpload='0' AND BusinessCode = '15'
  940. IF EXISTS(SELECT b.ID FROM ICSWareHouseLotInfoLog a
  941. INNER JOIN ICSMOIssue b ON a.TransCode=b.IssueCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  942. WHERE a.Identification='{0}' AND b.Quantity>b.IssueQuantity)
  943. BEGIN
  944. RAISERROR('" + language.GetNameByCode("WMSAPIInfo094") + @"',16,1);
  945. RETURN
  946. END
  947. SELECT b.IssueID AS ID,a.MUSER AS [User],SYSDATETIME() AS MTime,con.Enable AS UpdateTodoQuantity
  948. ,conStock.Enable AS UpdateStock,a.WorkPoint
  949. FROM #NewTempERP a
  950. INNER JOIN ICSMOIssue b ON a.TransCode=b.IssueCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  951. INNER JOIN ICSConfiguration con ON con.Code='Stock002' AND a.WorkPoint=con.WorkPoint
  952. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  953. GROUP BY b.IssueID,a.MUSER,con.Enable
  954. ,conStock.Enable,a.WorkPoint
  955. DROP TABLE #NewTempERP";
  956. sql = string.Format(sql, Identification);
  957. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  958. string Inputstr = JsonConvert.SerializeObject(dt);
  959. string resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.MOIssueURL, Inputstr);
  960. Result result = new Result();
  961. result = JsonConvert.DeserializeObject<Result>(resultStr);
  962. if (result.Success)
  963. {
  964. try
  965. {
  966. foreach (DataRow dr in dt.Rows)
  967. {
  968. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, dr["ID"].ToString(), Identification, "", "", "", "", "",cmd, language, BusinessCode);
  969. }
  970. }
  971. catch (Exception ex)
  972. {
  973. log.Debug(ex.ToString());
  974. log.Debug(resultStr);
  975. }
  976. }
  977. else
  978. {
  979. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  980. }
  981. #endregion
  982. }
  983. catch (Exception)
  984. {
  985. throw;
  986. }
  987. }
  988. /// <summary>
  989. /// U9超额领料单接口 审核改创建
  990. /// </summary>
  991. /// <param name="TransType"></param>
  992. /// <param name="Identification"></param>
  993. /// <param name="cmd"></param>
  994. public static void U9MOIssueERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  995. {
  996. try
  997. {
  998. #region ERP
  999. // IF EXISTS(SELECT b.ID FROM ICSWareHouseLotInfoLog a
  1000. // INNER JOIN ICSMOIssue b ON a.TransCode= b.IssueCode AND a.TransSequence= b.Sequence AND a.WorkPoint= b.WorkPoint
  1001. // WHERE a.Identification= '{0}' AND b.Quantity! = b.IssueQuantity)
  1002. // BEGIN
  1003. // RAISERROR('" + language.GetNameByCode("WMSAPIInfo094") + @"', 16, 1);
  1004. // RETURN
  1005. //END
  1006. string sql = @"
  1007. select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,TransCode,TransSequence,FromWarehouseCode
  1008. INTO #NewTempERP
  1009. from ICSWareHouseLotInfoLog
  1010. WHERE Identification='{0}' AND ERPUpload='0' AND BusinessCode = '15'
  1011. SELECT --a.FromWarehouseCode+
  1012. b.IssueCode+a.MUSER+ISNULL(b.SourceCode,'')+ISNULL(c.DepCode,'') AS Costre,a.FromWarehouseCode AS WarehouseCode,b.IssueCode,ISNULL(b.SourceCode,'') AS SourceCode,ISNULL(c.DepCode,'') AS DepCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY a.FromWarehouseCode,b.IssueCode,b.IssueDetailID,a.InvCode) AS Sequence,
  1013. a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(b.Amount/b.Quantity)) ELSE '0' END AS Amount,b.IssueDetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock
  1014. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  1015. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10,conv.Enable AS CompleteVerification
  1016. ,b.EATTRIBUTE2 as DocType,b.EATTRIBUTE4 as ClientCode,b.EATTRIBUTE5 as SuperCollarMessage
  1017. INTO #TempERP
  1018. FROM #NewTempERP a
  1019. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1020. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1021. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1022. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1023. INNER JOIN ICSMoIssue b ON a.TransCode=b.IssueCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  1024. LEFT JOIN ICSMO c ON b.SourceCode=c.MOCode AND b.SourceSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1025. INNER JOIN ICSConfiguration con ON con.Code='Stock002' AND a.WorkPoint=con.WorkPoint
  1026. INNER JOIN ICSConfiguration conv ON conv.Code='CompleteVerification001' AND a.WorkPoint=conv.WorkPoint
  1027. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  1028. GROUP BY inv.AmountEnable,a.FromWarehouseCode,b.IssueCode,b.SourceCode,c.DepCode,a.MUSER,a.InvCode,b.IssueDetailID,con.Enable,conv.Enable,conStock.Enable
  1029. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  1030. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, ''),b.EATTRIBUTE2,b.EATTRIBUTE4,b.EATTRIBUTE5
  1031. SELECT DISTINCT Costre,WorkPoint,ISNULL(DepCode,'') AS DepCode,'' AS SourceType,ISNULL(SourceCode,'') AS SourceCode,ISNULL(SourceCode,'') AS IssueCode ,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,CompleteVerification,UpdateStock, '18' as DocTypeCode,ClientCode,SuperCollarMessage FROM #TempERP -- WarehouseCode AS WHCode ,IssueCode AS SourceCode
  1032. SELECT WarehouseCode AS WHCode,Costre,Sequence,InvCode,Quantity,Amount,IssueDetailID AS SourceDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 FROM #TempERP
  1033. DROP TABLE #TempERP
  1034. DROP TABLE #NewTempERP";
  1035. sql = string.Format(sql, Identification);
  1036. DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  1037. string Inputstr = DataToJsonHelper.DataSetToJson(ds, "details", "Costre");
  1038. string resultStr = "";
  1039. //resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.U9MOApplyURL, Inputstr);
  1040. resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.U9MOIssueDocURL, Inputstr);
  1041. Result result = new Result();
  1042. result = JsonConvert.DeserializeObject<Result>(resultStr);
  1043. if (result.Success)
  1044. {
  1045. try
  1046. {
  1047. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  1048. foreach (var item in res)
  1049. {
  1050. JObject jo = (JObject)item;
  1051. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  1052. foreach (var detail in resdetail)
  1053. {
  1054. JObject det = (JObject)detail;
  1055. string allcol = jo["WHCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  1056. + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  1057. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["SourceDetailID"].ToString(), Identification, jo["ID"].ToString(),
  1058. det["DetailID"].ToString(), jo["IssueCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  1059. }
  1060. }
  1061. }
  1062. catch (Exception ex)
  1063. {
  1064. log.Debug(ex.ToString());
  1065. log.Debug(resultStr);
  1066. }
  1067. }
  1068. else
  1069. {
  1070. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  1071. }
  1072. #endregion
  1073. }
  1074. catch (Exception)
  1075. {
  1076. throw;
  1077. }
  1078. }
  1079. #endregion
  1080. #region 生产退料
  1081. /// <summary>
  1082. /// 生产退料
  1083. /// </summary>
  1084. /// <param name="TransCode"></param>
  1085. /// <param name="TransSequence"></param>
  1086. /// <param name="Quantity"></param>
  1087. /// <param name="WorkPoint"></param>
  1088. /// <param name="cmd"></param>
  1089. public static void MOIssueDocNegative(string TransType, string LogID, string LotNo, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  1090. {
  1091. try
  1092. {
  1093. string table = "";
  1094. string table1 = "";
  1095. string sql = "";
  1096. string sqlMOIssueDocNegativeIssueDH = "";
  1097. string quantitySql = "c.Quantity";
  1098. if (string.IsNullOrWhiteSpace(LogID))
  1099. {
  1100. string type = "";
  1101. if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription())
  1102. {
  1103. table = "INNER JOIN ICSMOPick e ON c.SourceDetailID=e.PickID AND c.WorkPoint=e.WorkPoint";
  1104. type = "1";
  1105. quantitySql = "dbo.GetExcessInQty(c.InvCode, c.WorkPoint, 'OverIn017', c.Quantity,1,2,'')";
  1106. }
  1107. else if (TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription())
  1108. {
  1109. table = "INNER JOIN ICSMOApply e ON c.SourceDetailID=e.ApplyDetailID AND c.WorkPoint=e.WorkPoint";
  1110. type = "2";
  1111. quantitySql = "dbo.GetExcessInQty(c.InvCode, c.WorkPoint, 'OverIn018', c.Quantity,1,2,'')";
  1112. }
  1113. else if (TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
  1114. {
  1115. table = "INNER JOIN ICSMOIssue e ON c.SourceDetailID=e.IssueDetailID AND c.WorkPoint=e.WorkPoint";
  1116. table1 = " INNER JOIN ICSMOIssue ee ON c.SourceDetailID=ee.IssueDetailID AND c.WorkPoint=ee.WorkPoint " +
  1117. " INNER JOIN icsmopick e ON e.pickid = ee.pickid";
  1118. type = "3";
  1119. quantitySql = "dbo.GetExcessInQty(c.InvCode, c.WorkPoint, 'OverIn019', c.Quantity,1,2,'')";
  1120. //东辉退料单 修改工单子件数量
  1121. sqlMOIssueDocNegativeIssueDH = @" UPDATE e SET e.IssueQuantity=ISNULL(e.IssueQuantity,0)-'{2}'
  1122. FROM ICSInventoryLot a
  1123. INNER JOIN ICSInventoryLotDetail b ON a.LotNo = b.LotNo AND a.WorkPoint = b.WorkPoint
  1124. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode = c.ApplyNegCode AND b.TransSequence = c.Sequence AND b.WorkPoint = c.WorkPoint
  1125. INNER JOIN ICSMOApplyNeg d ON c.ApplyNegCode = d.ApplyNegCode AND c.WorkPoint = d.WorkPoint
  1126. {5}
  1127. WHERE a.LotNo = '{0}' AND a.WorkPoint = '{1}' AND d.Type = '{4}' and ISNULL(e.IssueQuantity,0)> 0";
  1128. sqlMOIssueDocNegativeIssueDH = string.Format(sqlMOIssueDocNegativeIssueDH, LotNo, WorkPoint, Quantity, table, type, table1);
  1129. }
  1130. else
  1131. {
  1132. throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"类型不符!");
  1133. }
  1134. #region 新条码
  1135. sql = @"UPDATE c SET IssueNegQuantity=ISNULL(IssueNegQuantity,0)+'{2}'
  1136. FROM ICSInventoryLot a
  1137. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1138. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1139. INNER JOIN ICSMOApplyNeg d ON c.ApplyNegCode=d.ApplyNegCode AND c.WorkPoint=d.WorkPoint
  1140. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND d.Type='{4}'
  1141. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  1142. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1143. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1144. INNER JOIN ICSMOApplyNeg d ON c.ApplyNegCode=d.ApplyNegCode AND c.WorkPoint=d.WorkPoint
  1145. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND d.Type='{4}' AND {6}<c.IssueNegQuantity)
  1146. BEGIN
  1147. RAISERROR('" + language.GetNameByCode("WMSAPIInfo114") + @"',16,1);
  1148. END
  1149. UPDATE e SET IssueQuantity=ISNULL(IssueQuantity,0)-'{2}'
  1150. FROM ICSInventoryLot a
  1151. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1152. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1153. INNER JOIN ICSMOApplyNeg d ON c.ApplyNegCode=d.ApplyNegCode AND c.WorkPoint=d.WorkPoint
  1154. {3}
  1155. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND d.Type='{4}'
  1156. {5}
  1157. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  1158. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1159. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1160. INNER JOIN ICSMOApplyNeg d ON c.ApplyNegCode=d.ApplyNegCode AND c.WorkPoint=d.WorkPoint
  1161. {3}
  1162. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND d.Type='{4}' AND e.IssueQuantity<0)
  1163. BEGIN
  1164. RAISERROR('" + language.GetNameByCode("WMSAPIInfo192") + @"',16,1);
  1165. END";
  1166. sql = string.Format(sql, LotNo, WorkPoint, Quantity, table, type, sqlMOIssueDocNegativeIssueDH, quantitySql);
  1167. #endregion
  1168. }
  1169. else
  1170. {
  1171. if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription())
  1172. {
  1173. table = @"INNER JOIN ICSMO b ON a.TransCode=b.MOCode AND a.WorkPoint=b.WorkPoint
  1174. INNER JOIN ICSMOPick c ON b.MODetailID = c.MODetailID AND b.WorkPoint = c.WorkPoint AND a.TransSequence = b.Sequence + '~' + c.Sequence";
  1175. }
  1176. else if (TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription())
  1177. {
  1178. table = "INNER JOIN ICSMOApply c ON a.TransCode=c.ApplyCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint";
  1179. }
  1180. else if (TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
  1181. {
  1182. table = "INNER JOIN ICSMOIssue c ON a.TransCode=c.IssueCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint";
  1183. }
  1184. else
  1185. {
  1186. throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"类型不符!");
  1187. }
  1188. #region 原条码
  1189. sql = @"UPDATE c SET IssueQuantity=ISNULL(IssueQuantity,0)-'{2}'
  1190. FROM ICSWareHouseLotInfoLog a
  1191. {3}
  1192. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.ID='{4}'
  1193. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfoLog a
  1194. {3}
  1195. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.ID='{4}' AND c.IssueQuantity<0)
  1196. BEGIN
  1197. RAISERROR('" + language.GetNameByCode("WMSAPIInfo192") + @"',16,1);
  1198. END
  1199. UPDATE a SET a.EATTRIBUTE10=ISNULL(a.EATTRIBUTE10,0)+{2}
  1200. FROM ICSWareHouseLotInfoLog a
  1201. {3}
  1202. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.ID='{4}'
  1203. ";
  1204. sql = string.Format(sql, LotNo, WorkPoint, Quantity, table, LogID);
  1205. #endregion
  1206. }
  1207. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1208. {
  1209. throw new Exception(language.GetNameByCode("WMSAPIInfo134"));//"生产退料单更新失败!");
  1210. }
  1211. }
  1212. catch (Exception)
  1213. {
  1214. throw;
  1215. }
  1216. }
  1217. /// <summary>
  1218. /// 生产退料(奥美专用)
  1219. /// </summary>
  1220. /// <param name="TransCode"></param>
  1221. /// <param name="TransSequence"></param>
  1222. /// <param name="Quantity"></param>
  1223. /// <param name="WorkPoint"></param>
  1224. /// <param name="cmd"></param>
  1225. public static void AMMOIssueDocNegative(string TransType, string LogID, string LotNo, string Quantity, string WorkPoint,string TransCode,string TransSequence, SqlCommand cmd, Dictionary<string, string> language)
  1226. {
  1227. try
  1228. {
  1229. string table = "";
  1230. string sql = "";
  1231. if (string.IsNullOrWhiteSpace(LogID))
  1232. {
  1233. string type = "";
  1234. if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription())
  1235. {
  1236. table = "INNER JOIN ICSMOPick e ON c.SourceDetailID=e.PickID AND c.WorkPoint=e.WorkPoint";
  1237. type = "1";
  1238. }
  1239. else if (TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription())
  1240. {
  1241. table = "INNER JOIN ICSMOApply e ON c.SourceDetailID=e.ApplyDetailID AND c.WorkPoint=e.WorkPoint";
  1242. type = "2";
  1243. }
  1244. else if (TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
  1245. {
  1246. table = "INNER JOIN ICSMOIssue e ON c.SourceDetailID=e.IssueDetailID AND c.WorkPoint=e.WorkPoint";
  1247. type = "3";
  1248. }
  1249. else
  1250. {
  1251. throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"类型不符!");
  1252. }
  1253. #region 新条码
  1254. sql = @"UPDATE c SET IssueNegQuantity=ISNULL(IssueNegQuantity,0)+'{2}'
  1255. FROM ICSInventoryLot a
  1256. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1257. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1258. INNER JOIN ICSMOApplyNeg d ON c.ApplyNegCode=d.ApplyNegCode AND c.WorkPoint=d.WorkPoint
  1259. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND d.Type='{4}'
  1260. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  1261. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1262. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1263. INNER JOIN ICSMOApplyNeg d ON c.ApplyNegCode=d.ApplyNegCode AND c.WorkPoint=d.WorkPoint
  1264. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND d.Type='{4}' AND c.Quantity<c.IssueNegQuantity)
  1265. BEGIN
  1266. RAISERROR('" + language.GetNameByCode("WMSAPIInfo114") + @"',16,1);
  1267. END
  1268. UPDATE e SET IssueQuantity=ISNULL(IssueQuantity,0)-'{2}'
  1269. FROM ICSInventoryLot a
  1270. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1271. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1272. INNER JOIN ICSMOApplyNeg d ON c.ApplyNegCode=d.ApplyNegCode AND c.WorkPoint=d.WorkPoint
  1273. {3}
  1274. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND d.Type='{4}'
  1275. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  1276. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1277. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1278. INNER JOIN ICSMOApplyNeg d ON c.ApplyNegCode=d.ApplyNegCode AND c.WorkPoint=d.WorkPoint
  1279. {3}
  1280. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND d.Type='{4}' AND e.IssueQuantity<0)
  1281. BEGIN
  1282. RAISERROR('" + language.GetNameByCode("WMSAPIInfo192") + @"',16,1);
  1283. END";
  1284. sql = string.Format(sql, LotNo, WorkPoint, Quantity, table, type);
  1285. #endregion
  1286. }
  1287. else
  1288. {
  1289. if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription())
  1290. {
  1291. table = @"INNER JOIN ICSMO b ON a.TransCode=b.MOCode AND a.WorkPoint=b.WorkPoint
  1292. INNER JOIN ICSMOPick c ON b.MODetailID = c.MODetailID AND b.WorkPoint = c.WorkPoint AND a.TransSequence = b.Sequence + '~' + c.Sequence";
  1293. }
  1294. else if (TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription())
  1295. {
  1296. table = "INNER JOIN ICSMOApply c ON a.TransCode=c.ApplyCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint";
  1297. }
  1298. else if (TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
  1299. {
  1300. table = "INNER JOIN ICSMOIssue c ON a.TransCode=c.IssueCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint";
  1301. }
  1302. else
  1303. {
  1304. throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"类型不符!");
  1305. }
  1306. if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription())
  1307. {
  1308. #region 原条码
  1309. sql = @"UPDATE c SET IssueQuantity=ISNULL(IssueQuantity,0)-'{2}'
  1310. FROM ICSWareHouseLotInfoLog a
  1311. {3}
  1312. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.ID='{4}' and b.MoCode='{5}' AND b.Sequence='{6}'
  1313. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfoLog a
  1314. {3}
  1315. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.ID='{4}' AND c.IssueQuantity<0 and b.MoCode='{5}' AND b.Sequence='{6}')
  1316. BEGIN
  1317. RAISERROR('" + language.GetNameByCode("WMSAPIInfo192") + @"',16,1);
  1318. END
  1319. ";
  1320. sql = string.Format(sql, LotNo, WorkPoint, Quantity, table, LogID, TransCode, TransSequence);
  1321. }
  1322. else
  1323. {
  1324. sql = @"UPDATE c SET IssueQuantity=ISNULL(IssueQuantity,0)-'{2}'
  1325. FROM ICSWareHouseLotInfoLog a
  1326. {3}
  1327. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.ID='{4}'
  1328. IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfoLog a
  1329. {3}
  1330. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.ID='{4}' AND c.IssueQuantity<0)
  1331. BEGIN
  1332. RAISERROR('" + language.GetNameByCode("WMSAPIInfo192") + @"',16,1);
  1333. END";
  1334. sql = string.Format(sql, LotNo, WorkPoint, Quantity, table, LogID, TransCode, TransSequence);
  1335. }
  1336. #endregion
  1337. }
  1338. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  1339. {
  1340. throw new Exception(language.GetNameByCode("WMSAPIInfo134"));//"生产退料单更新失败!");
  1341. }
  1342. }
  1343. catch (Exception)
  1344. {
  1345. throw;
  1346. }
  1347. }
  1348. /// <summary>
  1349. /// 生产退料接口
  1350. /// </summary>
  1351. /// <param name="TransType"></param>
  1352. /// <param name="Identification"></param>
  1353. /// <param name="cmd"></param>
  1354. public static void MOIssueDocNegativeERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  1355. {
  1356. try
  1357. {
  1358. DataTable adtt = new DataTable();
  1359. #region ERP
  1360. string sql = string.Empty;
  1361. if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription())
  1362. {
  1363. string aasql = @"SELECT DISTINCT
  1364. b.F_Define1
  1365. FROM Sys_SRM_Items a
  1366. LEFT JOIN Sys_SRM_ItemsDetail b ON a.F_Id = b.F_ItemId
  1367. WHERE a.F_EnCode = 'InventoryLotWareHouseFixed'";
  1368. adtt = DBHelper.SQlReturnData(aasql, cmd);
  1369. if (adtt.Rows.Count > 0 && adtt != null)//晶华项目
  1370. {
  1371. sql = @"select LotNo,a.WorkPoint,InvCode,ToWarehouseCode,a.MUSER,Quantity,con.Enable,conStock.Enable AS conStockEnable
  1372. INTO #NewTempERP
  1373. from ICSWareHouseLotInfoLog a
  1374. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  1375. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  1376. WHERE Identification='{0}' AND ERPUpload='0' AND ISNULL(LogID, '')=''
  1377. select LotNo,a.WorkPoint,InvCode,ToWarehouseCode,a.MUSER,Quantity,LogID,con.Enable,conStock.Enable AS conStockEnable
  1378. INTO #NewDouTempERP
  1379. from ICSWareHouseLotInfoLog a
  1380. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  1381. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  1382. WHERE Identification='{0}' AND ERPUpload='0' AND ISNULL(LogID, '')<>''
  1383. SELECT y.DepCode+a.ToWarehouseCode+y.MOCode+a.MUSER AS Costre,y.DepCode,a.ToWarehouseCode AS WarehouseCode,y.MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY y.DepCode,a.ToWarehouseCode,y.MOCode,x.PickID,a.InvCode) AS Sequence,
  1384. a.InvCode,inv.InvRate,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(lot.Amount/lot.Quantity)) ELSE '0' END AS Amount,x.PickID AS SourceDetailID,a.Enable AS UpdateTodoQuantity,a.conStockEnable AS UpdateStock,'' AS ERPCode
  1385. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  1386. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  1387. INTO #TempERP
  1388. FROM #NewTempERP a
  1389. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1390. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1391. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1392. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1393. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1394. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1395. INNER JOIN ICSMOPick x ON c.SourceDetailID=x.PickID AND c.WorkPoint=x.WorkPoint
  1396. INNER JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
  1397. WHERE lot.Quantity > 0
  1398. GROUP BY inv.AmountEnable,y.DepCode,a.ToWarehouseCode,y.MOCode,a.MUSER,a.InvCode,inv.InvRate,lot.Amount,lot.Quantity,x.PickID,x.MODetailID,a.Enable,a.conStockEnable
  1399. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  1400. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  1401. UNION ALL
  1402. SELECT y.DepCode+a.ToWarehouseCode+y.MOCode+a.MUSER+b.ERPCode AS Costre,y.DepCode,a.ToWarehouseCode AS WarehouseCode,y.MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY y.DepCode,a.ToWarehouseCode,y.MOCode,x.PickID,a.InvCode) AS Sequence,
  1403. a.InvCode,inv.InvRate,SUM(a.Quantity) AS Quantity,0 AS Amount,x.PickID AS SourceDetailID,a.Enable AS UpdateTodoQuantity,a.conStockEnable AS UpdateStock,b.ERPCode
  1404. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  1405. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  1406. FROM #NewDouTempERP a
  1407. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1408. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1409. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1410. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1411. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1412. INNER JOIN ICSMO y ON b.TransCode=y.MOCode AND b.WorkPoint=y.WorkPoint
  1413. INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint AND b.TransSequence = y.Sequence + '~' + x.Sequence
  1414. WHERE lot.Quantity > 0
  1415. GROUP BY b.ERPCode,y.DepCode,a.ToWarehouseCode,y.MOCode,a.MUSER,a.InvCode,inv.InvRate,x.PickID,x.MODetailID,a.Enable,a.conStockEnable
  1416. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  1417. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  1418. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,'' AS SourceType,ERPCode AS SourceCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,UpdateStock FROM #TempERP
  1419. SELECT Costre,Sequence,InvCode,InvRate,Quantity,Amount,'' AS SourceDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 ,WarehouseCode AS WHCode FROM #TempERP
  1420. DROP TABLE #TempERP
  1421. DROP TABLE #NewTempERP
  1422. DROP TABLE #NewDouTempERP";
  1423. }
  1424. else
  1425. {
  1426. sql = @"select LotNo,a.WorkPoint,InvCode,ToWarehouseCode,a.MUSER,Quantity,con.Enable,conStock.Enable AS conStockEnable
  1427. INTO #NewTempERP
  1428. from ICSWareHouseLotInfoLog a
  1429. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  1430. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  1431. WHERE Identification='{0}' AND ERPUpload='0' AND ISNULL(LogID, '')=''
  1432. select LotNo,a.WorkPoint,InvCode,ToWarehouseCode,a.MUSER,Quantity,LogID,con.Enable,conStock.Enable AS conStockEnable
  1433. INTO #NewDouTempERP
  1434. from ICSWareHouseLotInfoLog a
  1435. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  1436. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  1437. WHERE Identification='{0}' AND ERPUpload='0' AND ISNULL(LogID, '')<>''
  1438. SELECT y.DepCode+a.ToWarehouseCode+y.MOCode+a.MUSER AS Costre,y.DepCode,a.ToWarehouseCode AS WarehouseCode,y.MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY y.DepCode,a.ToWarehouseCode,y.MOCode,x.PickID,a.InvCode) AS Sequence,
  1439. a.InvCode,inv.InvRate,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(lot.Amount/lot.Quantity)) ELSE '0' END AS Amount,x.PickID AS SourceDetailID,a.Enable AS UpdateTodoQuantity,a.conStockEnable AS UpdateStock
  1440. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  1441. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  1442. INTO #TempERP
  1443. FROM #NewTempERP a
  1444. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1445. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1446. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1447. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1448. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1449. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1450. INNER JOIN ICSMOPick x ON c.SourceDetailID=x.PickID AND c.WorkPoint=x.WorkPoint
  1451. INNER JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
  1452. WHERE lot.Quantity > 0
  1453. GROUP BY inv.AmountEnable,y.DepCode,a.ToWarehouseCode,y.MOCode,a.MUSER,a.InvCode,inv.InvRate,lot.Amount,lot.Quantity,x.PickID,x.MODetailID,a.Enable,a.conStockEnable
  1454. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  1455. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  1456. UNION ALL
  1457. SELECT y.DepCode+a.ToWarehouseCode+y.MOCode+a.MUSER AS Costre,y.DepCode,a.ToWarehouseCode AS WarehouseCode,y.MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY y.DepCode,a.ToWarehouseCode,y.MOCode,x.PickID,a.InvCode) AS Sequence,
  1458. a.InvCode,inv.InvRate,SUM(a.Quantity) AS Quantity,0 AS Amount,x.PickID AS SourceDetailID,a.Enable AS UpdateTodoQuantity,a.conStockEnable AS UpdateStock
  1459. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  1460. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  1461. FROM #NewDouTempERP a
  1462. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1463. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1464. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1465. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1466. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1467. INNER JOIN ICSMO y ON b.TransCode=y.MOCode AND b.WorkPoint=y.WorkPoint
  1468. INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint AND b.TransSequence = y.Sequence + '~' + x.Sequence
  1469. WHERE lot.Quantity > 0
  1470. GROUP BY y.DepCode,a.ToWarehouseCode,y.MOCode,a.MUSER,a.InvCode,inv.InvRate,x.PickID,x.MODetailID,a.Enable,a.conStockEnable
  1471. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  1472. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  1473. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,'' AS SourceType,MOCode AS SourceCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,UpdateStock FROM #TempERP
  1474. SELECT Costre,Sequence,InvCode,InvRate,Quantity,Amount,SourceDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 ,WarehouseCode AS WHCode FROM #TempERP
  1475. DROP TABLE #TempERP
  1476. DROP TABLE #NewTempERP
  1477. DROP TABLE #NewDouTempERP";
  1478. }
  1479. }
  1480. else if (TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription())
  1481. {
  1482. if (DBHelper.IsPNU9())
  1483. {
  1484. sql = @"select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity
  1485. INTO #NewTempERP
  1486. from ICSWareHouseLotInfoLog
  1487. WHERE Identification='{0}' AND ERPUpload='0' AND ISNULL(LogID, '')=''
  1488. select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,LogID
  1489. INTO #NewDouTempERP
  1490. from ICSWareHouseLotInfoLog
  1491. WHERE Identification='{0}' AND ERPUpload='0' AND ISNULL(LogID, '')<>''
  1492. SELECT a.ToWarehouseCode+z.ApplyNegCode+a.MUSER AS Costre,'' AS DepCode,a.ToWarehouseCode AS WarehouseCode,z.ApplyNegCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY a.ToWarehouseCode,z.ApplyNegCode,c.id,a.InvCode) AS Sequence,
  1493. a.InvCode,SUM(a.Quantity) AS Quantity,0 AS Amount,c.id AS SourceDetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock
  1494. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  1495. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  1496. INTO #TempERP
  1497. FROM #NewTempERP a
  1498. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1499. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1500. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1501. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1502. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1503. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1504. INNER JOIN ICSMOApplyNeg z ON c.ApplyNegCode=z.ApplyNegCode AND c.WorkPoint=z.WorkPoint
  1505. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  1506. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  1507. GROUP BY a.ToWarehouseCode,z.ApplyNegCode,a.MUSER,a.InvCode,c.id,con.Enable,conStock.Enable
  1508. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  1509. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  1510. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,'' AS SourceType,ApplyNegCode AS SourceCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,UpdateStock FROM #TempERP
  1511. SELECT Costre,Sequence,InvCode,Quantity,Amount,SourceDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 ,WarehouseCode AS WHCode FROM #TempERP
  1512. DROP TABLE #TempERP
  1513. DROP TABLE #NewTempERP
  1514. DROP TABLE #NewDouTempERP";
  1515. }
  1516. else
  1517. {
  1518. sql = @"select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity
  1519. INTO #NewTempERP
  1520. from ICSWareHouseLotInfoLog
  1521. WHERE Identification='{0}' AND ERPUpload='0' AND ISNULL(LogID, '')=''
  1522. select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,LogID
  1523. INTO #NewDouTempERP
  1524. from ICSWareHouseLotInfoLog
  1525. WHERE Identification='{0}' AND ERPUpload='0' AND ISNULL(LogID, '')<>''
  1526. SELECT a.ToWarehouseCode+isnull(z.ApplyCode,zz.ApplyCode)+a.MUSER AS Costre,'' AS DepCode,a.ToWarehouseCode AS WarehouseCode,isnull(z.ApplyCode,zz.ApplyCode) as ApplyCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY a.ToWarehouseCode,isnull(z.ApplyCode,zz.ApplyCode),isnull(z.ApplyDetailID,zz.ApplyDetailID),a.InvCode) AS Sequence,
  1527. a.InvCode,SUM(a.Quantity) AS Quantity,0 AS Amount,isnull(z.ApplyDetailID,zz.ApplyDetailID) AS SourceDetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock
  1528. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  1529. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  1530. ,isnull(z.ApplyID ,zz.ApplyID) as ApplyID
  1531. INTO #TempERP
  1532. FROM #NewTempERP a
  1533. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1534. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1535. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1536. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1537. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1538. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1539. left JOIN ICSMOApply z ON c.SourceDetailID=z.ApplyDetailID AND c.WorkPoint=z.WorkPoint
  1540. left JOIN ICSMOApply zz ON c.ID=zz.ApplyDetailID AND c.WorkPoint=zz.WorkPoint
  1541. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  1542. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  1543. GROUP BY a.ToWarehouseCode,z.ApplyCode,zz.ApplyCode,a.MUSER,a.InvCode,isnull(z.ApplyDetailID,zz.ApplyDetailID),con.Enable,conStock.Enable
  1544. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  1545. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, ''),z.ApplyID ,zz.ApplyID
  1546. UNION ALL
  1547. SELECT a.ToWarehouseCode+z.ApplyCode+a.MUSER AS Costre,'' AS DepCode,a.ToWarehouseCode AS WarehouseCode,z.ApplyCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY a.ToWarehouseCode,z.ApplyCode,z.ApplyDetailID,a.InvCode) AS Sequence,
  1548. a.InvCode,SUM(a.Quantity) AS Quantity,0 AS Amount,z.ApplyDetailID AS SourceDetailID ,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock
  1549. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  1550. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  1551. ,z.ApplyID
  1552. FROM #NewDouTempERP a
  1553. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1554. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1555. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1556. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1557. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1558. INNER JOIN ICSMOApply z ON b.TransCode=z.ApplyCode AND b.TransSequence=z.Sequence AND b.WorkPoint=z.WorkPoint
  1559. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  1560. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  1561. GROUP BY a.ToWarehouseCode,z.ApplyCode,a.MUSER,a.InvCode,z.ApplyDetailID,con.Enable,conStock.Enable
  1562. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  1563. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, ''),z.ApplyID
  1564. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,'' AS SourceType,ApplyCode AS SourceCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,UpdateStock,ApplyID as SourceID FROM #TempERP
  1565. SELECT Costre,Sequence,InvCode,Quantity,Amount,SourceDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 ,WarehouseCode AS WHCode FROM #TempERP
  1566. DROP TABLE #TempERP
  1567. DROP TABLE #NewTempERP
  1568. DROP TABLE #NewDouTempERP";
  1569. }
  1570. }
  1571. //根据材料出库单查询上游单据,根据上游单据生成红字材料出库
  1572. else if (TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
  1573. {
  1574. sql = @"
  1575. select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity
  1576. INTO #NewTempERP
  1577. from ICSWareHouseLotInfoLog
  1578. WHERE Identification='{0}' AND ERPUpload='0' AND ISNULL(LogID, '')=''
  1579. select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,LogID
  1580. INTO #NewDouTempERP
  1581. from ICSWareHouseLotInfoLog
  1582. WHERE Identification='{0}' AND ERPUpload='0' AND ISNULL(LogID, '')<>''
  1583. IF EXISTS(select * FROM #NewTempERP a
  1584. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1585. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1586. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1587. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1588. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1589. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1590. INNER JOIN ICSMOIssue m ON c.SourceDetailID=m.IssueDetailID AND c.WorkPoint=m.WorkPoint
  1591. LEFT JOIN ICSMOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
  1592. LEFT JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
  1593. LEFT JOIN ICSMOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.WorkPoint
  1594. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  1595. where m.ApplyDetailID<>null and z.ApplyDetailID=null)
  1596. BEGIN
  1597. RAISERROR('" + language.GetNameByCode("WMSAPIInfo480") + @"',16,1);
  1598. RETURN
  1599. END
  1600. IF EXISTS(select * FROM #NewDouTempERP a
  1601. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1602. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1603. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1604. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1605. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1606. INNER JOIN ICSMOIssue m ON b.TransCode=m.IssueCode AND b.TransSequence=m.Sequence AND b.WorkPoint=m.WorkPoint
  1607. LEFT JOIN ICSMOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
  1608. LEFT JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
  1609. LEFT JOIN ICSMOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.WorkPoint
  1610. where m.ApplyDetailID<>null and z.ApplyDetailID=null)
  1611. BEGIN
  1612. RAISERROR('" + language.GetNameByCode("WMSAPIInfo480") + @"',16,1);
  1613. RETURN
  1614. END
  1615. SELECT ISNULL(y.DepCode, '')+a.ToWarehouseCode+a.MUSER AS Costre,ISNULL(y.DepCode, '') AS DepCode,a.ToWarehouseCode AS WarehouseCode,CASE WHEN m.ApplyDetailID IS NOT NULL THEN '' WHEN m.PickID IS NOT NULL THEN '' ELSE '' END AS SourceType,ISNULL(z.ApplyCode, y.MOCode) AS MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY ISNULL(y.DepCode, ''),a.ToWarehouseCode,ISNULL(z.ApplyCode, y.MOCode),ISNULL(m.ApplyDetailID, m.PickID),a.InvCode) AS Sequence,
  1616. a.InvCode,SUM(a.Quantity) AS Quantity,0 AS Amount,ISNULL(m.ApplyDetailID, m.PickID) AS SourceDetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock
  1617. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  1618. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  1619. ,m.issuecode as DocCode,m.Sequence as DocLineNo
  1620. INTO #TempERP
  1621. FROM #NewTempERP a
  1622. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1623. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1624. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1625. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1626. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1627. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1628. INNER JOIN ICSMOIssue m ON c.SourceDetailID=m.IssueDetailID AND c.WorkPoint=m.WorkPoint
  1629. LEFT JOIN ICSMOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
  1630. LEFT JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
  1631. LEFT JOIN ICSMOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.WorkPoint
  1632. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  1633. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  1634. GROUP BY ISNULL(y.DepCode, ''),a.ToWarehouseCode,ISNULL(z.ApplyCode, y.MOCode),a.MUSER,a.InvCode,m.ApplyDetailID, m.PickID,con.Enable,conStock.Enable
  1635. ,m.issuecode,m.Sequence ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  1636. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  1637. UNION ALL
  1638. SELECT ISNULL(y.DepCode, '')+a.ToWarehouseCode+a.MUSER AS Costre,ISNULL(y.DepCode, '') AS DepCode,a.ToWarehouseCode AS WarehouseCode,CASE WHEN m.ApplyDetailID IS NOT NULL THEN '' WHEN m.PickID IS NOT NULL THEN '' ELSE '' END AS SourceType,ISNULL(z.ApplyCode, y.MOCode) AS MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY ISNULL(y.DepCode, ''),a.ToWarehouseCode,ISNULL(z.ApplyCode, y.MOCode),ISNULL(m.ApplyDetailID, m.PickID),a.InvCode) AS Sequence,
  1639. a.InvCode,SUM(a.Quantity) AS Quantity,0 AS Amount,ISNULL(m.ApplyDetailID, m.PickID) AS SourceDetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock
  1640. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  1641. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  1642. ,m.issuecode as DocCode,m.Sequence as DocLineNo
  1643. FROM #NewDouTempERP a
  1644. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1645. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1646. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1647. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1648. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1649. INNER JOIN ICSMOIssue m ON b.TransCode=m.IssueCode AND b.TransSequence=m.Sequence AND b.WorkPoint=m.WorkPoint
  1650. LEFT JOIN ICSMOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
  1651. LEFT JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
  1652. LEFT JOIN ICSMOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.WorkPoint
  1653. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  1654. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  1655. GROUP BY ISNULL(y.DepCode, ''),a.ToWarehouseCode,ISNULL(z.ApplyCode, y.MOCode),a.MUSER,a.InvCode,m.ApplyDetailID, m.PickID,con.Enable,conStock.Enable
  1656. ,m.issuecode,m.Sequence ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  1657. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  1658. IF EXISTS(SELECT Costre FROM #TempERP WHERE SourceType='{0}')
  1659. BEGIN
  1660. RAISERROR('" + language.GetNameByCode("WMSAPIInfo135") + @"',16,1);
  1661. END
  1662. SELECT DISTINCT Costre+isnull(MOCode,'')+isnull(DocCode,'') as Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,SourceType,MOCode AS SourceCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,UpdateStock,DocCode,'19' as DocTypeCode FROM #TempERP
  1663. SELECT Costre+isnull(MOCode,'')+isnull(DocCode,'') as Costre,Sequence,InvCode,Quantity,Amount,SourceDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 ,WarehouseCode AS WHCode, DocLineNo FROM #TempERP
  1664. DROP TABLE #TempERP
  1665. DROP TABLE #NewTempERP
  1666. DROP TABLE #NewDouTempERP";
  1667. }
  1668. else
  1669. {
  1670. throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"类型不符!");
  1671. }
  1672. sql = string.Format(sql, Identification);
  1673. DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  1674. string Inputstr = DataToJsonHelper.DataSetToJson(ds, "details", "Costre");
  1675. string resultStr = "";
  1676. if (DBHelper.IsU9())
  1677. { resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.U9MOIssueDocNegativeURL, Inputstr); }
  1678. else
  1679. {
  1680. if (adtt.Rows.Count > 0 && adtt != null)
  1681. {
  1682. resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.JHMOIssueDocNegativeURL, Inputstr);
  1683. }
  1684. else
  1685. {
  1686. resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.MOIssueDocNegativeURL, Inputstr);
  1687. }
  1688. }
  1689. Result result = new Result();
  1690. result = JsonConvert.DeserializeObject<Result>(resultStr);
  1691. if (result.Success)
  1692. {
  1693. try
  1694. {
  1695. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  1696. foreach (var item in res)
  1697. {
  1698. JObject jo = (JObject)item;
  1699. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  1700. foreach (var detail in resdetail)
  1701. {
  1702. JObject det = (JObject)detail;
  1703. string allcol = jo["WHCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  1704. + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  1705. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["SourceDetailID"].ToString(), Identification, jo["ID"].ToString(),
  1706. det["DetailID"].ToString(), jo["IssueNEGCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  1707. }
  1708. }
  1709. }
  1710. catch (Exception ex)
  1711. {
  1712. log.Debug(ex.ToString());
  1713. log.Debug(resultStr);
  1714. }
  1715. }
  1716. else
  1717. {
  1718. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  1719. }
  1720. #endregion
  1721. }
  1722. catch (Exception)
  1723. {
  1724. throw;
  1725. }
  1726. }
  1727. /// <summary>
  1728. /// 生产退料接口
  1729. /// </summary>
  1730. /// <param name="TransType"></param>
  1731. /// <param name="Identification"></param>
  1732. /// <param name="cmd"></param>
  1733. public static void DXMOIssueDocNegativeERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode,string IsDx)
  1734. {
  1735. try
  1736. {
  1737. #region ERP
  1738. string sql = string.Empty;
  1739. if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription())
  1740. {
  1741. sql = @"select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity
  1742. INTO #NewTempERP
  1743. from ICSWareHouseLotInfoLog
  1744. WHERE Identification='{0}' AND ERPUpload='0' AND ISNULL(LogID, '')=''
  1745. select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,LogID
  1746. INTO #NewDouTempERP
  1747. from ICSWareHouseLotInfoLog
  1748. WHERE Identification='{0}' AND ERPUpload='0' AND ISNULL(LogID, '')<>''
  1749. SELECT isnull(y.DepCode,'')+a.ToWarehouseCode+y.MOCode+a.MUSER AS Costre,y.DepCode,a.ToWarehouseCode AS WarehouseCode,y.MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY y.DepCode,a.ToWarehouseCode,y.MOCode,x.PickID,a.InvCode) AS Sequence,
  1750. a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(lot.Amount/lot.Quantity)) ELSE '0' END AS Amount,x.PickID AS SourceDetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock
  1751. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  1752. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  1753. INTO #TempERP
  1754. FROM #NewTempERP a
  1755. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1756. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1757. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1758. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1759. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1760. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1761. INNER JOIN ICSMOPick x ON c.SourceDetailID=x.PickID AND c.WorkPoint=x.WorkPoint
  1762. INNER JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
  1763. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  1764. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  1765. GROUP BY inv.AmountEnable,y.DepCode,a.ToWarehouseCode,y.MOCode,a.MUSER,a.InvCode,lot.Amount,lot.Quantity,x.PickID,x.MODetailID,con.Enable,conStock.Enable
  1766. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  1767. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  1768. UNION ALL
  1769. SELECT isnull(y.DepCode,'')+a.ToWarehouseCode+y.MOCode+a.MUSER AS Costre,y.DepCode,a.ToWarehouseCode AS WarehouseCode,y.MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY y.DepCode,a.ToWarehouseCode,y.MOCode,x.PickID,a.InvCode) AS Sequence,
  1770. a.InvCode,SUM(a.Quantity) AS Quantity,0 AS Amount,x.PickID AS SourceDetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock
  1771. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  1772. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  1773. FROM #NewDouTempERP a
  1774. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1775. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1776. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1777. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1778. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1779. INNER JOIN ICSMO y ON b.TransCode=y.MOCode AND b.WorkPoint=y.WorkPoint
  1780. INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint AND b.TransSequence = y.Sequence + '~' + x.Sequence
  1781. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  1782. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  1783. GROUP BY y.DepCode,a.ToWarehouseCode,y.MOCode,a.MUSER,a.InvCode,x.PickID,x.MODetailID,con.Enable,conStock.Enable
  1784. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  1785. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  1786. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,'' AS SourceType,MOCode AS SourceCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,UpdateStock FROM #TempERP
  1787. SELECT Costre,Sequence,InvCode,Quantity,Amount,SourceDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 ,WarehouseCode AS WHCode FROM #TempERP
  1788. DROP TABLE #TempERP
  1789. DROP TABLE #NewTempERP
  1790. DROP TABLE #NewDouTempERP";
  1791. }
  1792. else if (TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription())
  1793. {
  1794. sql = @"select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity
  1795. INTO #NewTempERP
  1796. from ICSWareHouseLotInfoLog
  1797. WHERE Identification='{0}' AND ERPUpload='0' AND ISNULL(LogID, '')=''
  1798. select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,LogID
  1799. INTO #NewDouTempERP
  1800. from ICSWareHouseLotInfoLog
  1801. WHERE Identification='{0}' AND ERPUpload='0' AND ISNULL(LogID, '')<>''
  1802. SELECT a.ToWarehouseCode+z.ApplyCode+a.MUSER AS Costre,'' AS DepCode,a.ToWarehouseCode AS WarehouseCode,z.ApplyCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY a.ToWarehouseCode,z.ApplyCode,z.ApplyDetailID,a.InvCode) AS Sequence,
  1803. a.InvCode,SUM(a.Quantity) AS Quantity,0 AS Amount,z.ApplyDetailID AS SourceDetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock
  1804. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  1805. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  1806. INTO #TempERP
  1807. FROM #NewTempERP a
  1808. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1809. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1810. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1811. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1812. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1813. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1814. INNER JOIN ICSMOApply z ON c.SourceDetailID=z.ApplyDetailID AND c.WorkPoint=z.WorkPoint
  1815. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  1816. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  1817. GROUP BY a.ToWarehouseCode,z.ApplyCode,a.MUSER,a.InvCode,z.ApplyDetailID,con.Enable,conStock.Enable
  1818. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  1819. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  1820. UNION ALL
  1821. SELECT a.ToWarehouseCode+z.ApplyCode+a.MUSER AS Costre,'' AS DepCode,a.ToWarehouseCode AS WarehouseCode,z.ApplyCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY a.ToWarehouseCode,z.ApplyCode,z.ApplyDetailID,a.InvCode) AS Sequence,
  1822. a.InvCode,SUM(a.Quantity) AS Quantity,0 AS Amount,z.ApplyDetailID AS SourceDetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock
  1823. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  1824. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  1825. FROM #NewDouTempERP a
  1826. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1827. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1828. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1829. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1830. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1831. INNER JOIN ICSMOApply z ON b.TransCode=z.ApplyCode AND b.TransSequence=z.Sequence AND b.WorkPoint=z.WorkPoint
  1832. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  1833. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  1834. GROUP BY a.ToWarehouseCode,z.ApplyCode,a.MUSER,a.InvCode,z.ApplyDetailID,con.Enable,conStock.Enable
  1835. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  1836. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  1837. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,'' AS SourceType,ApplyCode AS SourceCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,UpdateStock FROM #TempERP
  1838. SELECT Costre,Sequence,InvCode,Quantity,Amount,SourceDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 ,WarehouseCode AS WHCode FROM #TempERP
  1839. DROP TABLE #TempERP
  1840. DROP TABLE #NewTempERP
  1841. DROP TABLE #NewDouTempERP";
  1842. }
  1843. //根据材料出库单查询上游单据,根据上游单据生成红字材料出库
  1844. else if (TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
  1845. {
  1846. sql = @"
  1847. select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity
  1848. INTO #NewTempERP
  1849. from ICSWareHouseLotInfoLog
  1850. WHERE Identification='{0}' AND ERPUpload='0' AND ISNULL(LogID, '')=''
  1851. select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,LogID
  1852. INTO #NewDouTempERP
  1853. from ICSWareHouseLotInfoLog
  1854. WHERE Identification='{0}' AND ERPUpload='0' AND ISNULL(LogID, '')<>''
  1855. IF EXISTS(select * FROM #NewTempERP a
  1856. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1857. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1858. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1859. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1860. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1861. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1862. INNER JOIN ICSMOIssue m ON c.SourceDetailID=m.IssueDetailID AND c.WorkPoint=m.WorkPoint
  1863. LEFT JOIN ICSMOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
  1864. LEFT JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
  1865. LEFT JOIN ICSMOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.WorkPoint
  1866. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  1867. where m.ApplyDetailID<>null and z.ApplyDetailID=null)
  1868. BEGIN
  1869. RAISERROR('" + language.GetNameByCode("WMSAPIInfo480") + @"',16,1);
  1870. RETURN
  1871. END
  1872. IF EXISTS(select * FROM #NewDouTempERP a
  1873. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1874. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1875. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1876. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1877. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1878. INNER JOIN ICSMOIssue m ON b.TransCode=m.IssueCode AND b.TransSequence=m.Sequence AND b.WorkPoint=m.WorkPoint
  1879. LEFT JOIN ICSMOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
  1880. LEFT JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
  1881. LEFT JOIN ICSMOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.WorkPoint
  1882. where m.ApplyDetailID<>null and z.ApplyDetailID=null)
  1883. BEGIN
  1884. RAISERROR('" + language.GetNameByCode("WMSAPIInfo480") + @"',16,1);
  1885. RETURN
  1886. END
  1887. SELECT ISNULL(y.DepCode, '')+a.ToWarehouseCode+a.MUSER AS Costre,ISNULL(y.DepCode, '') AS DepCode,a.ToWarehouseCode AS WarehouseCode,CASE WHEN m.ApplyDetailID IS NOT NULL THEN '' WHEN m.PickID IS NOT NULL THEN '' ELSE '' END AS SourceType,ISNULL(z.ApplyCode, y.MOCode) AS MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY ISNULL(y.DepCode, ''),a.ToWarehouseCode,ISNULL(z.ApplyCode, y.MOCode),ISNULL(m.ApplyDetailID, m.PickID),a.InvCode) AS Sequence,
  1888. a.InvCode,SUM(a.Quantity) AS Quantity,0 AS Amount,ISNULL(m.ApplyDetailID, m.PickID) AS SourceDetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock
  1889. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  1890. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  1891. ,m.issuecode as DocCode,m.Sequence as DocLineNo
  1892. INTO #TempERP
  1893. FROM #NewTempERP a
  1894. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1895. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1896. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1897. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1898. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1899. INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  1900. INNER JOIN ICSMOIssue m ON c.SourceDetailID=m.IssueDetailID AND c.WorkPoint=m.WorkPoint
  1901. LEFT JOIN ICSMOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
  1902. LEFT JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
  1903. LEFT JOIN ICSMOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.WorkPoint
  1904. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  1905. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  1906. GROUP BY ISNULL(y.DepCode, ''),a.ToWarehouseCode,ISNULL(z.ApplyCode, y.MOCode),a.MUSER,a.InvCode,m.ApplyDetailID, m.PickID,con.Enable,conStock.Enable
  1907. ,m.issuecode,m.Sequence ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  1908. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  1909. UNION ALL
  1910. SELECT ISNULL(y.DepCode, '')+a.ToWarehouseCode+a.MUSER AS Costre,ISNULL(y.DepCode, '') AS DepCode,a.ToWarehouseCode AS WarehouseCode,CASE WHEN m.ApplyDetailID IS NOT NULL THEN '' WHEN m.PickID IS NOT NULL THEN '' ELSE '' END AS SourceType,ISNULL(z.ApplyCode, y.MOCode) AS MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY ISNULL(y.DepCode, ''),a.ToWarehouseCode,ISNULL(z.ApplyCode, y.MOCode),ISNULL(m.ApplyDetailID, m.PickID),a.InvCode) AS Sequence,
  1911. a.InvCode,SUM(a.Quantity) AS Quantity,0 AS Amount,ISNULL(m.ApplyDetailID, m.PickID) AS SourceDetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock
  1912. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  1913. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  1914. ,m.issuecode as DocCode,m.Sequence as DocLineNo
  1915. FROM #NewDouTempERP a
  1916. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  1917. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  1918. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  1919. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  1920. INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
  1921. INNER JOIN ICSMOIssue m ON b.TransCode=m.IssueCode AND b.TransSequence=m.Sequence AND b.WorkPoint=m.WorkPoint
  1922. LEFT JOIN ICSMOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
  1923. LEFT JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
  1924. LEFT JOIN ICSMOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.WorkPoint
  1925. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  1926. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock002' AND a.WorkPoint=conStock.WorkPoint
  1927. GROUP BY ISNULL(y.DepCode, ''),a.ToWarehouseCode,ISNULL(z.ApplyCode, y.MOCode),a.MUSER,a.InvCode,m.ApplyDetailID, m.PickID,con.Enable,conStock.Enable
  1928. ,m.issuecode,m.Sequence ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  1929. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  1930. IF EXISTS(SELECT Costre FROM #TempERP WHERE SourceType='{0}')
  1931. BEGIN
  1932. RAISERROR('" + language.GetNameByCode("WMSAPIInfo135") + @"',16,1);
  1933. END
  1934. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,SourceType,MOCode AS SourceCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,UpdateStock,DocCode,'19' as DocTypeCode FROM #TempERP
  1935. SELECT Costre,Sequence,InvCode,Quantity,Amount,SourceDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 ,WarehouseCode AS WHCode, DocLineNo FROM #TempERP
  1936. DROP TABLE #TempERP
  1937. DROP TABLE #NewTempERP
  1938. DROP TABLE #NewDouTempERP";
  1939. }
  1940. else
  1941. {
  1942. throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"类型不符!");
  1943. }
  1944. sql = string.Format(sql, Identification);
  1945. DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  1946. string Inputstr = DataToJsonHelper.DataSetToJson(ds, "details", "Costre");
  1947. string resultStr = "";
  1948. if (DBHelper.IsU9())
  1949. { resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.U9MOIssueDocNegativeURL, Inputstr); }
  1950. else
  1951. {
  1952. if (IsDx == "1")
  1953. {
  1954. resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.NewDXNewMOIssueDocNegativeURL, Inputstr);
  1955. }
  1956. else
  1957. {
  1958. resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.DXMOIssueDocNegativeURLNew, Inputstr);
  1959. }
  1960. }
  1961. Result result = new Result();
  1962. result = JsonConvert.DeserializeObject<Result>(resultStr);
  1963. if (result.Success)
  1964. {
  1965. try
  1966. {
  1967. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  1968. foreach (var item in res)
  1969. {
  1970. JObject jo = (JObject)item;
  1971. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  1972. foreach (var detail in resdetail)
  1973. {
  1974. JObject det = (JObject)detail;
  1975. string allcol = jo["WHCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  1976. + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  1977. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["SourceDetailID"].ToString(), Identification, jo["ID"].ToString(),
  1978. det["DetailID"].ToString(), jo["IssueNEGCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  1979. }
  1980. }
  1981. }
  1982. catch (Exception ex)
  1983. {
  1984. log.Debug(ex.ToString());
  1985. log.Debug(resultStr);
  1986. }
  1987. }
  1988. else
  1989. {
  1990. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  1991. }
  1992. #endregion
  1993. }
  1994. catch (Exception)
  1995. {
  1996. throw;
  1997. }
  1998. }
  1999. #endregion
  2000. #region 生产入库
  2001. /// <summary>
  2002. /// 生产入库
  2003. /// </summary>
  2004. /// <param name="TransCode"></param>
  2005. /// <param name="TransSequence"></param>
  2006. /// <param name="Quantity"></param>
  2007. /// <param name="WorkPoint"></param>
  2008. /// <param name="cmd"></param>
  2009. public static void ManufactureReceiveDoc(string LotNo, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  2010. {
  2011. try
  2012. {
  2013. string checksql = @" SELECT c.MOCode FROM ICSInventoryLot a
  2014. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2015. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2016. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
  2017. checksql = string.Format(checksql, LotNo, WorkPoint, Quantity);
  2018. DataTable dtt = DBHelper.SQlReturnData(checksql, cmd);
  2019. string TransCode = dtt.Rows[0]["MOCode"].ToString();
  2020. string sql = @"DECLARE @Status VARCHAR(10)
  2021. DECLARE @TransCode VARCHAR(40)
  2022. SELECT @Status=c.ERPStatus,@TransCode=c.MoCode FROM ICSInventoryLot a
  2023. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2024. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2025. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  2026. IF (@Status IS NULL)
  2027. BEGIN
  2028. RAISERROR('" + language.GetNameByCode("WMSAPIInfo081") + @"',16,1);
  2029. RETURN
  2030. END
  2031. ELSE IF (@Status='3')
  2032. BEGIN
  2033. RAISERROR('" + language.GetNameByCode("WMSAPIInfo082") + @",{3}', 16, 1);
  2034. DECLARE @MSG VARCHAR(200)
  2035. set @MSG = '" + language.GetNameByCode("WMSAPIInfo082") + @",' + @TransCode
  2036. RAISERROR(@MSG, 16, 1);
  2037. RETURN
  2038. END
  2039. UPDATE c SET RCVQuantity=ISNULL(RCVQuantity,0)+'{2}'+ISNULL(d.Quantity, 0)
  2040. FROM ICSInventoryLot a
  2041. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2042. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2043. LEFT JOIN ICSInventoryLot d ON d.EATTRIBUTE29=a.LotNo AND d.WorkPoint=a.WorkPoint
  2044. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  2045. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  2046. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2047. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2048. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  2049. AND dbo.GetExcessInQty(c.InvCode, c.WorkPoint, 'OverIn011', c.Quantity,1,2,'')<c.RCVQuantity)
  2050. BEGIN
  2051. RAISERROR('" + language.GetNameByCode("WMSAPIInfo083") + @"',16,1);
  2052. END";
  2053. sql = string.Format(sql, LotNo, WorkPoint, Quantity, TransCode);
  2054. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2055. {
  2056. throw new Exception(language.GetNameByCode("WMSAPIInfo136"));//"生产订单更新失败!");
  2057. }
  2058. }
  2059. catch (Exception)
  2060. {
  2061. throw;
  2062. }
  2063. }
  2064. /// <summary>
  2065. /// 生产入库(奥美专用)
  2066. /// </summary>
  2067. /// <param name="TransCode"></param>
  2068. /// <param name="TransSequence"></param>
  2069. /// <param name="Quantity"></param>
  2070. /// <param name="WorkPoint"></param>
  2071. /// <param name="cmd"></param>
  2072. public static void ManufactureReceiveDocAM(string LotNo, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  2073. {
  2074. try
  2075. {
  2076. string cheksql = @"select d.EATTRIBUTE1 FROM ICSInventoryLot a
  2077. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2078. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2079. INNER JOIN ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  2080. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and d.AmountEnable='1'";
  2081. cheksql = string.Format(cheksql, LotNo, WorkPoint);
  2082. DataTable dt = DBHelper.SQlReturnData(cheksql, cmd);
  2083. if (dt.Rows.Count > 0)
  2084. {
  2085. Quantity = (decimal.Parse(Quantity) * decimal.Parse(dt.Rows[0]["EATTRIBUTE1"].ToString())).ToString();
  2086. }
  2087. string sql = @"DECLARE @Status VARCHAR(10)
  2088. SELECT @Status=c.ERPStatus FROM ICSInventoryLot a
  2089. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2090. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2091. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  2092. IF (@Status IS NULL)
  2093. BEGIN
  2094. RAISERROR('" + language.GetNameByCode("WMSAPIInfo081") + @"',16,1);
  2095. RETURN
  2096. END
  2097. ELSE IF (@Status='3')
  2098. BEGIN
  2099. RAISERROR('" + language.GetNameByCode("WMSAPIInfo082") + @"',16,1);
  2100. RETURN
  2101. END
  2102. UPDATE c SET RCVQuantity=ISNULL(RCVQuantity,0)+'{2}'
  2103. FROM ICSInventoryLot a
  2104. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2105. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2106. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  2107. --IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  2108. -- INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2109. -- INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2110. -- WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  2111. -- AND dbo.GetExcessInQty(c.InvCode, c.WorkPoint, 'OverIn001', '{0}')<c.RCVQuantity)
  2112. --BEGIN
  2113. -- RAISERROR('" + language.GetNameByCode("WMSAPIInfo083") + @"',16,1);
  2114. --END";
  2115. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  2116. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2117. {
  2118. throw new Exception(language.GetNameByCode("WMSAPIInfo136"));//"生产订单更新失败!");
  2119. }
  2120. }
  2121. catch (Exception)
  2122. {
  2123. throw;
  2124. }
  2125. }
  2126. /// <summary>
  2127. /// 生产入库接口
  2128. /// </summary>
  2129. /// <param name="TransType"></param>
  2130. /// <param name="Identification"></param>
  2131. /// <param name="cmd"></param>
  2132. public static void ManufactureReceiveDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode,string PalletCode)
  2133. {
  2134. try
  2135. {
  2136. #region ERP
  2137. string sql = "";
  2138. string outwhcode = "";
  2139. DataTable flag = null;
  2140. string enablesql = @"select * from ICSConfiguration where code = 'MostackInBack001' and enable = '1'";
  2141. flag = DBHelper.SQlReturnData(enablesql, cmd);
  2142. if (DBHelper.IsU9()) { sql = @"SELECT ISNULL(c.DepCode,'')+a.ToWarehouseCode+c.MOCode+a.MUSER AS Costre,
  2143. c.MODetailID+CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END+CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END+ CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END
  2144. + CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END
  2145. + CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END
  2146. + CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END
  2147. + CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END
  2148. + CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END
  2149. + CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END
  2150. + CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END
  2151. + CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END
  2152. + CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END
  2153. + CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END
  2154. + CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END AS Costre2,lot.EATTRIBUTE2,
  2155. c.DepCode,a.ToWarehouseCode AS WarehouseCode,c.MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY c.DepCode,a.ToWarehouseCode,c.MOCode,c.MODetailID,a.InvCode) AS Sequence,
  2156. a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(lot.Amount/lot.Quantity)) ELSE '0' END AS Amount,c.MODetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,conStocknew.Enable AS IsFillClose
  2157. ,a.WorkPoint,CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END AS ProjectCode,
  2158. CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
  2159. CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END AS Version,
  2160. CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END AS Brand,
  2161. CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END AS cFree1,
  2162. CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END AS cFree2,
  2163. CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END AS cFree3,
  2164. CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END AS cFree4,
  2165. CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END AS cFree5,
  2166. CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END AS cFree6,
  2167. CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END AS cFree7,
  2168. CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END AS cFree8,
  2169. CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END AS cFree9,
  2170. CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END AS cFree10,
  2171. conv.Enable AS CompleteVerification,a.TransSequence
  2172. INTO #TempERP
  2173. FROM ICSWareHouseLotInfoLog a
  2174. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2175. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2176. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2177. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2178. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2179. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2180. INNER JOIN ICSExtension docext ON docext.ID=c.ExtensionID AND docext.WorkPoint=c.WorkPoint
  2181. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  2182. INNER JOIN ICSConfiguration conv ON conv.Code='CompleteVerification002' AND a.WorkPoint=conv.WorkPoint
  2183. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock004' AND a.WorkPoint=conStock.WorkPoint
  2184. INNER JOIN ICSConfiguration conStocknew ON a.WorkPoint=conStocknew.WorkPoint AND conStocknew.Code='FillClose001'
  2185. WHERE a.Identification='{0}' AND ERPUpload='0' AND BusinessCode='{1}'
  2186. GROUP BY inv.AmountEnable,c.DepCode,a.ToWarehouseCode,c.MOCode,a.MUSER,a.InvCode,c.MODetailID,con.Enable,conv.Enable,conStock.Enable,conStocknew.Enable
  2187. ,a.WorkPoint,CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END,lot.EATTRIBUTE2,
  2188. CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,
  2189. CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END,
  2190. CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END,
  2191. CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END,
  2192. CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END,
  2193. CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END,
  2194. CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END,
  2195. CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END,
  2196. CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END,
  2197. CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END,
  2198. CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END,
  2199. CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END,
  2200. CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END,a.TransSequence
  2201. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,MOCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,CompleteVerification,UpdateStock,IsFillClose FROM #TempERP
  2202. SELECT Costre,Costre2,TransSequence,Sequence,InvCode,Quantity,Amount,MODetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,EATTRIBUTE2 as OutType
  2203. FROM #TempERP
  2204. SELECT a.FromWarehouseCode AS WHCode,c.MODetailID+te.ProjectCode+te.BatchCode+te.Version+te.Brand+te.cFree1+te.cFree2+te.cFree3+te.cFree4+te.cFree5+te.cFree6+te.cFree7+te.cFree8+te.cFree9+te.cFree10 AS Costre2,a.TransCode,a.TransSequence AS Sequence,a.InvCode,SUM(c.Quantity/b.Quantity*a.Quantity) as Quantity,SUM((c.Quantity/b.Quantity*a.Quantity)*(c.Amount/c.Quantity)) AS Amount,c.PickID,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  2205. FROM ICSWareHouseLotInfoLog a
  2206. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2207. INNER JOIN ICSMO b ON b.MOCode=a.TransCode AND b.WorkPoint=a.WorkPoint
  2208. INNER JOIN ICSMOPick c ON c.MODetailID=b.MODetailID AND c.WorkPoint=b.WorkPoint AND a.TransSequence=b.Sequence+'~'+c.Sequence
  2209. INNER JOIN ICSExtension ext ON ext.ID=c.ExtensionID AND ext.WorkPoint=c.WorkPoint
  2210. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2211. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2212. INNER JOIN #TempERP te ON te.TransSequence=SUBSTRING(a.TransSequence,1,CHARINDEX('~',a.TransSequence)-1)
  2213. WHERE a.Identification='{0}' AND a.TransType='12'
  2214. GROUP BY a.FromWarehouseCode,c.MODetailID,a.TransCode,a.TransSequence,a.InvCode,c.PickID,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  2215. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, ''),a.TransSequence,te.ProjectCode,te.BatchCode,te.Version,te.Brand,te.cFree1,te.cFree2,te.cFree3,te.cFree4,te.cFree5,te.cFree6,te.cFree7,te.cFree8,te.cFree9,te.cFree10
  2216. DROP TABLE #TempERP"; }
  2217. else {
  2218. string aasql = @"SELECT DISTINCT
  2219. b.F_Define1
  2220. FROM Sys_SRM_Items a
  2221. LEFT JOIN Sys_SRM_ItemsDetail b ON a.F_Id = b.F_ItemId
  2222. WHERE a.F_EnCode = 'InventoryLotWareHouseFixed'";
  2223. DataTable adtt = DBHelper.SQlReturnData(aasql, cmd);
  2224. if (adtt.Rows.Count > 0 && adtt != null)//晶华项目
  2225. {
  2226. sql = @"SELECT ISNULL(c.DepCode,'')+a.ToWarehouseCode+c.MOCode+a.MUSER AS Costre,
  2227. ISNULL(c.MODetailID,'')+ISNULL(a.TransCode,'')+ISNULL(lot.EATTRIBUTE3,'')+ISNULL(lot.ProductDate,'')+ISNULL(a.TransSequence,'')+ISNULL(c.DepCode,'')+ISNULL(a.ToWarehouseCode,'')+ISNULL(c.MOCode,'')+ISNULL(a.MUSER,'')+ISNULL(a.InvCode,'')
  2228. +ISNULL(a.WorkPoint,'')+CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END+CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END+ CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END
  2229. + CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END
  2230. + CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END
  2231. + CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END
  2232. + CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END
  2233. + CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END
  2234. + CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END
  2235. + CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END
  2236. + CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END
  2237. + CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END
  2238. + CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END
  2239. --+ CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END+ISNULL(lot.eattribute10,'') AS Costre2,ISNULL(c.EATTRIBUTE30,'') AS EATTRIBUTE30,
  2240. + CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END AS Costre2,ISNULL(c.EATTRIBUTE30,'') AS EATTRIBUTE30,
  2241. lot.EATTRIBUTE3,lot.ProductDate,c.DepCode,a.ToWarehouseCode AS WarehouseCode,c.MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY c.DepCode,a.ToWarehouseCode,c.MOCode,c.MODetailID,a.InvCode) AS Sequence,conWhCode.Enable AS ErpWhCode,lot.EATTRIBUTE3,lot.ProductDate
  2242. a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(lot.Amount/lot.Quantity)) ELSE '0' END AS Amount,c.MODetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,conStocknew.Enable AS IsFillClose
  2243. ,a.WorkPoint,CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END AS ProjectCode,
  2244. CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
  2245. CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END AS Version,
  2246. CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END AS Brand,
  2247. CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END AS cFree1,
  2248. CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END AS cFree2,
  2249. CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END AS cFree3,
  2250. CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END AS cFree4,
  2251. CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END AS cFree5,
  2252. CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END AS cFree6,
  2253. CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END AS cFree7,
  2254. CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END AS cFree8,
  2255. CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END AS cFree9,
  2256. CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END AS cFree10,
  2257. conv.Enable AS CompleteVerification,a.TransSequence,lot.eattribute10 as Reason,a.TransCode,a.ToWarehouseCode,c.MOID
  2258. INTO #TempERP
  2259. FROM ICSWareHouseLotInfoLog a
  2260. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2261. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2262. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2263. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2264. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2265. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2266. INNER JOIN ICSExtension docext ON docext.ID=c.ExtensionID AND docext.WorkPoint=c.WorkPoint
  2267. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  2268. INNER JOIN ICSConfiguration conv ON conv.Code='CompleteVerification002' AND a.WorkPoint=conv.WorkPoint
  2269. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock004' AND a.WorkPoint=conStock.WorkPoint
  2270. INNER JOIN ICSConfiguration conStocknew ON a.WorkPoint=conStocknew.WorkPoint AND conStocknew.Code='FillClose001'
  2271. LEFT JOIN ICSConfiguration conWhCode ON conWhCode.Code='ERPWHCode' AND a.WorkPoint=conWhCode.WorkPoint
  2272. WHERE a.Identification='{0}' AND ERPUpload='0' AND BusinessCode='{1}'
  2273. GROUP BY lot.EATTRIBUTE3,lot.ProductDate,c.EATTRIBUTE30,a.TransCode,conWhCode.Enable,inv.AmountEnable,c.DepCode,a.ToWarehouseCode,c.MOCode,a.MUSER,a.InvCode,c.MOID,c.MODetailID,con.Enable,conv.Enable,conStock.Enable,conStocknew.Enable
  2274. ,a.WorkPoint,CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END,
  2275. CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,
  2276. CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END,
  2277. CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END,
  2278. CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END,
  2279. CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END,
  2280. CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END,
  2281. CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END,
  2282. CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END,
  2283. CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END,
  2284. CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END,
  2285. CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END,
  2286. CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END,
  2287. CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END,a.TransSequence,lot.eattribute10
  2288. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,EATTRIBUTE30,MOID,MOCode,MUSER AS [User],ProductDate AS MTime,UpdateTodoQuantity,CompleteVerification,UpdateStock,IsFillClose FROM #TempERP
  2289. SELECT Costre,Costre2,Sequence,InvCode,Quantity,Amount,MODetailID,CASE WHEN isnull(ErpWhCode,0)='1' then WarehouseCode ELSE '' END AS WHCode,'{2}' AS PalletCode,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,Reason,ProductDate AS EffectiveDate,EATTRIBUTE3 AS BatchEffectiveDays
  2290. FROM #TempERP
  2291. SELECT a.EATTRIBUTE3,a.FromWarehouseCode AS WHCode,c.MODetailID+te.TransCode+te.TransSequence+te.DepCode+te.ToWarehouseCode+te.MOCode+te.MUSER+te.InvCode
  2292. +te.WorkPoint+te.ProjectCode+te.BatchCode+te.Version+te.Brand+te.cFree1+te.cFree2+te.cFree3+te.cFree4+te.cFree5+te.cFree6+te.cFree7+te.cFree8+te.cFree9+te.cFree10 AS Costre2,a.TransCode,a.TransSequence AS Sequence,a.InvCode,SUM(a.Quantity) as Quantity,SUM((a.Quantity)*(c.Amount/c.Quantity)) AS Amount,c.PickID,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  2293. FROM ICSWareHouseLotInfoLog a
  2294. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2295. INNER JOIN ICSMO b ON b.MOCode=a.TransCode AND b.WorkPoint=a.WorkPoint
  2296. INNER JOIN ICSMOPick c ON c.MODetailID=b.MODetailID AND c.WorkPoint=b.WorkPoint AND a.TransSequence=b.Sequence+'~'+c.Sequence
  2297. INNER JOIN ICSExtension ext ON ext.ID=lot.ExtensionID AND ext.WorkPoint=lot.WorkPoint
  2298. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2299. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2300. INNER JOIN #TempERP te ON te.TransSequence=SUBSTRING(a.TransSequence,1,case when CHARINDEX('~',a.TransSequence)-1 < 1 then len(a.TransSequence) else CHARINDEX('~',a.TransSequence)-1 end) and
  2301. te.TransCode=a.TransCode
  2302. and c.MODetailID+a.EATTRIBUTE3=c.MODetailID+te.ProjectCode+te.BatchCode+te.Version+te.Brand+te.cFree1+te.cFree2+te.cFree3+te.cFree4+te.cFree5+te.cFree6+te.cFree7+te.cFree8+te.cFree9+te.cFree10
  2303. WHERE a.Identification='{0}' AND a.TransType='12' and a.businesscode ='61'
  2304. GROUP BY te.DepCode,te.ToWarehouseCode,te.MOCode,te.MUSER,te.InvCode
  2305. ,te.WorkPoint,te.TransCode,te.TransSequence,a.EATTRIBUTE3,a.FromWarehouseCode,c.MODetailID,a.TransCode,a.TransSequence,a.InvCode,c.PickID,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  2306. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, ''),a.TransSequence,te.ProjectCode,te.BatchCode,te.Version,te.Brand,te.cFree1,te.cFree2,te.cFree3,te.cFree4,te.cFree5,te.cFree6,te.cFree7,te.cFree8,te.cFree9,te.cFree10
  2307. DROP TABLE #TempERP";
  2308. }
  2309. else
  2310. {
  2311. sql = @"select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,LogID,TransSequence,TransCode,FromWarehouseCode
  2312. INTO #NewDouTempERP
  2313. from ICSWareHouseLotInfoLog
  2314. WHERE Identification='{0}' AND ERPUpload='0' AND BusinessCode='{1}'
  2315. SELECT ISNULL(c.DepCode,'')+a.ToWarehouseCode+c.MOCode+a.MUSER AS Costre,
  2316. ISNULL(c.MODetailID,'')+ISNULL(a.TransCode,'')+ISNULL(a.TransSequence,'')+ISNULL(c.DepCode,'')+ISNULL(a.ToWarehouseCode,'')+ISNULL(c.MOCode,'')+ISNULL(a.MUSER,'')+ISNULL(a.InvCode,'')
  2317. +ISNULL(a.WorkPoint,'')+CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END+CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END+ CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END
  2318. + CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END
  2319. + CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END
  2320. + CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END
  2321. + CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END
  2322. + CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END
  2323. + CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END
  2324. + CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END
  2325. + CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END
  2326. + CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END
  2327. + CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END
  2328. --+ CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END+ISNULL(lot.eattribute10,'') AS Costre2,ISNULL(c.EATTRIBUTE30,'') AS EATTRIBUTE30,
  2329. + CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END AS Costre2,ISNULL(c.EATTRIBUTE30,'') AS EATTRIBUTE30,
  2330. c.DepCode,a.ToWarehouseCode AS WarehouseCode,c.MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY c.DepCode,a.ToWarehouseCode,c.MOCode,c.MODetailID,a.InvCode) AS Sequence,conWhCode.Enable AS ErpWhCode,
  2331. a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(lot.Amount/lot.Quantity)) ELSE '0' END AS Amount,c.MODetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,conStocknew.Enable AS IsFillClose
  2332. ,a.WorkPoint,CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END AS ProjectCode,
  2333. CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
  2334. CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END AS Version,
  2335. CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END AS Brand,
  2336. CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END AS cFree1,
  2337. CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END AS cFree2,
  2338. CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END AS cFree3,
  2339. CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END AS cFree4,
  2340. CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END AS cFree5,
  2341. CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END AS cFree6,
  2342. CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END AS cFree7,
  2343. CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END AS cFree8,
  2344. CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END AS cFree9,
  2345. CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END AS cFree10,
  2346. conv.Enable AS CompleteVerification,a.TransSequence,lot.eattribute10 as Reason,a.TransCode,a.ToWarehouseCode,c.MOID
  2347. INTO #TempERP
  2348. FROM #NewDouTempERP a
  2349. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2350. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2351. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2352. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2353. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2354. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2355. INNER JOIN ICSExtension docext ON docext.ID=c.ExtensionID AND docext.WorkPoint=c.WorkPoint
  2356. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  2357. INNER JOIN ICSConfiguration conv ON conv.Code='CompleteVerification002' AND a.WorkPoint=conv.WorkPoint
  2358. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock004' AND a.WorkPoint=conStock.WorkPoint
  2359. INNER JOIN ICSConfiguration conStocknew ON a.WorkPoint=conStocknew.WorkPoint AND conStocknew.Code='FillClose001'
  2360. LEFT JOIN ICSConfiguration conWhCode ON conWhCode.Code='ERPWHCode' AND a.WorkPoint=conWhCode.WorkPoint
  2361. GROUP BY c.EATTRIBUTE30,a.TransCode,conWhCode.Enable,inv.AmountEnable,c.DepCode,a.ToWarehouseCode,c.MOCode,a.MUSER,a.InvCode,c.MOID,c.MODetailID,con.Enable,conv.Enable,conStock.Enable,conStocknew.Enable
  2362. ,a.WorkPoint,CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END,
  2363. CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,
  2364. CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END,
  2365. CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END,
  2366. CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END,
  2367. CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END,
  2368. CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END,
  2369. CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END,
  2370. CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END,
  2371. CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END,
  2372. CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END,
  2373. CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END,
  2374. CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END,
  2375. CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END,a.TransSequence,lot.eattribute10
  2376. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,EATTRIBUTE30,MOCode,MOID,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,CompleteVerification,UpdateStock,IsFillClose FROM #TempERP
  2377. SELECT Costre,Costre2,Sequence,InvCode,Quantity,Amount,MODetailID,CASE WHEN isnull(ErpWhCode,0)='1' then WarehouseCode ELSE '' END AS WHCode,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,Reason--,ProductDate AS EffectiveDate,EATTRIBUTE3 AS BatchEffectiveDays
  2378. FROM #TempERP
  2379. SELECT a.EATTRIBUTE3,a.FromWarehouseCode AS WHCode,c.MODetailID+te.TransCode+te.TransSequence+te.DepCode+te.ToWarehouseCode+te.MOCode+te.MUSER+te.InvCode
  2380. +te.WorkPoint+te.ProjectCode+te.BatchCode+te.Version+te.Brand+te.cFree1+te.cFree2+te.cFree3+te.cFree4+te.cFree5+te.cFree6+te.cFree7+te.cFree8+te.cFree9+te.cFree10 AS Costre2,a.TransCode,a.TransSequence AS Sequence,a.InvCode,SUM(a.Quantity) as Quantity,SUM((a.Quantity)*(c.Amount/c.Quantity)) AS Amount,c.PickID,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  2381. FROM ICSWareHouseLotInfoLog a
  2382. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2383. INNER JOIN ICSMO b ON b.MOCode=a.TransCode AND b.WorkPoint=a.WorkPoint
  2384. INNER JOIN ICSMOPick c ON c.MODetailID=b.MODetailID AND c.WorkPoint=b.WorkPoint AND a.TransSequence=b.Sequence+'~'+c.Sequence
  2385. INNER JOIN ICSExtension ext ON ext.ID=lot.ExtensionID AND ext.WorkPoint=lot.WorkPoint
  2386. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2387. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2388. INNER JOIN #TempERP te ON te.TransSequence=SUBSTRING(a.TransSequence,1,case when CHARINDEX('~',a.TransSequence)-1 < 1 then len(a.TransSequence) else CHARINDEX('~',a.TransSequence)-1 end) and
  2389. te.TransCode=a.TransCode
  2390. and c.MODetailID+a.EATTRIBUTE3=c.MODetailID+te.ProjectCode+te.BatchCode+te.Version+te.Brand+te.cFree1+te.cFree2+te.cFree3+te.cFree4+te.cFree5+te.cFree6+te.cFree7+te.cFree8+te.cFree9+te.cFree10
  2391. WHERE a.Identification='{0}' AND a.TransType='12' and a.businesscode ='{1}'
  2392. GROUP BY te.DepCode,te.ToWarehouseCode,te.MOCode,te.MUSER,te.InvCode
  2393. ,te.WorkPoint,te.TransCode,te.TransSequence,a.EATTRIBUTE3,a.FromWarehouseCode,c.MODetailID,a.TransCode,a.TransSequence,a.InvCode,c.PickID,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  2394. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, ''),a.TransSequence,te.ProjectCode,te.BatchCode,te.Version,te.Brand,te.cFree1,te.cFree2,te.cFree3,te.cFree4,te.cFree5,te.cFree6,te.cFree7,te.cFree8,te.cFree9,te.cFree10
  2395. DROP TABLE #TempERP
  2396. DROP TABLE #NewDouTempERP";
  2397. }
  2398. }
  2399. sql = string.Format(sql, Identification, BusinessCode, PalletCode);
  2400. DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  2401. log.Debug("ERP成品入库单查询:" + sql);
  2402. string Inputstr = DataToJsonHelper.DataSetToJson(ds, "details", "Costre","detailss", "Costre2");
  2403. string resultStr = "";
  2404. if (DBHelper.IsU9())
  2405. { resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.U9MOStockINByProductDocURL, Inputstr); }
  2406. else { resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.ManufactureReceiveDocURL, Inputstr); }
  2407. log.Debug("ERP成品入库单返回:"+ resultStr);
  2408. Result result = new Result();
  2409. result = JsonConvert.DeserializeObject<Result>(resultStr);
  2410. if (result.Success)
  2411. {
  2412. try
  2413. {
  2414. if (flag != null && flag.Rows.Count > 0)//委外入库倒冲开关(u9)
  2415. {
  2416. string newsql = @"select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,TransSequence,TransCode
  2417. from ICSWareHouseLotInfoLog
  2418. WHERE Identification='{0}' AND ERPUpload='0' AND BusinessCode='{1}'";
  2419. newsql = string.Format(newsql, Identification, BusinessCode);
  2420. DataTable dt = DBHelper.SQlReturnData(newsql, cmd);
  2421. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  2422. foreach (var item in res)
  2423. {
  2424. JObject jo = (JObject)item;
  2425. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  2426. foreach (var detail in resdetail)
  2427. {
  2428. JObject det = (JObject)detail;
  2429. string allcol = jo["WHCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  2430. + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  2431. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["MODetailID"].ToString(), Identification, jo["ID"].ToString(),
  2432. det["DetailID"].ToString(), jo["MRCVCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  2433. if (det["detailss"] != null)
  2434. {
  2435. JArray resdetails = (JArray)JsonConvert.DeserializeObject(det["detailss"].ToString());
  2436. foreach (var details in resdetails)
  2437. {
  2438. JObject dets = (JObject)details;
  2439. if (dets != null)
  2440. {
  2441. //for (int i = 0; i < dt.Rows.Count; i++)
  2442. //{
  2443. //派纳倒冲排除仓库逻辑
  2444. string whsql = @"SELECT b.F_ItemCode,b.F_ItemName FROM Sys_SRM_Items a
  2445. INNER JOIN Sys_SRM_ItemsDetail b on a.F_Id=b.F_ItemId
  2446. where a.F_EnCode='OutWHCode' AND b.F_EnabledMark='1' and b.F_ItemCode='{0}'";
  2447. whsql = string.Format(whsql, dets["WHCode"].ToString());
  2448. DataTable dtt = DBHelper.SQlReturnData(whsql, cmd);
  2449. if (dtt.Rows.Count > 0 && dtt != null)
  2450. {
  2451. //if (!dtt.Rows[0]["F_ItemCode"].ToString().Equals(dets["WHCode"].ToString()))
  2452. //{
  2453. // ICSWareHouseLotInfoService.WareHouseLotInfoBackOut(Identification, dets["SourceCode"].ToString(), dets["SourceSequence"].ToString(), dets["INVCode"].ToString(),
  2454. // dets["WHCode"].ToString(), dets["Quantity"].ToString(), dt.Rows[0]["MUSER"].ToString(), dt.Rows[0]["WorkPoint"].ToString(), "13", BusinessCode, dets["ID"].ToString(),
  2455. // dets["DetailID"].ToString(), dets["TransCode"].ToString(), dets["TransSequence"].ToString(), "", "",
  2456. // "", "", "", "", "",
  2457. // "", "", "", "", "", "",
  2458. // "", cmd, language);
  2459. //}
  2460. //回写已领数量
  2461. sql = @"UPDATE ICSMOPick SET IssueQuantity=(ISNULL(IssueQuantity,0)+" + dets["Quantity"].ToString() + ") WHERE PickID='{0}' AND WorkPoint='{1}'";
  2462. sql = String.Format(sql, dets["PickID"].ToString(), dt.Rows[0]["WorkPoint"].ToString());
  2463. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2464. {
  2465. throw new Exception(language.GetNameByCode("WMSAPIInfo199"));
  2466. }
  2467. }
  2468. else
  2469. {
  2470. ICSWareHouseLotInfoService.WareHouseLotInfoBackOut(Identification, dets["SourceCode"].ToString(), dets["SourceSequence"].ToString(), dets["INVCode"].ToString(),
  2471. dets["WHCode"].ToString(), dets["Quantity"].ToString(), dt.Rows[0]["MUSER"].ToString(), dt.Rows[0]["WorkPoint"].ToString(), "13", BusinessCode, dets["ID"].ToString(),
  2472. dets["DetailID"].ToString(), dets["TransCode"].ToString(), dets["TransSequence"].ToString(), "", "",
  2473. "", "", "", "", "",
  2474. "", "", "", "", "", "",
  2475. "", cmd, language);
  2476. //回写已领数量
  2477. sql = @"UPDATE ICSMOPick SET IssueQuantity=(ISNULL(IssueQuantity,0)+" + dets["Quantity"].ToString() + ") WHERE PickID='{0}' AND WorkPoint='{1}'";
  2478. sql = String.Format(sql, dets["PickID"].ToString(), dt.Rows[0]["WorkPoint"].ToString());
  2479. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2480. {
  2481. throw new Exception(language.GetNameByCode("WMSAPIInfo199"));
  2482. }
  2483. }
  2484. }
  2485. }
  2486. }
  2487. }
  2488. }
  2489. }
  2490. else
  2491. {
  2492. if (result.Data != null)
  2493. {
  2494. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  2495. foreach (var item in res)
  2496. {
  2497. JObject jo = (JObject)item;
  2498. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  2499. foreach (var detail in resdetail)
  2500. {
  2501. JObject det = (JObject)detail;
  2502. log.Debug("111");
  2503. string allcol = jo["cWhCode"]==null? jo["WHCode"].ToString(): jo["cWhCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  2504. + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  2505. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["MODetailID"].ToString(), Identification, jo["ID"].ToString(),
  2506. det["DetailID"].ToString(), jo["MRCVCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  2507. log.Debug("222");
  2508. if (det["detailss"] != null)
  2509. {
  2510. log.Debug("333");
  2511. JArray resdetails = (JArray)JsonConvert.DeserializeObject(det["detailss"].ToString());
  2512. foreach (var details in resdetails)
  2513. {
  2514. JObject dets = (JObject)details;
  2515. if (dets != null)
  2516. {
  2517. //直接回写
  2518. string ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2519. FROM ICSWareHouseLotInfoLog a
  2520. LEFT JOIN ICSMO b ON a.TransCode=b.MOCode AND a.WorkPoint=b.WorkPoint
  2521. LEFT JOIN ICSMOPick c ON b.MODetailID=c.MODetailID AND b.WorkPoint=c.WorkPoint AND a.TransSequence=b.Sequence+'~'+c.Sequence
  2522. WHERE c.PickID='{0}' and a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='61'";
  2523. ERPupdate = string.Format(ERPupdate, dets["SourceDetailID"].ToString(), Identification, dets["IDs"].ToString(), dets["DetailID"].ToString(), dets["MRCVCode"].ToString()
  2524. , dets["Sequence"].ToString(), BusinessCode);
  2525. if (!DBHelper.ExecuteNonQuery(ERPupdate, cmd))
  2526. {
  2527. log.Error("倒冲回写sql:" + ERPupdate);
  2528. //throw new Exception(language.GetNameByCode("WMSAPIInfo079"));//"成品倒冲回写失败!";
  2529. }
  2530. }
  2531. }
  2532. }
  2533. }
  2534. }
  2535. }
  2536. }
  2537. }
  2538. catch (Exception ex)
  2539. {
  2540. log.Debug(ex.ToString());
  2541. log.Debug(resultStr);
  2542. throw new Exception(language.GetNameByCode("WMSAPIInfo200") + ex);
  2543. }
  2544. }
  2545. else
  2546. {
  2547. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  2548. }
  2549. #endregion
  2550. }
  2551. catch (Exception)
  2552. {
  2553. throw;
  2554. }
  2555. }
  2556. /// <summary>
  2557. /// 生产入库接口
  2558. /// </summary>
  2559. /// <param name="TransType"></param>
  2560. /// <param name="Identification"></param>
  2561. /// <param name="cmd"></param>
  2562. public static void JHManufactureReceiveDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode,string PalletCode)
  2563. {
  2564. string resultStr = "";
  2565. string Inputstr2 = "";
  2566. Result result = new Result();
  2567. try
  2568. {
  2569. #region ERP
  2570. string sql = "";
  2571. string outwhcode = "";
  2572. DataTable flag = null;
  2573. string enablesql = @"select * from ICSConfiguration where code = 'MostackInBack001' and enable = '1'";
  2574. flag = DBHelper.SQlReturnData(enablesql, cmd);
  2575. if (DBHelper.IsU9()) { sql = @"SELECT ISNULL(c.DepCode,'')+a.ToWarehouseCode+c.MOCode+a.MUSER AS Costre,
  2576. c.MODetailID+CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END+CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END+ CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END
  2577. + CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END
  2578. + CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END
  2579. + CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END
  2580. + CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END
  2581. + CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END
  2582. + CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END
  2583. + CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END
  2584. + CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END
  2585. + CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END
  2586. + CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END
  2587. + CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END AS Costre2,lot.EATTRIBUTE2,
  2588. c.DepCode,a.ToWarehouseCode AS WarehouseCode,c.MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY c.DepCode,a.ToWarehouseCode,c.MOCode,c.MODetailID,a.InvCode) AS Sequence,
  2589. a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(lot.Amount/lot.Quantity)) ELSE '0' END AS Amount,c.MODetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,conStocknew.Enable AS IsFillClose
  2590. ,a.WorkPoint,CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END AS ProjectCode,
  2591. CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
  2592. CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END AS Version,
  2593. CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END AS Brand,
  2594. CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END AS cFree1,
  2595. CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END AS cFree2,
  2596. CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END AS cFree3,
  2597. CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END AS cFree4,
  2598. CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END AS cFree5,
  2599. CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END AS cFree6,
  2600. CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END AS cFree7,
  2601. CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END AS cFree8,
  2602. CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END AS cFree9,
  2603. CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END AS cFree10,
  2604. conv.Enable AS CompleteVerification,a.TransSequence
  2605. INTO #TempERP
  2606. FROM ICSWareHouseLotInfoLog a
  2607. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2608. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2609. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2610. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2611. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2612. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2613. INNER JOIN ICSExtension docext ON docext.ID=c.ExtensionID AND docext.WorkPoint=c.WorkPoint
  2614. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  2615. INNER JOIN ICSConfiguration conv ON conv.Code='CompleteVerification002' AND a.WorkPoint=conv.WorkPoint
  2616. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock004' AND a.WorkPoint=conStock.WorkPoint
  2617. INNER JOIN ICSConfiguration conStocknew ON a.WorkPoint=conStocknew.WorkPoint AND conStocknew.Code='FillClose001'
  2618. WHERE a.Identification='{0}' AND ERPUpload='0' AND BusinessCode='{1}'
  2619. GROUP BY inv.AmountEnable,c.DepCode,a.ToWarehouseCode,c.MOCode,a.MUSER,a.InvCode,c.MODetailID,con.Enable,conv.Enable,conStock.Enable,conStocknew.Enable
  2620. ,a.WorkPoint,CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END,lot.EATTRIBUTE2,
  2621. CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,
  2622. CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END,
  2623. CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END,
  2624. CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END,
  2625. CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END,
  2626. CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END,
  2627. CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END,
  2628. CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END,
  2629. CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END,
  2630. CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END,
  2631. CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END,
  2632. CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END,
  2633. CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END,a.TransSequence
  2634. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,MOCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,CompleteVerification,UpdateStock,IsFillClose FROM #TempERP
  2635. SELECT Costre,Costre2,TransSequence,Sequence,InvCode,Quantity,Amount,MODetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,EATTRIBUTE2 as OutType
  2636. FROM #TempERP
  2637. SELECT a.FromWarehouseCode AS WHCode,c.MODetailID+te.ProjectCode+te.BatchCode+te.Version+te.Brand+te.cFree1+te.cFree2+te.cFree3+te.cFree4+te.cFree5+te.cFree6+te.cFree7+te.cFree8+te.cFree9+te.cFree10 AS Costre2,a.TransCode,a.TransSequence AS Sequence,a.InvCode,SUM(c.Quantity/b.Quantity*a.Quantity) as Quantity,SUM((c.Quantity/b.Quantity*a.Quantity)*(c.Amount/c.Quantity)) AS Amount,c.PickID,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  2638. FROM ICSWareHouseLotInfoLog a
  2639. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2640. INNER JOIN ICSMO b ON b.MOCode=a.TransCode AND b.WorkPoint=a.WorkPoint
  2641. INNER JOIN ICSMOPick c ON c.MODetailID=b.MODetailID AND c.WorkPoint=b.WorkPoint AND a.TransSequence=b.Sequence+'~'+c.Sequence
  2642. INNER JOIN ICSExtension ext ON ext.ID=c.ExtensionID AND ext.WorkPoint=c.WorkPoint
  2643. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2644. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2645. INNER JOIN #TempERP te ON te.TransSequence=SUBSTRING(a.TransSequence,1,CHARINDEX('~',a.TransSequence)-1)
  2646. WHERE a.Identification='{0}' AND a.TransType='12'
  2647. GROUP BY a.FromWarehouseCode,c.MODetailID,a.TransCode,a.TransSequence,a.InvCode,c.PickID,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  2648. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, ''),a.TransSequence,te.ProjectCode,te.BatchCode,te.Version,te.Brand,te.cFree1,te.cFree2,te.cFree3,te.cFree4,te.cFree5,te.cFree6,te.cFree7,te.cFree8,te.cFree9,te.cFree10
  2649. DROP TABLE #TempERP"; }
  2650. else { sql = @"SELECT ISNULL(c.DepCode,'')+a.ToWarehouseCode+c.MOCode+a.MUSER AS Costre,
  2651. ISNULL(c.MODetailID,'')+ISNULL(a.TransCode,'')+ISNULL(a.TransSequence,'')+ISNULL(c.DepCode,'')+ISNULL(a.ToWarehouseCode,'')+ISNULL(c.MOCode,'')+ISNULL(a.MUSER,'')+ISNULL(a.InvCode,'')
  2652. +ISNULL(a.WorkPoint,'')+CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END+CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END+ CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END
  2653. + CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END
  2654. + CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END
  2655. + CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END
  2656. + CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END
  2657. + CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END
  2658. + CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END
  2659. + CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END
  2660. + CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END
  2661. + CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END
  2662. + CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END
  2663. --+ CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END+ISNULL(lot.eattribute10,'') AS Costre2,ISNULL(c.EATTRIBUTE30,'') AS EATTRIBUTE30,
  2664. + CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END AS Costre2,ISNULL(c.EATTRIBUTE30,'') AS EATTRIBUTE30,lot.EATTRIBUTE1,lot.EATTRIBUTE2,lot.EATTRIBUTE3,lot.EATTRIBUTE4,lot.EATTRIBUTE5,a.Identification,
  2665. c.DepCode,a.ToWarehouseCode AS WarehouseCode,c.MOCode,a.MUSER,ROW_NUMBER() OVER (ORDER BY c.DepCode,a.ToWarehouseCode,c.MOCode,c.MODetailID,a.InvCode) AS Sequence,conWhCode.Enable AS ErpWhCode,
  2666. a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(lot.Amount/lot.Quantity)) ELSE '0' END AS Amount,c.MODetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,conStocknew.Enable AS IsFillClose
  2667. ,a.WorkPoint,CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END AS ProjectCode,
  2668. CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
  2669. CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END AS Version,
  2670. CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END AS Brand,
  2671. CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END AS cFree1,
  2672. CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END AS cFree2,
  2673. CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END AS cFree3,
  2674. CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END AS cFree4,
  2675. CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END AS cFree5,
  2676. CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END AS cFree6,
  2677. CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END AS cFree7,
  2678. CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END AS cFree8,
  2679. CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END AS cFree9,
  2680. CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END AS cFree10,
  2681. conv.Enable AS CompleteVerification,a.TransSequence,lot.eattribute10 as Reason,a.TransCode,a.ToWarehouseCode,c.MOID
  2682. INTO #TempERP
  2683. FROM ICSWareHouseLotInfoLog a
  2684. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2685. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  2686. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2687. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2688. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2689. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  2690. INNER JOIN ICSExtension docext ON docext.ID=c.ExtensionID AND docext.WorkPoint=c.WorkPoint
  2691. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  2692. INNER JOIN ICSConfiguration conv ON conv.Code='CompleteVerification002' AND a.WorkPoint=conv.WorkPoint
  2693. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock004' AND a.WorkPoint=conStock.WorkPoint
  2694. INNER JOIN ICSConfiguration conStocknew ON a.WorkPoint=conStocknew.WorkPoint AND conStocknew.Code='FillClose001'
  2695. LEFT JOIN ICSConfiguration conWhCode ON conWhCode.Code='ERPWHCode' AND a.WorkPoint=conWhCode.WorkPoint
  2696. WHERE a.Identification='{0}' AND ERPUpload='0' AND BusinessCode='{1}'
  2697. GROUP BY a.Identification,lot.EATTRIBUTE1,lot.EATTRIBUTE2,lot.EATTRIBUTE3,lot.EATTRIBUTE4,lot.EATTRIBUTE5,c.EATTRIBUTE30,a.TransCode,conWhCode.Enable,inv.AmountEnable,c.DepCode,a.ToWarehouseCode,c.MOCode,a.MUSER,a.InvCode,c.MOID,c.MODetailID,con.Enable,conv.Enable,conStock.Enable,conStocknew.Enable
  2698. ,a.WorkPoint,CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END,
  2699. CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,
  2700. CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END,
  2701. CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END,
  2702. CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END,
  2703. CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END,
  2704. CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END,
  2705. CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END,
  2706. CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END,
  2707. CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END,
  2708. CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END,
  2709. CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END,
  2710. CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END,
  2711. CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END,a.TransSequence,lot.eattribute10
  2712. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,'' as EATTRIBUTE30,Identification,MOID,MOCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,CompleteVerification,UpdateStock,IsFillClose FROM #TempERP
  2713. SELECT Costre,Costre2,Sequence,InvCode,Quantity,Amount,MODetailID,CASE WHEN isnull(ErpWhCode,0)='1' then WarehouseCode ELSE '' END AS WHCode,'{2}' AS PalletCode,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,Reason,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5
  2714. FROM #TempERP
  2715. SELECT a.EATTRIBUTE3,a.FromWarehouseCode AS WHCode,c.MODetailID+te.TransCode+te.TransSequence+te.DepCode+te.ToWarehouseCode+te.MOCode+te.MUSER+te.InvCode
  2716. +te.WorkPoint+te.ProjectCode+te.BatchCode+te.Version+te.Brand+te.cFree1+te.cFree2+te.cFree3+te.cFree4+te.cFree5+te.cFree6+te.cFree7+te.cFree8+te.cFree9+te.cFree10 AS Costre2,a.TransCode,a.TransSequence AS Sequence,a.InvCode,SUM(a.Quantity) as Quantity,SUM((a.Quantity)*(c.Amount/c.Quantity)) AS Amount,c.PickID,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  2717. FROM ICSWareHouseLotInfoLog a
  2718. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  2719. INNER JOIN ICSMO b ON b.MOCode=a.TransCode AND b.WorkPoint=a.WorkPoint
  2720. INNER JOIN ICSMOPick c ON c.MODetailID=b.MODetailID AND c.WorkPoint=b.WorkPoint AND a.TransSequence=b.Sequence+'~'+c.Sequence
  2721. INNER JOIN ICSExtension ext ON ext.ID=lot.ExtensionID AND ext.WorkPoint=lot.WorkPoint
  2722. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  2723. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  2724. INNER JOIN #TempERP te ON te.TransSequence=SUBSTRING(a.TransSequence,1,case when CHARINDEX('~',a.TransSequence)-1 < 1 then len(a.TransSequence) else CHARINDEX('~',a.TransSequence)-1 end) and
  2725. te.TransCode=a.TransCode
  2726. and c.MODetailID+a.EATTRIBUTE3=c.MODetailID+te.ProjectCode+te.BatchCode+te.Version+te.Brand+te.cFree1+te.cFree2+te.cFree3+te.cFree4+te.cFree5+te.cFree6+te.cFree7+te.cFree8+te.cFree9+te.cFree10
  2727. WHERE a.Identification='{0}' AND a.TransType='12' and a.businesscode ='61'
  2728. GROUP BY te.DepCode,te.ToWarehouseCode,te.MOCode,te.MUSER,te.InvCode
  2729. ,te.WorkPoint,te.TransCode,te.TransSequence,a.EATTRIBUTE3,a.FromWarehouseCode,c.MODetailID,a.TransCode,a.TransSequence,a.InvCode,c.PickID,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  2730. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, ''),a.TransSequence,te.ProjectCode,te.BatchCode,te.Version,te.Brand,te.cFree1,te.cFree2,te.cFree3,te.cFree4,te.cFree5,te.cFree6,te.cFree7,te.cFree8,te.cFree9,te.cFree10
  2731. DROP TABLE #TempERP"; }
  2732. sql = string.Format(sql, Identification, BusinessCode, PalletCode);
  2733. DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  2734. log.Debug("ERP成品入库单查询:" + sql);
  2735. string Inputstr = DataToJsonHelper.DataSetToJson(ds, "details", "Costre", "detailss", "Costre2");
  2736. Inputstr2 = Inputstr;
  2737. if (DBHelper.IsU9())
  2738. { resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.U9MOStockINByProductDocURL, Inputstr); }
  2739. else { resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.ManufactureReceiveDocURL, Inputstr); }
  2740. log.Debug("ERP成品入库单返回:" + resultStr);
  2741. result = JsonConvert.DeserializeObject<Result>(resultStr);
  2742. if (result.Success)
  2743. {
  2744. try
  2745. {
  2746. if (flag != null && flag.Rows.Count > 0)//委外入库倒冲开关(u9)
  2747. {
  2748. string newsql = @"select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,TransSequence,TransCode
  2749. from ICSWareHouseLotInfoLog
  2750. WHERE Identification='{0}' AND ERPUpload='0' AND BusinessCode='{1}'";
  2751. newsql = string.Format(newsql, Identification, BusinessCode);
  2752. DataTable dt = DBHelper.SQlReturnData(newsql, cmd);
  2753. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  2754. foreach (var item in res)
  2755. {
  2756. JObject jo = (JObject)item;
  2757. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  2758. foreach (var detail in resdetail)
  2759. {
  2760. JObject det = (JObject)detail;
  2761. string allcol = jo["WHCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  2762. + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  2763. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["MODetailID"].ToString(), Identification, jo["ID"].ToString(),
  2764. det["DetailID"].ToString(), jo["MRCVCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  2765. if (det["detailss"] != null)
  2766. {
  2767. JArray resdetails = (JArray)JsonConvert.DeserializeObject(det["detailss"].ToString());
  2768. foreach (var details in resdetails)
  2769. {
  2770. JObject dets = (JObject)details;
  2771. if (dets != null)
  2772. {
  2773. //for (int i = 0; i < dt.Rows.Count; i++)
  2774. //{
  2775. //派纳倒冲排除仓库逻辑
  2776. string whsql = @"SELECT b.F_ItemCode,b.F_ItemName FROM Sys_SRM_Items a
  2777. INNER JOIN Sys_SRM_ItemsDetail b on a.F_Id=b.F_ItemId
  2778. where a.F_EnCode='OutWHCode' AND b.F_EnabledMark='1' and b.F_ItemCode='{0}'";
  2779. whsql = string.Format(whsql, dets["WHCode"].ToString());
  2780. DataTable dtt = DBHelper.SQlReturnData(whsql, cmd);
  2781. if (dtt.Rows.Count > 0 && dtt != null)
  2782. {
  2783. //if (!dtt.Rows[0]["F_ItemCode"].ToString().Equals(dets["WHCode"].ToString()))
  2784. //{
  2785. // ICSWareHouseLotInfoService.WareHouseLotInfoBackOut(Identification, dets["SourceCode"].ToString(), dets["SourceSequence"].ToString(), dets["INVCode"].ToString(),
  2786. // dets["WHCode"].ToString(), dets["Quantity"].ToString(), dt.Rows[0]["MUSER"].ToString(), dt.Rows[0]["WorkPoint"].ToString(), "13", BusinessCode, dets["ID"].ToString(),
  2787. // dets["DetailID"].ToString(), dets["TransCode"].ToString(), dets["TransSequence"].ToString(), "", "",
  2788. // "", "", "", "", "",
  2789. // "", "", "", "", "", "",
  2790. // "", cmd, language);
  2791. //}
  2792. //回写已领数量
  2793. sql = @"UPDATE ICSMOPick SET IssueQuantity=(ISNULL(IssueQuantity,0)+" + dets["Quantity"].ToString() + ") WHERE PickID='{0}' AND WorkPoint='{1}'";
  2794. sql = String.Format(sql, dets["PickID"].ToString(), dt.Rows[0]["WorkPoint"].ToString());
  2795. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2796. {
  2797. throw new Exception(language.GetNameByCode("WMSAPIInfo199"));
  2798. }
  2799. }
  2800. else
  2801. {
  2802. ICSWareHouseLotInfoService.WareHouseLotInfoBackOut(Identification, dets["SourceCode"].ToString(), dets["SourceSequence"].ToString(), dets["INVCode"].ToString(),
  2803. dets["WHCode"].ToString(), dets["Quantity"].ToString(), dt.Rows[0]["MUSER"].ToString(), dt.Rows[0]["WorkPoint"].ToString(), "13", BusinessCode, dets["ID"].ToString(),
  2804. dets["DetailID"].ToString(), dets["TransCode"].ToString(), dets["TransSequence"].ToString(), "", "",
  2805. "", "", "", "", "",
  2806. "", "", "", "", "", "",
  2807. "", cmd, language);
  2808. //回写已领数量
  2809. sql = @"UPDATE ICSMOPick SET IssueQuantity=(ISNULL(IssueQuantity,0)+" + dets["Quantity"].ToString() + ") WHERE PickID='{0}' AND WorkPoint='{1}'";
  2810. sql = String.Format(sql, dets["PickID"].ToString(), dt.Rows[0]["WorkPoint"].ToString());
  2811. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2812. {
  2813. throw new Exception(language.GetNameByCode("WMSAPIInfo199"));
  2814. }
  2815. }
  2816. }
  2817. }
  2818. }
  2819. }
  2820. }
  2821. }
  2822. else
  2823. {
  2824. if (result.Data != null)
  2825. {
  2826. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  2827. foreach (var item in res)
  2828. {
  2829. JObject jo = (JObject)item;
  2830. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  2831. foreach (var detail in resdetail)
  2832. {
  2833. JObject det = (JObject)detail;
  2834. log.Debug("111");
  2835. string allcol = jo["cWhCode"] == null ? jo["WHCode"].ToString() : jo["cWhCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  2836. + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  2837. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["MODetailID"].ToString(), Identification, jo["ID"].ToString(),
  2838. det["DetailID"].ToString(), jo["MRCVCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  2839. log.Debug("222");
  2840. if (det["detailss"] != null)
  2841. {
  2842. log.Debug("333");
  2843. JArray resdetails = (JArray)JsonConvert.DeserializeObject(det["detailss"].ToString());
  2844. foreach (var details in resdetails)
  2845. {
  2846. JObject dets = (JObject)details;
  2847. if (dets != null)
  2848. {
  2849. //直接回写
  2850. string ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  2851. FROM ICSWareHouseLotInfoLog a
  2852. LEFT JOIN ICSMO b ON a.TransCode=b.MOCode AND a.WorkPoint=b.WorkPoint
  2853. LEFT JOIN ICSMOPick c ON b.MODetailID=c.MODetailID AND b.WorkPoint=c.WorkPoint AND a.TransSequence=b.Sequence+'~'+c.Sequence
  2854. WHERE c.PickID='{0}' and a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='61'";
  2855. ERPupdate = string.Format(ERPupdate, dets["SourceDetailID"].ToString(), Identification, dets["IDs"].ToString(), dets["DetailID"].ToString(), dets["MRCVCode"].ToString()
  2856. , dets["Sequence"].ToString(), BusinessCode);
  2857. if (!DBHelper.ExecuteNonQuery(ERPupdate, cmd))
  2858. {
  2859. log.Error("倒冲回写sql:" + ERPupdate);
  2860. //throw new Exception(language.GetNameByCode("WMSAPIInfo079"));//"成品倒冲回写失败!";
  2861. }
  2862. }
  2863. }
  2864. }
  2865. }
  2866. }
  2867. }
  2868. }
  2869. }
  2870. catch (Exception ex)
  2871. {
  2872. log.Debug(ex.ToString());
  2873. log.Debug(resultStr);
  2874. throw new Exception(language.GetNameByCode("WMSAPIInfo200") + ex);
  2875. }
  2876. }
  2877. else
  2878. {
  2879. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  2880. }
  2881. #endregion
  2882. }
  2883. catch (Exception)
  2884. {
  2885. //DataTable WHtable = ICSControlModeService.GetJHWHCode();
  2886. //if (WHtable == null)
  2887. //{
  2888. throw;
  2889. //}
  2890. //else
  2891. //{
  2892. //ICSControlModeService.InsertErrLog(ERPUrl.ManufactureReceiveDocURL, Inputstr2, result.Message, JArray.Parse(Inputstr2)[0]["User"]?.ToString(), JArray.Parse(Inputstr2)[0]["WorkPoint"]?.ToString(), cmd);
  2893. //}
  2894. }
  2895. }
  2896. #endregion
  2897. #region 副产品入库
  2898. /// <summary>
  2899. /// 副产品入库
  2900. /// </summary>
  2901. /// <param name="TransCode"></param>
  2902. /// <param name="TransSequence"></param>
  2903. /// <param name="Quantity"></param>
  2904. /// <param name="WorkPoint"></param>
  2905. /// <param name="cmd"></param>
  2906. public static void MOStockINByProductDoc(string LotNo, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  2907. {
  2908. try
  2909. {
  2910. string sql = @"DECLARE @Status VARCHAR(10)
  2911. SELECT @Status=c.ERPStatus FROM ICSInventoryLot a
  2912. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2913. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.WorkPoint=c.WorkPoint
  2914. INNER JOIN ICSMOPick d ON c.MODetailID=d.MODetailID AND b.TransSequence=c.Sequence+'~'+d.Sequence AND b.WorkPoint=d.WorkPoint
  2915. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and d.EATTRIBUTE2='2'
  2916. IF (@Status IS NULL)
  2917. BEGIN
  2918. RAISERROR('" + language.GetNameByCode("WMSAPIInfo081") + @"',16,1);
  2919. RETURN
  2920. END
  2921. ELSE IF (@Status='3')
  2922. BEGIN
  2923. RAISERROR('" + language.GetNameByCode("WMSAPIInfo082") + @"',16,1);
  2924. RETURN
  2925. END
  2926. UPDATE d SET IssueQuantity=ISNULL(IssueQuantity,0)+'{2}'
  2927. FROM ICSInventoryLot a
  2928. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2929. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.WorkPoint=c.WorkPoint
  2930. INNER JOIN ICSMOPick d ON c.MODetailID=d.MODetailID AND b.TransSequence=c.Sequence+'~'+d.Sequence AND b.WorkPoint=d.WorkPoint
  2931. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and d.EATTRIBUTE2='2'
  2932. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  2933. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2934. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.WorkPoint=c.WorkPoint
  2935. INNER JOIN ICSMOPick d ON c.MODetailID=d.MODetailID AND b.TransSequence=c.Sequence+'~'+d.Sequence AND b.WorkPoint=d.WorkPoint
  2936. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and d.EATTRIBUTE2='2'
  2937. AND dbo.GetExcessInQty(c.InvCode, c.WorkPoint, 'OverIn014', c.Quantity,1,2,'')<c.RCVQuantity)
  2938. BEGIN
  2939. RAISERROR('" + language.GetNameByCode("WMSAPIInfo083") + @"',16,1);
  2940. END";
  2941. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  2942. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2943. {
  2944. throw new Exception(language.GetNameByCode("WMSAPIInfo136"));//"生产订单更新失败!");
  2945. }
  2946. }
  2947. catch (Exception)
  2948. {
  2949. throw;
  2950. }
  2951. }
  2952. /// <summary>
  2953. /// 委外副产品入库
  2954. /// </summary>
  2955. /// <param name="TransCode"></param>
  2956. /// <param name="TransSequence"></param>
  2957. /// <param name="Quantity"></param>
  2958. /// <param name="WorkPoint"></param>
  2959. /// <param name="cmd"></param>
  2960. public static void OOStockINByProductDoc(string LotNo, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  2961. {
  2962. try
  2963. {
  2964. string sql = @"DECLARE @Status VARCHAR(10)
  2965. SELECT @Status=c.Status FROM ICSInventoryLot a
  2966. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2967. INNER JOIN ICSOutsourcingOrder c ON b.TransCode=c.OOCode AND b.WorkPoint=c.WorkPoint
  2968. INNER JOIN ICSOOPick d ON c.OODetailID=d.OODetailID AND b.TransSequence=c.Sequence+'~'+d.Sequence AND b.WorkPoint=d.WorkPoint
  2969. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  2970. IF (@Status IS NULL)
  2971. BEGIN
  2972. RAISERROR('" + language.GetNameByCode("WMSAPIInfo081") + @"',16,1);
  2973. RETURN
  2974. END
  2975. ELSE IF (@Status='3')
  2976. BEGIN
  2977. RAISERROR('" + language.GetNameByCode("WMSAPIInfo082") + @"',16,1);
  2978. RETURN
  2979. END
  2980. UPDATE d SET IssueQuantity=ISNULL(IssueQuantity,0)+'{2}'
  2981. FROM ICSInventoryLot a
  2982. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2983. INNER JOIN ICSOutsourcingOrder c ON b.TransCode=c.OOCode AND b.WorkPoint=c.WorkPoint
  2984. INNER JOIN ICSOOPick d ON c.OODetailID=d.OODetailID AND b.TransSequence=c.Sequence+'~'+d.Sequence AND b.WorkPoint=d.WorkPoint
  2985. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  2986. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  2987. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  2988. INNER JOIN ICSOutsourcingOrder c ON b.TransCode=c.OOCode AND b.WorkPoint=c.WorkPoint
  2989. INNER JOIN ICSOOPick d ON c.OODetailID=d.OODetailID AND b.TransSequence=c.Sequence+'~'+d.Sequence AND b.WorkPoint=d.WorkPoint
  2990. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  2991. AND dbo.GetExcessInQty(c.InvCode, c.WorkPoint, 'OverIn007', c.Quantity,1,1,'')<c.InQuantity)
  2992. BEGIN
  2993. RAISERROR('" + language.GetNameByCode("WMSAPIInfo083") + @"',16,1);
  2994. END";
  2995. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  2996. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  2997. {
  2998. throw new Exception(language.GetNameByCode("WMSAPIInfo136"));//"生产订单更新失败!");
  2999. }
  3000. }
  3001. catch (Exception)
  3002. {
  3003. throw;
  3004. }
  3005. }
  3006. /// <summary>
  3007. /// 联副产品入库(奥美专用)
  3008. /// </summary>
  3009. /// <param name="LotNo"></param>
  3010. /// <param name="Quantity"></param>
  3011. /// <param name="WorkPoint"></param>
  3012. /// <param name="cmd"></param>
  3013. /// <param name="language"></param>
  3014. public static void MOStockINByProductAMDoc(string LotNo, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  3015. {
  3016. try
  3017. {
  3018. //条码表类型为19(无源头副产品条码),则不作数量卡控
  3019. string checkSql = @"SELECT Type FROM ICSInventoryLot WHERE LotNo='{0}'";
  3020. checkSql = string.Format(checkSql, LotNo);
  3021. string type = DBHelper.ExecuteScalar(checkSql, cmd).ToString();
  3022. if ("19".Equals(type))
  3023. {
  3024. return;
  3025. }
  3026. string sql = @"DECLARE @Status VARCHAR(10)
  3027. SELECT @Status=c.ERPStatus FROM ICSInventoryLot a
  3028. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3029. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.WorkPoint=c.WorkPoint
  3030. INNER JOIN ICSMOPick d ON c.MODetailID=d.MODetailID AND b.TransSequence=c.Sequence+'~'+d.Sequence AND b.WorkPoint=d.WorkPoint
  3031. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  3032. IF (@Status IS NULL)
  3033. BEGIN
  3034. RAISERROR('" + language.GetNameByCode("WMSAPIInfo081") + @"',16,1);
  3035. RETURN
  3036. END
  3037. ELSE IF (@Status='3')
  3038. BEGIN
  3039. RAISERROR('" + language.GetNameByCode("WMSAPIInfo082") + @"',16,1);
  3040. RETURN
  3041. END
  3042. UPDATE d SET IssueQuantity=ISNULL(IssueQuantity,0)+'{2}'
  3043. FROM ICSInventoryLot a
  3044. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3045. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.WorkPoint=c.WorkPoint
  3046. INNER JOIN ICSMOPick d ON c.MODetailID=d.MODetailID AND b.TransSequence=c.Sequence+'~'+d.Sequence AND b.WorkPoint=d.WorkPoint
  3047. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  3048. DECLARE @MoTypeValue VARCHAR(50)
  3049. DECLARE @QtyBeyond DECIMAL(18,4)=9999
  3050. SELECT @MoTypeValue=c.EATTRIBUTE1 FROM ICSInventoryLot a
  3051. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3052. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.WorkPoint=c.WorkPoint
  3053. INNER JOIN ICSMOPick d ON c.MODetailID=d.MODetailID AND b.TransSequence=c.Sequence+'~'+d.Sequence AND b.WorkPoint=d.WorkPoint
  3054. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  3055. IF(@MoTypeValue='0')--
  3056. BEGIN
  3057. select
  3058. -- @QtyBeyond = cast( isnull(h.BL,0)*d.Quantity AS DECIMAL(18,4))
  3059. @QtyBeyond = 9999
  3060. from ICSInventoryLot a
  3061. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3062. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.WorkPoint=c.WorkPoint AND c.MOStatus<>'3'
  3063. INNER JOIN ICSMOPick d ON c.MODetailID=d.MODetailID AND b.TransSequence=c.Sequence+'~'+d.Sequence AND b.WorkPoint=d.WorkPoint
  3064. left join
  3065. (
  3066. select MinBL as BL ,MODetailID from (
  3067. select a.MODetailID,
  3068. min(ALLBL)*max(isnull(F_Define1,0)/100.0) as MinBL
  3069. from (
  3070. select a.MODetailID ,
  3071. case when a.Quantity =0 then 0 when a.IssueQuantity=0 then 0 else a.IssueQuantity/a.Quantity end as ALLBL
  3072. from dbo.ICSMOPick a
  3073. inner join dbo.ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  3074. where a.EATTRIBUTE1<>'1' and a.IssueQuantity>0 )a
  3075. left join Sys_SRM_ItemsDetail flag on flag.F_ItemCode='GDCS0001'
  3076. group by MODetailID )a
  3077. ) h on d.MODetailID=h.MODetailID
  3078. left join ICSExtension e on d.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  3079. WHERE 1=1 AND a.LotNo='{0}' AND a.WorkPoint='{1}'
  3080. END
  3081. ELSE IF(@MoTypeValue='1')--
  3082. BEGIN
  3083. select
  3084. -- @QtyBeyond = cast( isnull(h.BL,0)*d.Quantity AS DECIMAL(18,4))
  3085. @QtyBeyond = 9999
  3086. from ICSInventoryLot a
  3087. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3088. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.WorkPoint=c.WorkPoint AND c.MOStatus<>'3'
  3089. INNER JOIN ICSMOPick d ON c.MODetailID=d.MODetailID AND b.TransSequence=c.Sequence+'~'+d.Sequence AND b.WorkPoint=d.WorkPoint
  3090. left join
  3091. (
  3092. select case when Flag>0 then ( case when PSLNUM>MLNUM then MLNUM else PSLNUM end) else PSLNUM end as BL ,MODetailID from (
  3093. select a.MODetailID,
  3094. case when isnull(sum(a.PSLYL),0)=0 then 0 else sum(a.PSLLSS)/sum(a.PSLYL)* max(isnull(F_Define1,0)/100.0) end as PSLNUM,
  3095. case when isnull(sum(a.MLYL),0)=0 then 0 else sum(a.MLLSS)/sum(a.MLYL)*max(isnull(F_Define1,0)/100.0) end as MLNUM,
  3096. sum(Flag) as Flag
  3097. from (
  3098. select a.MODetailID ,
  3099. case when SUBSTRING(b.ClassCode, 1, 2) IN ('01','04','05') then a.Quantity else 0 end PSLYL,
  3100. case when SUBSTRING(b.ClassCode, 1, 2) IN ('01','04','05') then a.IssueQuantity else 0 end PSLLSS,
  3101. case when SUBSTRING(b.ClassCode, 1, 2) IN ('03') then a.Quantity else 0 end MLYL,
  3102. case when SUBSTRING(b.ClassCode, 1, 2) IN ('03') then a.IssueQuantity else 0 end MLLSS,
  3103. case when SUBSTRING(b.ClassCode, 1, 2) IN ('03') then 1 else 0 end Flag
  3104. from dbo.ICSMOPick a
  3105. inner join dbo.ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  3106. where a.EATTRIBUTE1 <> '1')a
  3107. left join Sys_SRM_ItemsDetail flag on flag.F_ItemCode='GDCS0001'
  3108. group by MODetailID )a
  3109. ) h on d.MODetailID=h.MODetailID
  3110. left join ICSExtension e on d.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  3111. WHERE 1=1 AND a.LotNo='{0}' AND a.WorkPoint='{1}'
  3112. END
  3113. ELSE
  3114. BEGIN
  3115. RAISERROR(' {0} ',16,1);
  3116. END
  3117. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  3118. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3119. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.WorkPoint=c.WorkPoint
  3120. INNER JOIN ICSMOPick d ON c.MODetailID=d.MODetailID AND b.TransSequence=c.Sequence+'~'+d.Sequence AND b.WorkPoint=d.WorkPoint
  3121. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  3122. AND @QtyBeyond<d.IssueQuantity)
  3123. BEGIN
  3124. RAISERROR('" + language.GetNameByCode("WMSAPIInfo083") + @"',16,1);
  3125. END
  3126. ";
  3127. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  3128. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  3129. {
  3130. throw new Exception(language.GetNameByCode("WMSAPIInfo136"));//"生产订单更新失败!");
  3131. }
  3132. }
  3133. catch (Exception)
  3134. {
  3135. throw;
  3136. }
  3137. }
  3138. /// <summary>
  3139. /// 副产品入库接口
  3140. /// </summary>
  3141. /// <param name="TransType"></param>
  3142. /// <param name="Identification"></param>
  3143. /// <param name="cmd"></param>
  3144. public static void MOStockINByProductDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  3145. {
  3146. try
  3147. {
  3148. #region ERP
  3149. string sql = @"select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,TransCode,TransSequence,FromWarehouseCode
  3150. INTO #NewTempERP
  3151. from ICSWareHouseLotInfoLog
  3152. WHERE Identification='{0}' AND ERPUpload='0' AND BusinessCode='{1}'
  3153. SELECT ISNULL(c.DepCode,'')+a.ToWarehouseCode+c.MOCode+a.MUSER AS Costre,
  3154. c.DepCode,a.ToWarehouseCode AS WarehouseCode,c.MOCode,a.MUSER,mopick.Sequence,mopick.EATTRIBUTE2,
  3155. a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(lot.Amount/lot.Quantity)) ELSE '0' END AS Amount,mopick.PickID AS MODetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,conStocknew.Enable AS IsFillClose
  3156. ,a.WorkPoint,CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END AS ProjectCode,
  3157. CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
  3158. CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END AS Version,
  3159. CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END AS Brand,
  3160. CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END AS cFree1,
  3161. CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END AS cFree2,
  3162. CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END AS cFree3,
  3163. CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END AS cFree4,
  3164. CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END AS cFree5,
  3165. CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END AS cFree6,
  3166. CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END AS cFree7,
  3167. CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END AS cFree8,
  3168. CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END AS cFree9,
  3169. CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END AS cFree10,
  3170. conv.Enable AS CompleteVerification,a.TransSequence
  3171. INTO #TempERP
  3172. FROM #NewTempERP a
  3173. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  3174. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  3175. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  3176. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  3177. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3178. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.WorkPoint=c.WorkPoint
  3179. INNER JOIN ICSMOPick mopick ON mopick.MODetailID=c.MODetailID AND b.TransSequence=c.Sequence+'~'+mopick.Sequence AND mopick.WorkPoint=c.WorkPoint and mopick.EATTRIBUTE2='2'
  3180. INNER JOIN ICSExtension docext ON docext.ID=c.ExtensionID AND docext.WorkPoint=c.WorkPoint
  3181. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  3182. INNER JOIN ICSConfiguration conv ON conv.Code='CompleteVerification001' AND a.WorkPoint=conv.WorkPoint
  3183. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock004' AND a.WorkPoint=conStock.WorkPoint
  3184. INNER JOIN ICSConfiguration conStocknew ON a.WorkPoint=conStocknew.WorkPoint AND conStocknew.Code='FillClose001'
  3185. GROUP BY inv.AmountEnable,c.DepCode,a.ToWarehouseCode,c.MOCode,a.MUSER,a.InvCode,mopick.PickID,con.Enable,conv.Enable,conStock.Enable,conStocknew.Enable
  3186. ,a.WorkPoint,CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END,c.MODetailID,mopick.Sequence,mopick.EATTRIBUTE2,
  3187. CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,
  3188. CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END,
  3189. CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END,
  3190. CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END,
  3191. CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END,
  3192. CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END,
  3193. CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END,
  3194. CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END,
  3195. CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END,
  3196. CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END,
  3197. CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END,
  3198. CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END,
  3199. CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END,a.TransSequence
  3200. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,MOCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,'false' AS CompleteVerification,UpdateStock,IsFillClose FROM #TempERP
  3201. SELECT Costre,TransSequence,Sequence,InvCode,Quantity,Amount,MODetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,EATTRIBUTE2 as OutType
  3202. FROM #TempERP
  3203. DROP TABLE #TempERP
  3204. DROP TABLE #NewTempERP";
  3205. sql = string.Format(sql, Identification, BusinessCode);
  3206. DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  3207. string Inputstr = DataToJsonHelper.DataSetToJson(ds, "details", "Costre");
  3208. string resultStr = "";
  3209. if (DBHelper.IsU9())
  3210. { resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.U9MOStockINByProductDocURL, Inputstr); }
  3211. else { resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.MOStockINByProductDocURL, Inputstr); }
  3212. Result result = new Result();
  3213. result = JsonConvert.DeserializeObject<Result>(resultStr);
  3214. if (result.Success)
  3215. {
  3216. //try
  3217. //{
  3218. // JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  3219. // foreach (var item in res)
  3220. // {
  3221. // JObject jo = (JObject)item;
  3222. // JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  3223. // foreach (var detail in resdetail)
  3224. // {
  3225. // JObject det = (JObject)detail;
  3226. // string allcol = "" + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  3227. // + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  3228. // ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["MODetailID"].ToString(), Identification, jo["ID"].ToString(),
  3229. // det["DetailID"].ToString(), jo["MRCVCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  3230. // if (det["detailss"] != null)
  3231. // {
  3232. // JArray resdetails = (JArray)JsonConvert.DeserializeObject(det["detailss"].ToString());
  3233. // foreach (var details in resdetails)
  3234. // {
  3235. // JObject dets = (JObject)details;
  3236. // if (dets != null)
  3237. // {
  3238. // //直接回写
  3239. // string ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  3240. // FROM ICSWareHouseLotInfoLog a
  3241. // LEFT JOIN ICSMO b ON a.TransCode=b.MOCode AND a.WorkPoint=b.WorkPoint
  3242. // LEFT JOIN ICSMOPick c ON b.MODetailID=c.MODetailID AND b.WorkPoint=c.WorkPoint AND a.TransSequence=b.Sequence+'-'+c.Sequence
  3243. // WHERE c.PickID='{0}' and a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{6}'";
  3244. // ERPupdate = string.Format(ERPupdate, dets["SourceDetailID"].ToString(), Identification, dets["IDs"].ToString(), dets["ERPDetailID"].ToString(), dets["MRCVCode"].ToString()
  3245. // , dets["Sequence"].ToString(), BusinessCode);
  3246. // if (!DBHelper.ExecuteNonQuery(ERPupdate, cmd))
  3247. // {
  3248. // throw new Exception(language.GetNameByCode("WMSAPIInfo079"));//"成品倒冲回写失败!";
  3249. // }
  3250. // }
  3251. // }
  3252. // }
  3253. // }
  3254. // }
  3255. //}
  3256. //catch (Exception ex)
  3257. //{
  3258. // log.Debug(ex.ToString());
  3259. // log.Debug(resultStr);
  3260. // throw new Exception(language.GetNameByCode("WMSAPIInfo200") + ex);
  3261. //}
  3262. }
  3263. else
  3264. {
  3265. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  3266. }
  3267. #endregion
  3268. }
  3269. catch (Exception)
  3270. {
  3271. throw;
  3272. }
  3273. }
  3274. /// <summary>
  3275. /// 委外副产品入库接口
  3276. /// </summary>
  3277. /// <param name="TransType"></param>
  3278. /// <param name="Identification"></param>
  3279. /// <param name="cmd"></param>
  3280. public static void OOStockINByProductDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  3281. {
  3282. try
  3283. {
  3284. #region ERP
  3285. string sql = @"SELECT ISNULL(c.DepCode,'')+a.ToWarehouseCode+c.OOCode+a.MUSER AS Costre,c.VenCode,
  3286. c.DepCode,a.ToWarehouseCode AS WarehouseCode,c.OOCode,a.MUSER,mopick.Sequence,lot.EATTRIBUTE2,
  3287. a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(lot.Amount/lot.Quantity)) ELSE '0' END AS Amount,mopick.PickID AS OODetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,conStocknew.Enable AS IsFillClose
  3288. ,a.WorkPoint,CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END AS ProjectCode,
  3289. CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
  3290. CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END AS Version,
  3291. CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END AS Brand,
  3292. CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END AS cFree1,
  3293. CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END AS cFree2,
  3294. CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END AS cFree3,
  3295. CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END AS cFree4,
  3296. CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END AS cFree5,
  3297. CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END AS cFree6,
  3298. CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END AS cFree7,
  3299. CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END AS cFree8,
  3300. CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END AS cFree9,
  3301. CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END AS cFree10,
  3302. conv.Enable AS CompleteVerification,a.TransSequence
  3303. INTO #TempERP
  3304. FROM ICSWareHouseLotInfoLog a
  3305. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  3306. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  3307. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  3308. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  3309. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3310. INNER JOIN ICSOutsourcingOrder c ON b.TransCode=c.OOCode AND b.WorkPoint=c.WorkPoint
  3311. INNER JOIN ICSOOPick mopick ON mopick.OODetailID=c.OODetailID AND b.TransSequence=c.Sequence+'~'+mopick.Sequence AND mopick.WorkPoint=c.WorkPoint
  3312. INNER JOIN ICSExtension docext ON docext.ID=c.ExtensionID AND docext.WorkPoint=c.WorkPoint
  3313. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  3314. INNER JOIN ICSConfiguration conv ON conv.Code='CompleteVerification001' AND a.WorkPoint=conv.WorkPoint
  3315. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock004' AND a.WorkPoint=conStock.WorkPoint
  3316. INNER JOIN ICSConfiguration conStocknew ON a.WorkPoint=conStocknew.WorkPoint AND conStocknew.Code='FillClose001'
  3317. WHERE a.Identification='{0}' AND ERPUpload='0' AND BusinessCode='{1}'
  3318. GROUP BY inv.AmountEnable,c.DepCode,c.VenCode,a.ToWarehouseCode,c.OOCode,a.MUSER,a.InvCode,mopick.PickID,con.Enable,conv.Enable,conStock.Enable,conStocknew.Enable
  3319. ,a.WorkPoint,CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END,c.OODetailID,mopick.Sequence,lot.EATTRIBUTE2,
  3320. CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,
  3321. CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END,
  3322. CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END,
  3323. CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END,
  3324. CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END,
  3325. CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END,
  3326. CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END,
  3327. CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END,
  3328. CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END,
  3329. CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END,
  3330. CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END,
  3331. CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END,
  3332. CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END,a.TransSequence
  3333. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,VenCode,OOCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,'false' AS CompleteVerification,UpdateStock,IsFillClose FROM #TempERP
  3334. SELECT Costre,TransSequence AS ODNSequence,Sequence,InvCode,Quantity,Amount,OODetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,EATTRIBUTE2 as OutType
  3335. FROM #TempERP
  3336. DROP TABLE #TempERP";
  3337. sql = string.Format(sql, Identification, BusinessCode);
  3338. DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  3339. string Inputstr = DataToJsonHelper.DataSetToJson(ds, "details", "Costre");
  3340. string resultStr = "";
  3341. resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.OOStockINByProductDocURL, Inputstr);
  3342. Result result = new Result();
  3343. result = JsonConvert.DeserializeObject<Result>(resultStr);
  3344. if (result.Success)
  3345. {
  3346. //try
  3347. //{
  3348. // JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  3349. // foreach (var item in res)
  3350. // {
  3351. // JObject jo = (JObject)item;
  3352. // JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  3353. // foreach (var detail in resdetail)
  3354. // {
  3355. // JObject det = (JObject)detail;
  3356. // string allcol = "" + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  3357. // + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  3358. // ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["MODetailID"].ToString(), Identification, jo["ID"].ToString(),
  3359. // det["DetailID"].ToString(), jo["MRCVCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  3360. // if (det["detailss"] != null)
  3361. // {
  3362. // JArray resdetails = (JArray)JsonConvert.DeserializeObject(det["detailss"].ToString());
  3363. // foreach (var details in resdetails)
  3364. // {
  3365. // JObject dets = (JObject)details;
  3366. // if (dets != null)
  3367. // {
  3368. // //直接回写
  3369. // string ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  3370. // FROM ICSWareHouseLotInfoLog a
  3371. // LEFT JOIN ICSMO b ON a.TransCode=b.MOCode AND a.WorkPoint=b.WorkPoint
  3372. // LEFT JOIN ICSMOPick c ON b.MODetailID=c.MODetailID AND b.WorkPoint=c.WorkPoint AND a.TransSequence=b.Sequence+'-'+c.Sequence
  3373. // WHERE c.PickID='{0}' and a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{6}'";
  3374. // ERPupdate = string.Format(ERPupdate, dets["SourceDetailID"].ToString(), Identification, dets["IDs"].ToString(), dets["ERPDetailID"].ToString(), dets["MRCVCode"].ToString()
  3375. // , dets["Sequence"].ToString(), BusinessCode);
  3376. // if (!DBHelper.ExecuteNonQuery(ERPupdate, cmd))
  3377. // {
  3378. // throw new Exception(language.GetNameByCode("WMSAPIInfo079"));//"成品倒冲回写失败!";
  3379. // }
  3380. // }
  3381. // }
  3382. // }
  3383. // }
  3384. // }
  3385. //}
  3386. //catch (Exception ex)
  3387. //{
  3388. // log.Debug(ex.ToString());
  3389. // log.Debug(resultStr);
  3390. // throw new Exception(language.GetNameByCode("WMSAPIInfo200") + ex);
  3391. //}
  3392. }
  3393. else
  3394. {
  3395. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  3396. }
  3397. #endregion
  3398. }
  3399. catch (Exception)
  3400. {
  3401. throw;
  3402. }
  3403. }
  3404. /// <summary>
  3405. /// 副产品入库接口
  3406. /// </summary>
  3407. /// <param name="TransType"></param>
  3408. /// <param name="Identification"></param>
  3409. /// <param name="cmd"></param>
  3410. public static void MOStockINByProductNoTransDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  3411. {
  3412. try
  3413. {
  3414. #region ERP
  3415. string sql = @"SELECT a.ToWarehouseCode+a.MUSER+a.LotNo AS Costre,ROW_NUMBER() OVER (ORDER BY a.ToWarehouseCode,a.MUSER,a.LotNo) AS Sequence,
  3416. a.ToWarehouseCode AS WarehouseCode,lot.MUSER,
  3417. a.InvCode,SUM(a.Quantity) AS Quantity,CASE inv.AmountEnable WHEN '1' THEN SUM(a.Quantity*(lot.Amount/lot.Quantity)) ELSE '0' END AS Amount,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,conStocknew.Enable AS IsFillClose
  3418. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,
  3419. CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
  3420. ISNULL(ext.Version, '') AS Version,
  3421. ISNULL(ext.Brand, '') AS Brand,
  3422. ISNULL(ext.cFree1, '') AS cFree1,
  3423. ISNULL(ext.cFree2, '') AS cFree2,
  3424. ISNULL(ext.cFree3, '') AS cFree3,
  3425. ISNULL(ext.cFree4, '') AS cFree4,
  3426. ISNULL(ext.cFree5, '') AS cFree5,
  3427. ISNULL(ext.cFree6, '') AS cFree6,
  3428. ISNULL(ext.cFree7, '') AS cFree7,
  3429. ISNULL(ext.cFree8, '') AS cFree8,
  3430. ISNULL(ext.cFree9, '') AS cFree9,
  3431. ISNULL(ext.cFree10, '') AS cFree10,
  3432. conv.Enable AS CompleteVerification
  3433. INTO #TempERP
  3434. FROM ICSWareHouseLotInfoLog a
  3435. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  3436. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  3437. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  3438. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  3439. LEFT JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3440. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  3441. INNER JOIN ICSConfiguration conv ON conv.Code='CompleteVerification001' AND a.WorkPoint=conv.WorkPoint
  3442. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock004' AND a.WorkPoint=conStock.WorkPoint
  3443. INNER JOIN ICSConfiguration conStocknew ON a.WorkPoint=conStocknew.WorkPoint AND conStocknew.Code='FillClose001'
  3444. WHERE a.Identification='{0}' AND ERPUpload='0' AND BusinessCode='{1}'
  3445. GROUP BY a.LotNo,inv.AmountEnable,a.ToWarehouseCode,lot.MUSER,a.InvCode,con.Enable,conv.Enable,conStock.Enable,conStocknew.Enable
  3446. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') ,
  3447. CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,
  3448. ISNULL(ext.Version, '') ,
  3449. ISNULL(ext.Brand, '') ,
  3450. ISNULL(ext.cFree1, '') ,
  3451. ISNULL(ext.cFree2, '') ,
  3452. ISNULL(ext.cFree3, ''),
  3453. ISNULL(ext.cFree4, ''),
  3454. ISNULL(ext.cFree5, ''),
  3455. ISNULL(ext.cFree6, ''),
  3456. ISNULL(ext.cFree7, ''),
  3457. ISNULL(ext.cFree8, ''),
  3458. ISNULL(ext.cFree9, ''),
  3459. ISNULL(ext.cFree10, '')
  3460. SELECT DISTINCT Costre,Sequence,WorkPoint,WarehouseCode AS WHCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,'false' AS CompleteVerification,UpdateStock,IsFillClose
  3461. ,InvCode,Quantity,Amount,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 FROM #TempERP
  3462. --SELECT Costre,TransSequence,Sequence,InvCode,Quantity,Amount,MODetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10
  3463. --FROM #TempERP
  3464. DROP TABLE #TempERP";
  3465. sql = string.Format(sql, Identification, BusinessCode);
  3466. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  3467. string Inputstr = JsonConvert.SerializeObject(dt);
  3468. string resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.MOStockINByProductNoTransDocURL, Inputstr);
  3469. Result result = new Result();
  3470. result = JsonConvert.DeserializeObject<Result>(resultStr);
  3471. if (result.Success)
  3472. {
  3473. //try
  3474. //{
  3475. // JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  3476. // foreach (var item in res)
  3477. // {
  3478. // JObject jo = (JObject)item;
  3479. // JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  3480. // foreach (var detail in resdetail)
  3481. // {
  3482. // JObject det = (JObject)detail;
  3483. // string allcol = "" + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  3484. // + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  3485. // ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["MODetailID"].ToString(), Identification, jo["ID"].ToString(),
  3486. // det["DetailID"].ToString(), jo["MRCVCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode);
  3487. // if (det["detailss"] != null)
  3488. // {
  3489. // JArray resdetails = (JArray)JsonConvert.DeserializeObject(det["detailss"].ToString());
  3490. // foreach (var details in resdetails)
  3491. // {
  3492. // JObject dets = (JObject)details;
  3493. // if (dets != null)
  3494. // {
  3495. // //直接回写
  3496. // string ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
  3497. // FROM ICSWareHouseLotInfoLog a
  3498. // LEFT JOIN ICSMO b ON a.TransCode=b.MOCode AND a.WorkPoint=b.WorkPoint
  3499. // LEFT JOIN ICSMOPick c ON b.MODetailID=c.MODetailID AND b.WorkPoint=c.WorkPoint AND a.TransSequence=b.Sequence+'-'+c.Sequence
  3500. // WHERE c.PickID='{0}' and a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{6}'";
  3501. // ERPupdate = string.Format(ERPupdate, dets["SourceDetailID"].ToString(), Identification, dets["IDs"].ToString(), dets["ERPDetailID"].ToString(), dets["MRCVCode"].ToString()
  3502. // , dets["Sequence"].ToString(), BusinessCode);
  3503. // if (!DBHelper.ExecuteNonQuery(ERPupdate, cmd))
  3504. // {
  3505. // throw new Exception(language.GetNameByCode("WMSAPIInfo079"));//"成品倒冲回写失败!";
  3506. // }
  3507. // }
  3508. // }
  3509. // }
  3510. // }
  3511. // }
  3512. //}
  3513. //catch (Exception ex)
  3514. //{
  3515. // log.Debug(ex.ToString());
  3516. // log.Debug(resultStr);
  3517. // throw new Exception(language.GetNameByCode("WMSAPIInfo200") + ex);
  3518. //}
  3519. }
  3520. else
  3521. {
  3522. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  3523. }
  3524. #endregion
  3525. }
  3526. catch (Exception)
  3527. {
  3528. throw;
  3529. }
  3530. }
  3531. #endregion
  3532. #region 开立的生产入库单
  3533. /// <summary>
  3534. /// 开立的生产入库单
  3535. /// </summary>
  3536. /// <param name="TransCode"></param>
  3537. /// <param name="TransSequence"></param>
  3538. /// <param name="Quantity"></param>
  3539. /// <param name="WorkPoint"></param>
  3540. /// <param name="cmd"></param>
  3541. public static void ManufactureReceive(string LotNo, string Quantity, string WorkPoint, SqlCommand cmd, Dictionary<string, string> language)
  3542. {
  3543. try
  3544. {
  3545. string sql = @"DECLARE @Status VARCHAR(10)
  3546. SELECT @Status=c.Status FROM ICSInventoryLot a
  3547. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3548. INNER JOIN ICSManufactureReceive c ON b.TransCode=c.RCVCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  3549. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.Type='1'
  3550. IF (@Status IS NULL)
  3551. BEGIN
  3552. RAISERROR('" + language.GetNameByCode("WMSAPIInfo081") + @"',16,1);
  3553. RETURN
  3554. END
  3555. ELSE IF (@Status!='1')
  3556. BEGIN
  3557. RAISERROR('" + language.GetNameByCode("WMSAPIInfo137") + @"',16,1);
  3558. RETURN
  3559. END
  3560. UPDATE c SET RCVQuantity=ISNULL(RCVQuantity,0)+'{2}'
  3561. FROM ICSInventoryLot a
  3562. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3563. INNER JOIN ICSManufactureReceive c ON b.TransCode=c.RCVCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  3564. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.Type='1'
  3565. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  3566. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3567. INNER JOIN ICSManufactureReceive c ON b.TransCode=c.RCVCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  3568. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.Type='1' --AND c.Quantity<c.RCVQuantity
  3569. AND dbo.GetExcessInQty(c.InvCode, c.WorkPoint, 'OverIn013', c.Quantity,1,2,'')<c.RCVQuantity
  3570. )
  3571. BEGIN
  3572. RAISERROR('" + language.GetNameByCode("WMSAPIInfo083") + @"',16,1);
  3573. END";
  3574. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  3575. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  3576. {
  3577. throw new Exception(language.GetNameByCode("WMSAPIInfo138"));//"生产入库单更新失败!");
  3578. }
  3579. }
  3580. catch (Exception)
  3581. {
  3582. throw;
  3583. }
  3584. }
  3585. /// <summary>
  3586. /// 开立的生产入库单
  3587. /// </summary>
  3588. /// <param name="TransType"></param>
  3589. /// <param name="Identification"></param>
  3590. /// <param name="cmd"></param>
  3591. public static DataTable ManufactureReceiveERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  3592. {
  3593. try
  3594. {
  3595. string checklotno = "";
  3596. // string checksql = @"SELECT c.rcvcode,a.lotno FROM ICSInventoryLot a
  3597. //INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3598. //INNER JOIN (select RCVCode,Sequence,WorkPoint FROM ICSManufactureReceive) c ON b.TransCode=c.RCVCode
  3599. //AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  3600. //WHERE c.rcvcode in (select TransCode from ICSWareHouseLotInfoLog
  3601. //where Identification='{0}' )
  3602. //and a.lotno NOT IN (select LotNo from ICSWareHouseLotInfoLog where Identification='{0}' )";
  3603. // checksql = string.Format(checksql, Identification);
  3604. // DataTable dtt = DBHelper.SQlReturnData(checksql, cmd);
  3605. // if (dtt.Rows.Count > 1)
  3606. // {
  3607. // // 如果dtt的行数大于1,将lotno以逗号隔开的形式加入checklotno中
  3608. // foreach (DataRow row in dtt.Rows)
  3609. // {
  3610. // checklotno += row["lotno"].ToString() + ",";
  3611. // }
  3612. // checklotno = checklotno.TrimEnd(','); // 去除最后一个逗号
  3613. // }
  3614. // else if (dtt.Rows.Count == 1)
  3615. // {
  3616. // // 如果dtt的行数等于1,直接将lotno赋值给checklotno
  3617. // checklotno = dtt.Rows[0]["lotno"].ToString();
  3618. // }
  3619. string checkrcvcode = "";
  3620. //string checknewsql = @"SELECT distinct c.rcvcode FROM ICSInventoryLot a
  3621. //INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3622. //INNER JOIN (select RCVCode,Sequence,WorkPoint FROM ICSManufactureReceive) c ON b.TransCode=c.RCVCode
  3623. //AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  3624. //WHERE c.rcvcode in (select TransCode from ICSWareHouseLotInfoLog
  3625. //where Identification='{0}' )
  3626. //and a.lotno NOT IN (select LotNo from ICSWareHouseLotInfoLog where Identification='{0}' )";
  3627. //checknewsql = string.Format(checknewsql, Identification);
  3628. //DataTable dttnew = DBHelper.SQlReturnData(checknewsql, cmd);
  3629. //if (dttnew.Rows.Count > 1)
  3630. //{
  3631. // // 如果dtt的行数大于1,将lotno以逗号隔开的形式加入checklotno中
  3632. // foreach (DataRow row in dttnew.Rows)
  3633. // {
  3634. // checkrcvcode += row["rcvcode"].ToString() + ",";
  3635. // }
  3636. // checkrcvcode = checkrcvcode.TrimEnd(','); // 去除最后一个逗号
  3637. //}
  3638. //else if (dttnew.Rows.Count == 1)
  3639. //{
  3640. // // 如果dtt的行数等于1,直接将lotno赋值给checklotno
  3641. // checkrcvcode = dttnew.Rows[0]["rcvcode"].ToString();
  3642. //}
  3643. # region 开立状态单据审核
  3644. string checkksql = @"SELECT c.rcvcode,a.lotno FROM ICSInventoryLot a
  3645. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3646. INNER JOIN (select rcvcode,Sequence,WorkPoint FROM ICSManufactureReceive) c ON b.TransCode=c.rcvcode
  3647. AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  3648. left join ICSWareHouseLotInfo d on a.lotno=d.lotno and a.WorkPoint=d.WorkPoint
  3649. WHERE c.rcvcode in (select TransCode from ICSWareHouseLotInfoLog
  3650. where Identification='{0}' )
  3651. and d.lotno is null";
  3652. checkksql = string.Format(checkksql, Identification);
  3653. DataTable dtt = DBHelper.SQlReturnData(checkksql, cmd);
  3654. if (dtt.Rows.Count > 1)
  3655. {
  3656. // 如果dtt的行数大于1,将lotno以逗号隔开的形式加入checklotno中
  3657. foreach (DataRow row in dtt.Rows)
  3658. {
  3659. checklotno += row["lotno"].ToString() + ",";
  3660. }
  3661. checklotno = checklotno.TrimEnd(','); // 去除最后一个逗号
  3662. }
  3663. else if (dtt.Rows.Count == 1)
  3664. {
  3665. // 如果dtt的行数等于1,直接将lotno赋值给checklotno
  3666. checklotno = dtt.Rows[0]["lotno"].ToString();
  3667. }
  3668. string sql = string.Empty;
  3669. string ccsql = @"SELECT a.F_Id
  3670. FROM Sys_SRM_ItemsDetail a
  3671. INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_Id
  3672. WHERE b.F_EnCode='BatchInOutErp' AND a.F_ItemCode='BatchIn' AND a.F_EnabledMark='1'";
  3673. ccsql = string.Format(ccsql);
  3674. DataTable dtdao = DBHelper.SQlReturnData(ccsql, cmd);
  3675. if (dtdao.Rows.Count > 0 && dtdao != null)
  3676. {
  3677. #region 原逻辑
  3678. // string checksql = @"select SUM(b.Quantity) AS SUMQty,SUM(b.RcvQuantity) AS ISSQty,a.transCode from ICSManufactureReceive b inner join ICSWareHouseLotInfoLog a ON a.TransCode=b.RCVCode AND a.WorkPoint=b.WorkPoint
  3679. // where a.Identification='{0}' GROUP BY a.transCode";
  3680. // checksql = string.Format(checksql, Identification);
  3681. // DataTable chekdt = DBHelper.SQlReturnData(checksql, cmd);
  3682. // for (int i = 0; i < chekdt.Rows.Count; i++)
  3683. // {
  3684. // decimal SUMQty = Convert.ToDecimal(chekdt.Rows[i]["SUMQty"]);
  3685. // decimal ISSQty = Convert.ToDecimal(chekdt.Rows[i]["ISSQty"]);
  3686. // string trancode = chekdt.Rows[i]["transCode"].ToString();
  3687. // if (SUMQty - ISSQty == 0)
  3688. // {
  3689. // string pnsql = @"
  3690. // select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,TransCode,TransSequence
  3691. // INTO #NewTempERP
  3692. // from ICSWareHouseLotInfoLog
  3693. // WHERE TransCode='{0}' AND ERPUpload='0'
  3694. // SELECT b.RCVID AS ID,a.MUSER AS [User],SYSDATETIME() AS MTime,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,a.WorkPoint
  3695. // FROM #NewTempERP a
  3696. // INNER JOIN ICSManufactureReceive b ON a.TransCode=b.RCVCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  3697. // INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  3698. // INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock004' AND a.WorkPoint=conStock.WorkPoint
  3699. // GROUP BY b.RCVID,a.MUSER,con.Enable,conStock.Enable,a.WorkPoint
  3700. //DROP TABLE #NewTempERP";
  3701. // pnsql = string.Format(pnsql, trancode);
  3702. // DataTable dt = DBHelper.SQlReturnData(pnsql, cmd);
  3703. // string Inputstr = JsonConvert.SerializeObject(dt);
  3704. // //U9ICSManufactureReceiveURL
  3705. // string resultStr = "";
  3706. // log.Debug("入库单审核传入参数:" + Inputstr);
  3707. // if (DBHelper.IsU9())
  3708. // {
  3709. // log.Debug("入库单审核URL:" + ERPUrl.U9ICSManufactureReceiveURL);
  3710. // resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.U9ICSManufactureReceiveURL, Inputstr);
  3711. // }
  3712. // else
  3713. // resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.ICSManufactureReceiveURL, Inputstr);
  3714. // Result result = new Result();
  3715. // result = JsonConvert.DeserializeObject<Result>(resultStr);
  3716. // if (result.Success)
  3717. // {
  3718. // try
  3719. // {
  3720. // foreach (DataRow dr in dt.Rows)
  3721. // {
  3722. // ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, dr["ID"].ToString(), Identification, "", "", "", "", "", cmd, language, BusinessCode);
  3723. // }
  3724. // }
  3725. // catch (Exception ex)
  3726. // {
  3727. // log.Debug(ex.ToString());
  3728. // log.Debug(resultStr);
  3729. // }
  3730. // }
  3731. // else
  3732. // {
  3733. // throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  3734. // }
  3735. // }
  3736. // }
  3737. #endregion
  3738. string pnsql = @"
  3739. select DISTINCT a.LotNo,a.WorkPoint,a.InvCode,a.ToWarehouseCode,a.MUSER,a.Quantity,a.TransCode,a.TransSequence
  3740. INTO #NewTempERP
  3741. from ICSWareHouseLotInfoLog a
  3742. inner join ICSManufactureReceive b ON a.TransCode=b.RCVCode AND a.WorkPoint=b.WorkPoint
  3743. where a.Identification='{0}' AND ERPUpload='0'
  3744. GROUP BY a.LotNo,a.WorkPoint,a.InvCode,a.ToWarehouseCode,a.MUSER,a.Quantity,a.TransCode,a.TransSequence
  3745. HAVING SUM(b.Quantity)=SUM(b.RcvQuantity)
  3746. SELECT b.RCVID AS ID,a.MUSER AS [User],SYSDATETIME() AS MTime,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,a.WorkPoint
  3747. FROM #NewTempERP a
  3748. INNER JOIN ICSManufactureReceive b ON a.TransCode=b.RCVCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  3749. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  3750. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock004' AND a.WorkPoint=conStock.WorkPoint
  3751. GROUP BY b.RCVID,a.MUSER,con.Enable,conStock.Enable,a.WorkPoint
  3752. DROP TABLE #NewTempERP
  3753. SELECT b.RCVID AS ID,a.MUSER AS [User],SYSDATETIME() AS MTime,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,a.WorkPoint
  3754. FROM #NewTempERP a
  3755. INNER JOIN ICSManufactureReceive b ON a.TransCode=b.RCVCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  3756. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  3757. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock004' AND a.WorkPoint=conStock.WorkPoint
  3758. GROUP BY b.RCVID,a.MUSER,con.Enable,conStock.Enable,a.WorkPoint
  3759. DROP TABLE #NewTempERP";
  3760. pnsql = string.Format(pnsql, Identification);
  3761. DataTable dt = DBHelper.SQlReturnData(pnsql, cmd);
  3762. if (dt.Rows.Count>0&&dt!=null)
  3763. {
  3764. string Inputstr = JsonConvert.SerializeObject(dt);
  3765. //U9ICSManufactureReceiveURL
  3766. string resultStr = "";
  3767. log.Debug("入库单审核传入参数:" + Inputstr);
  3768. if (DBHelper.IsU9())
  3769. {
  3770. log.Debug("入库单审核URL:" + ERPUrl.U9ICSManufactureReceiveURL);
  3771. resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.U9ICSManufactureReceiveURL, Inputstr);
  3772. }
  3773. else
  3774. resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.ICSManufactureReceiveURL, Inputstr);
  3775. Result result = new Result();
  3776. result = JsonConvert.DeserializeObject<Result>(resultStr);
  3777. if (result.Success)
  3778. {
  3779. try
  3780. {
  3781. foreach (DataRow dr in dt.Rows)
  3782. {
  3783. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, dr["ID"].ToString(), Identification, "", "", "", "", "", cmd, language, BusinessCode);
  3784. }
  3785. }
  3786. catch (Exception ex)
  3787. {
  3788. log.Debug(ex.ToString());
  3789. log.Debug(resultStr);
  3790. }
  3791. }
  3792. else
  3793. {
  3794. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  3795. }
  3796. }
  3797. }
  3798. else
  3799. {
  3800. sql = @"DECLARE @quantity DECIMAL(38,4);
  3801. DECLARE @rcvquantity DECIMAL(38,4);
  3802. SELECT @quantity=SUM(Quantity),@rcvquantity=SUM(RCVQuantity) FROM ICSManufactureReceive b
  3803. WHERE b.RCVCode+b.WorkPoint IN (SELECT a.TransCode+a.WorkPoint FROM ICSWareHouseLotInfoLog a WHERE a.Identification='{0}')
  3804. IF (@quantity<>@rcvquantity)
  3805. BEGIN
  3806. RAISERROR('" + language.GetNameByCode("WMSAPIInfo096") + @"',16,1);
  3807. RETURN
  3808. END
  3809. select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,TransCode,TransSequence
  3810. INTO #NewTempERP
  3811. from ICSWareHouseLotInfoLog
  3812. WHERE Identification='{0}' AND ERPUpload='0'
  3813. SELECT b.RCVID AS ID,a.MUSER AS [User],SYSDATETIME() AS MTime,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,a.WorkPoint
  3814. FROM #NewTempERP a
  3815. INNER JOIN ICSManufactureReceive b ON a.TransCode=b.RCVCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  3816. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  3817. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock004' AND a.WorkPoint=conStock.WorkPoint
  3818. GROUP BY b.RCVID,a.MUSER,con.Enable,conStock.Enable,a.WorkPoint
  3819. DROP TABLE #NewTempERP";
  3820. sql = string.Format(sql, Identification, checklotno, checkrcvcode);
  3821. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  3822. string Inputstr = JsonConvert.SerializeObject(dt);
  3823. //U9ICSManufactureReceiveURL
  3824. string resultStr = "";
  3825. log.Debug("入库单审核传入参数:" + Inputstr);
  3826. if (DBHelper.IsU9())
  3827. {
  3828. log.Debug("入库单审核URL:" + ERPUrl.U9ICSManufactureReceiveURL);
  3829. resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.U9ICSManufactureReceiveURL, Inputstr);
  3830. }
  3831. else
  3832. resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.ICSManufactureReceiveURL, Inputstr);
  3833. Result result = new Result();
  3834. result = JsonConvert.DeserializeObject<Result>(resultStr);
  3835. if (result.Success)
  3836. {
  3837. try
  3838. {
  3839. foreach (DataRow dr in dt.Rows)
  3840. {
  3841. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, dr["ID"].ToString(), Identification, "", "", "", "", "", cmd, language, BusinessCode);
  3842. }
  3843. }
  3844. catch (Exception ex)
  3845. {
  3846. log.Debug(ex.ToString());
  3847. log.Debug(resultStr);
  3848. }
  3849. }
  3850. else
  3851. {
  3852. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  3853. }
  3854. }
  3855. #endregion
  3856. DataTable chekdtt = new DataTable();
  3857. chekdtt.Columns.Add("checklotno", typeof(string));
  3858. DataRow newrow = chekdtt.NewRow();
  3859. newrow["checklotno"] = checklotno;
  3860. chekdtt.Rows.Add(newrow);
  3861. string aaaa = JsonConvert.SerializeObject(chekdtt);
  3862. return chekdtt;
  3863. }
  3864. catch (Exception)
  3865. {
  3866. throw;
  3867. }
  3868. }
  3869. #endregion
  3870. #region 产成品入库单(咖博士)
  3871. /// <summary>
  3872. /// 更新产成品入库单
  3873. /// </summary>
  3874. /// <param name="LotNo"></param>
  3875. /// <param name="Quantity"></param>
  3876. /// <param name="WorkPoint"></param>
  3877. /// <param name="cmd"></param>
  3878. /// <param name="language"></param>
  3879. public static void ManufactureMESReceive(string LotNo, string Quantity, string WorkPoint, string TransCode, SqlCommand cmd, Dictionary<string, string> language)
  3880. {
  3881. try
  3882. {
  3883. string sql = @"DECLARE @Status VARCHAR(10)
  3884. SELECT @Status=c.Status FROM ICSInventoryLot a
  3885. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3886. INNER JOIN ICSMO mo ON mo.MOCode=b.TransCode AND mo.Sequence=b.TransSequence AND mo.WorkPoint=b.WorkPoint
  3887. INNER JOIN ICSManufactureReceive c ON c.SourceCode=mo.MOCode AND c.SourceSequence=mo.Sequence AND c.WorkPoint=mo.WorkPoint
  3888. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.Type='1'
  3889. IF (@Status IS NULL)
  3890. BEGIN
  3891. RAISERROR('" + language.GetNameByCode("WMSAPIInfo081") + @"',16,1);
  3892. RETURN
  3893. END
  3894. ELSE IF (@Status!='1')
  3895. BEGIN
  3896. RAISERROR('" + language.GetNameByCode("WMSAPIInfo137") + @"',16,1);
  3897. RETURN
  3898. END
  3899. UPDATE c SET c.RCVQuantity=ISNULL(c.RCVQuantity,0)+'{2}'
  3900. FROM ICSInventoryLot a
  3901. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3902. INNER JOIN ICSMO mo ON mo.MOCode=b.TransCode AND mo.Sequence=b.TransSequence AND mo.WorkPoint=b.WorkPoint
  3903. INNER JOIN ICSManufactureReceive c ON c.SourceCode=mo.MOCode AND c.SourceSequence=mo.Sequence AND c.WorkPoint=mo.WorkPoint
  3904. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.Type='1' AND c.RCVCode='{3}'
  3905. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  3906. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3907. INNER JOIN ICSMO mo ON mo.MOCode=b.TransCode AND mo.Sequence=b.TransSequence AND mo.WorkPoint=b.WorkPoint
  3908. INNER JOIN ICSManufactureReceive c ON c.SourceCode=mo.MOCode AND c.SourceSequence=mo.Sequence AND c.WorkPoint=mo.WorkPoint
  3909. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND c.Type='1' AND c.RCVCode='{3}'
  3910. AND dbo.GetExcessInQty(c.InvCode, c.WorkPoint, 'OverIn013', c.Quantity,1,2,'')<c.RCVQuantity)
  3911. BEGIN
  3912. RAISERROR('" + language.GetNameByCode("WMSAPIInfo083") + @"',16,1);
  3913. END";
  3914. sql = string.Format(sql, LotNo, WorkPoint, Quantity, TransCode);
  3915. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  3916. {
  3917. throw new Exception(language.GetNameByCode("WMSAPIInfo138"));//"生产入库单更新失败!");
  3918. }
  3919. }
  3920. catch (Exception)
  3921. {
  3922. throw;
  3923. }
  3924. }
  3925. /// <summary>
  3926. /// MES成品入库单调用ERP接口
  3927. /// </summary>
  3928. /// <param name="TransType"></param>
  3929. /// <param name="Identification"></param>
  3930. /// <param name="cmd"></param>
  3931. /// <param name="language"></param>
  3932. /// <param name="BusinessCode"></param>
  3933. public static void ManufactureMESReceiveERP(string TransType, string Identification, string TransCode, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
  3934. {
  3935. try
  3936. {
  3937. string checklotno = "";
  3938. string checksql = @"SELECT c.rcvcode,a.lotno FROM ICSInventoryLot a
  3939. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3940. INNER JOIN (select RCVCode,Sequence,WorkPoint FROM ICSManufactureReceive) c ON b.TransCode=c.RCVCode
  3941. AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  3942. left join ICSWareHouseLotInfo d on a.lotno=d.lotno and a.WorkPoint=d.WorkPoint
  3943. WHERE c.rcvcode in (select TransCode from ICSWareHouseLotInfoLog
  3944. where Identification='{0}' )
  3945. and d.lotno is null";
  3946. checksql = string.Format(checksql, Identification);
  3947. DataTable dtt = DBHelper.SQlReturnData(checksql, cmd);
  3948. if (dtt.Rows.Count > 1)
  3949. {
  3950. // 如果dtt的行数大于1,将lotno以逗号隔开的形式加入checklotno中
  3951. foreach (DataRow row in dtt.Rows)
  3952. {
  3953. checklotno += row["lotno"].ToString() + ",";
  3954. }
  3955. checklotno = checklotno.TrimEnd(','); // 去除最后一个逗号
  3956. }
  3957. else if (dtt.Rows.Count == 1)
  3958. {
  3959. // 如果dtt的行数等于1,直接将lotno赋值给checklotno
  3960. checklotno = dtt.Rows[0]["lotno"].ToString();
  3961. }
  3962. string checkrcvcode = "";
  3963. string checknewsql = @"SELECT distinct c.rcvcode FROM ICSInventoryLot a
  3964. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  3965. INNER JOIN (select RCVCode,Sequence,WorkPoint FROM ICSManufactureReceive) c ON b.TransCode=c.RCVCode
  3966. AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
  3967. left join ICSWareHouseLotInfo d on a.lotno=d.lotno and a.WorkPoint=d.WorkPoint
  3968. WHERE c.rcvcode in (select TransCode from ICSWareHouseLotInfoLog
  3969. where Identification='{0}' )
  3970. and d.lotno is null";
  3971. checknewsql = string.Format(checknewsql, Identification);
  3972. DataTable dttnew = DBHelper.SQlReturnData(checknewsql, cmd);
  3973. if (dttnew.Rows.Count > 1)
  3974. {
  3975. // 如果dtt的行数大于1,将lotno以逗号隔开的形式加入checklotno中
  3976. foreach (DataRow row in dttnew.Rows)
  3977. {
  3978. checkrcvcode += row["rcvcode"].ToString() + ",";
  3979. }
  3980. checkrcvcode = checkrcvcode.TrimEnd(','); // 去除最后一个逗号
  3981. }
  3982. else if (dttnew.Rows.Count == 1)
  3983. {
  3984. // 如果dtt的行数等于1,直接将lotno赋值给checklotno
  3985. checkrcvcode = dttnew.Rows[0]["rcvcode"].ToString();
  3986. }
  3987. #region ERP开立状态单据审核
  3988. string sql = @"DECLARE @quantity DECIMAL(38,4);
  3989. DECLARE @rcvquantity DECIMAL(38,4);
  3990. SELECT @quantity=SUM(Quantity),@rcvquantity=SUM(RCVQuantity) FROM ICSManufactureReceive b
  3991. WHERE b.RCVCode+b.WorkPoint IN (SELECT a.TransCode+a.WorkPoint FROM ICSWareHouseLotInfoLog a WHERE a.Identification='{0}')
  3992. IF (@quantity<>@rcvquantity)
  3993. BEGIN
  3994. RAISERROR('" + language.GetNameByCode("WMSAPIInfo096") + @"',16,1);
  3995. RETURN
  3996. END
  3997. select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,TransCode,TransSequence
  3998. INTO #NewTempERP
  3999. from ICSWareHouseLotInfoLog
  4000. WHERE Identification='{0}' AND ERPUpload='0'
  4001. SELECT b.RCVID AS ID,a.MUSER AS [User],SYSDATETIME() AS MTime,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock,a.WorkPoint
  4002. FROM #NewTempERP a
  4003. INNER JOIN ICSMO mo ON mo.MOCode=a.TransCode AND mo.Sequence=a.TransSequence AND mo.WorkPoint=a.WorkPoint
  4004. INNER JOIN ICSManufactureReceive b ON b.SourceCode=mo.MOCode AND b.Sequence=mo.Sequence AND b.WorkPoint=mo.WorkPoint AND b.RCVCode='{3}'
  4005. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  4006. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock004' AND a.WorkPoint=conStock.WorkPoint
  4007. GROUP BY b.RCVID,a.MUSER,con.Enable,conStock.Enable,a.WorkPoint
  4008. DROP TABLE #NewTempERP";
  4009. sql = string.Format(sql, Identification, checklotno, checkrcvcode, TransCode);
  4010. DataTable dt = DBHelper.SQlReturnData(sql, cmd);
  4011. string Inputstr = JsonConvert.SerializeObject(dt);
  4012. log.Debug("MES成品入库单入库调用ERP接口传参:" + Environment.NewLine + Inputstr);
  4013. //U9ICSManufactureReceiveURL
  4014. string resultStr = "";
  4015. if (DBHelper.IsU9())
  4016. { resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.U9ICSManufactureReceiveURL, Inputstr); }
  4017. else
  4018. resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.ICSManufactureReceiveURL, Inputstr);
  4019. Result result = new Result();
  4020. result = JsonConvert.DeserializeObject<Result>(resultStr);
  4021. if (result.Success)
  4022. {
  4023. try
  4024. {
  4025. foreach (DataRow dr in dt.Rows)
  4026. {
  4027. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, dr["ID"].ToString(), Identification, "", "", "", "", "", cmd, language, BusinessCode);
  4028. }
  4029. }
  4030. catch (Exception ex)
  4031. {
  4032. log.Debug(ex.ToString());
  4033. log.Debug(resultStr);
  4034. }
  4035. }
  4036. else
  4037. {
  4038. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  4039. }
  4040. #endregion
  4041. }
  4042. catch (Exception)
  4043. {
  4044. throw;
  4045. }
  4046. }
  4047. #endregion
  4048. #region 返工工单
  4049. /// <summary>
  4050. /// 返工工单
  4051. /// </summary>
  4052. /// <param name="TransCode"></param>
  4053. /// <param name="TransSequence"></param>
  4054. /// <param name="Quantity"></param>
  4055. /// <param name="WorkPoint"></param>
  4056. /// <param name="cmd"></param>
  4057. public static void ReWorkReceiveMo(string LotNo, string Quantity, string WarehouseCode,
  4058. string LocationCode, string WorkPoint, String User, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
  4059. {
  4060. try
  4061. {
  4062. string sql = @"DECLARE @Status VARCHAR(10)
  4063. SELECT @Status=c.ERPStatus FROM ICSInventoryLot a
  4064. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  4065. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.WorkPoint=c.WorkPoint
  4066. INNER JOIN ICSMOPick d ON d.MODetailID=c.MODetailID AND b.WorkPoint=c.WorkPoint and b.TransSequence=c.Sequence+'-'+d.Sequence
  4067. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  4068. IF (@Status IS NULL)
  4069. BEGIN
  4070. RAISERROR('" + language.GetNameByCode("WMSAPIInfo081") + @"',16,1);
  4071. RETURN
  4072. END
  4073. ELSE IF (@Status='3')
  4074. BEGIN
  4075. RAISERROR('" + language.GetNameByCode("WMSAPIInfo082") + @"',16,1);
  4076. RETURN
  4077. END
  4078. UPDATE d SET IssueQuantity=ISNULL(IssueQuantity,0)+'{2}'
  4079. FROM ICSInventoryLot a
  4080. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  4081. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.WorkPoint=c.WorkPoint
  4082. INNER JOIN ICSMOPick d ON d.MODetailID=c.MODetailID AND d.WorkPoint=c.WorkPoint and b.TransSequence=c.Sequence+'-'+d.Sequence
  4083. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  4084. IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
  4085. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  4086. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.WorkPoint=c.WorkPoint
  4087. INNER JOIN ICSMOPick d ON d.MODetailID=c.MODetailID AND d.WorkPoint=c.WorkPoint and b.TransSequence=c.Sequence+'-'+d.Sequence
  4088. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
  4089. AND d.IssueQuantity>dbo.GetExcessInQty(c.InvCode, c.WorkPoint, 'OverIn015', c.Quantity,1,2,''))
  4090. BEGIN
  4091. RAISERROR('" + language.GetNameByCode("WMSAPIInfo083") + @"',16,1);
  4092. END";
  4093. sql = string.Format(sql, LotNo, WorkPoint, Quantity);
  4094. if (!DBHelper.ExecuteNonQuery(sql, cmd))
  4095. {
  4096. throw new Exception(language.GetNameByCode("WMSAPIInfo366"));//"生产工单更新失败!");
  4097. }
  4098. }
  4099. catch (Exception)
  4100. {
  4101. throw;
  4102. }
  4103. }
  4104. /// <summary>
  4105. /// 返工工单
  4106. /// </summary>
  4107. /// <param name="TransType"></param>
  4108. /// <param name="Identification"></param>
  4109. /// <param name="cmd"></param>
  4110. public static void ReWorkReceiveMoERP(string TransType, string Identification, SqlCommand cmd, Dictionary<string, string> language,string BusinessCode)
  4111. {
  4112. try
  4113. {
  4114. #region ERP开立状态单据审核
  4115. String sql = @"select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity
  4116. INTO #NewTempERP
  4117. from ICSWareHouseLotInfoLog
  4118. WHERE Identification='{0}' AND ERPUpload='0' AND BusinessCode='{1}'
  4119. SELECT c.DepCode+a.ToWarehouseCode+c.MOCode+a.MUSER AS Costre,c.DepCode,a.ToWarehouseCode AS WarehouseCode,c.MOCode,a.MUSER,d.Sequence AS Sequence,
  4120. a.InvCode,SUM(a.Quantity) AS Quantity,0 AS Amount,d.PickID AS MODetailID,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock
  4121. ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
  4122. ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
  4123. INTO #TempERP
  4124. FROM #NewTempERP a
  4125. INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
  4126. INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
  4127. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  4128. LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
  4129. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  4130. INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.WorkPoint=c.WorkPoint
  4131. INNER JOIN ICSMOPick d ON d.MODetailID=c.MODetailID AND d.WorkPoint=c.WorkPoint and b.TransSequence=c.Sequence+'-'+d.Sequence
  4132. INNER JOIN ICSConfiguration con ON con.Code='Stock001' AND a.WorkPoint=con.WorkPoint
  4133. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock007' AND a.WorkPoint=conStock.WorkPoint
  4134. GROUP BY c.DepCode,a.ToWarehouseCode,c.MOCode,a.MUSER,a.InvCode,d.PickID,con.Enable,d.Sequence,conStock.Enable
  4135. ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
  4136. ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
  4137. SELECT DISTINCT Costre,WorkPoint,DepCode,WarehouseCode AS WHCode,MOCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,UpdateStock FROM #TempERP
  4138. SELECT Costre,Sequence,InvCode,Quantity,Amount,MODetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10
  4139. FROM #TempERP
  4140. DROP TABLE #TempERP
  4141. DROP TABLE #NewTempERP";
  4142. sql = string.Format(sql, Identification,BusinessCode);
  4143. DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
  4144. string Inputstr = DataToJsonHelper.DataSetToJson(ds, "details", "Costre");
  4145. string resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.ICSReWorkReceiveMoURL, Inputstr);
  4146. Result result = new Result();
  4147. result = JsonConvert.DeserializeObject<Result>(resultStr);
  4148. if (result.Success)
  4149. {
  4150. try
  4151. {
  4152. JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
  4153. foreach (var item in res)
  4154. {
  4155. JObject jo = (JObject)item;
  4156. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  4157. foreach (var detail in resdetail)
  4158. {
  4159. JObject det = (JObject)detail;
  4160. string col = jo["WHCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString()
  4161. + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString();
  4162. ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["MODetailID"].ToString(), Identification, jo["ID"].ToString(),
  4163. det["DetailID"].ToString(), jo["MRCVCode"].ToString(), det["Sequence"].ToString(), col, cmd, language, BusinessCode);
  4164. }
  4165. }
  4166. }
  4167. catch (Exception ex)
  4168. {
  4169. log.Debug(ex.ToString());
  4170. log.Debug(resultStr);
  4171. }
  4172. }
  4173. else
  4174. {
  4175. throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
  4176. }
  4177. #endregion
  4178. }
  4179. catch (Exception)
  4180. {
  4181. throw;
  4182. }
  4183. }
  4184. #endregion
  4185. }
  4186. }