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.

1587 lines
97 KiB

3 days ago
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. using NFine.Code;
  4. using NFine.Data.Extensions;
  5. using NFine.Domain._03_Entity.SRM;
  6. using NFine.Domain.Entity.ProductManage;
  7. using NFine.Domain.IRepository.ProductManage;
  8. using NFine.Repository;
  9. using NFine.Repository.ProductManage;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Configuration;
  13. using System.Data;
  14. using System.Data.Common;
  15. using System.Data.Common.CommandTrees.ExpressionBuilder;
  16. using System.Data.Linq;
  17. using System.IO;
  18. using System.Linq;
  19. using System.Net;
  20. using System.Runtime.ConstrainedExecution;
  21. using System.Text;
  22. namespace NFine.Application
  23. {
  24. public class CreateItemLotApp : RepositoryFactory<ICSPO_PoMain>
  25. {
  26. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  27. {
  28. string ParentId = "";
  29. DataTable dt = new DataTable();
  30. var queryParam = queryJson.ToJObject();
  31. List<DbParameter> parameter = new List<DbParameter>();
  32. string EATTRIBUTE = SqlHelper.GetEATTRIBUTE("ICSPurchaseOrder", "a").TrimEnd(',');
  33. string sql = @"SELECT distinct a.ID, a.POCode,a.Sequence,CONVERT(NVARCHAR(15),a.CreateDateTime,23) AS PODate,
  34. a.ExtensionID,a.VenCode,ee.VenName,a.InvCode,cc.NGQTY AS RefuseLotQty,dd.returnqty AS BackLotQty,
  35. b.InvName,b.InvStd,b.InvUnit,a.Quantity,ISNULL(bb.LotQty,0) AS LotQty ,b.InvDesc,b.ClassCode,isnull(InQuantity,0) as InQuantity,a.WorkPoint as WorkPointCode
  36. ,CreatePerson,e.ProjectCode,a.SignBackStatus as SignBackStatus ," + EATTRIBUTE + "";
  37. sql+= @",a.MTIME,isnull(b.EATTRIBUTE2,0) as MINQty
  38. ,b.EffectiveDays,b.EffectiveEnable
  39. FROM dbo.ICSPurchaseOrder a
  40. LEFT JOIN dbo.ICSExtension e ON a.ExtensionID=e.ID AND a.WorkPoint=e.WorkPoint
  41. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  42. LEFT JOIN (
  43. SELECT mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY ,ee.WorkPoint
  44. FROM ICSInventoryLot ee
  45. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo
  46. WHERE ISNULL(ee.EATTRIBUTE1,'')=''
  47. group by mm.TransCode,mm.TransSequence,ee.WorkPoint ) bb
  48. on a.POCode=bb.TransCode and a.Sequence=bb.TransSequence AND a.WorkPoint=bb.WorkPoint
  49. left join (
  50. select c.TransCode,c.TransSequence,SUM(ISNULL(a.Quantity,0)) NGQTY,a.WorkPoint
  51. from ICSDeliveryNotice a
  52. left join ICSInventoryLot b on a.EATTRIBUTE1=b.LotNo
  53. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo
  54. group by c.TransCode,c.TransSequence,a.WorkPoint,DNType having a.DNType='3') cc
  55. on a.POCode=cc.TransCode and a.Sequence=cc.TransSequence AND a.WorkPoint=cc.WorkPoint
  56. left join (
  57. select b.POCode,b.Sequence,sum(isnull(a.Quantity,0)) returnqty ,a.WorkPoint
  58. FROM ICSDeliveryNotice a
  59. left join ICSPurchaseOrder b on a.PODetailID=b.PODetailID
  60. group by b.POCode,b.Sequence,a.DNType,a.WorkPoint having a.DNType='2'
  61. UNION ALL
  62. SELECT b.POCode,b.Sequence,sum(isnull(a.RCVQuantity,0)) returnqty ,a.WorkPoint
  63. FROM ICSPurchaseReceive a
  64. left join ICSDeliveryNotice aa on aa.DNCode=a.SourceCode and aa.Sequence=a.SourceSequence and a.WorkPoint=aa.WorkPoint
  65. left join ICSPurchaseOrder b on aa.PODetailID=b.PODetailID and b.WorkPoint=aa.WorkPoint
  66. group by a.RCVCode,b.POCode,b.Sequence,a.WorkPoint
  67. UNION ALL
  68. SELECT b.POCode,b.Sequence,sum(isnull(a.RCVQuantity,0)) returnqty ,a.WorkPoint
  69. FROM ICSPurchaseReceive a
  70. left join ICSPurchaseOrder b on a.SourceCode=b.POCode and a.SourceSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  71. group by a.RCVCode,b.POCode,b.Sequence,a.WorkPoint ) dd
  72. on a.POCode=dd.POCode and a.Sequence=dd.Sequence AND a.WorkPoint=dd.WorkPoint
  73. left join ICSVendor ee on a.VenCode=ee.VenCode and a.WorkPoint=ee.WorkPoint
  74. WHERE 1=1 AND a.ReleaseState = '1' and a.Status<>'3'";
  75. if (!string.IsNullOrWhiteSpace(queryJson))
  76. {
  77. if (!string.IsNullOrWhiteSpace(queryParam["ORDERNO"].ToString()))
  78. {
  79. sql += " and a.ExtensionID like '%" + queryParam["ORDERNO"].ToString() + "%' ";
  80. }
  81. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  82. {
  83. sql += " and a.POCode like '%" + queryParam["POCode"].ToString() + "%' ";
  84. }
  85. if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  86. {
  87. sql += " and CONVERT(NVARCHAR(15),a.CreateDateTime,23) >='" + queryParam["BeginDate"].ToString() + "' ";
  88. }
  89. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  90. {
  91. sql += " and CONVERT(NVARCHAR(15),a.CreateDateTime,23) <='" + queryParam["EndDate"].ToString() + "'";
  92. }
  93. if (!string.IsNullOrWhiteSpace(queryParam["BeginMTIME"].ToString()))
  94. {
  95. sql += " and CONVERT(NVARCHAR(15),a.MTIME,23) >='" + queryParam["BeginMTIME"].ToString() + "' ";
  96. }
  97. if (!string.IsNullOrWhiteSpace(queryParam["EndMTIME"].ToString()))
  98. {
  99. sql += " and CONVERT(NVARCHAR(15),a.MTIME,23) <='" + queryParam["EndMTIME"].ToString() + "'";
  100. }
  101. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  102. {
  103. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  104. }
  105. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  106. {
  107. sql += " and ee.VenName like '%" + queryParam["VenName"].ToString() + "%'";
  108. }
  109. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  110. {
  111. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%'";
  112. }
  113. if (!string.IsNullOrWhiteSpace(queryParam["EATTRIBUTE12"].ToString()))
  114. {
  115. sql += " and a.EATTRIBUTE12 like '%" + queryParam["EATTRIBUTE12"].ToString() + "%'";
  116. }
  117. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  118. {
  119. string POStatus = queryParam["POStatus"].ToString();
  120. if (POStatus == "0")
  121. {
  122. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  123. }
  124. else if (POStatus == "1")
  125. {
  126. sql += " and a.Quantity=ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)";
  127. }
  128. else
  129. {
  130. sql += " and a.Quantity>ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)";
  131. }
  132. }
  133. }
  134. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  135. {
  136. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  137. }
  138. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  139. {
  140. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode + "'";
  141. }
  142. ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  143. if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  144. {
  145. return SqlHelper.FindTablePageBySql_OtherTemp(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  146. }
  147. else
  148. {
  149. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  150. }
  151. }
  152. public DataTable GetGridJsonByBB(string queryJson, ref Pagination jqgridparam)
  153. {
  154. string ParentId = "";
  155. DataTable dt = new DataTable();
  156. var queryParam = queryJson.ToJObject();
  157. List<DbParameter> parameter = new List<DbParameter>();
  158. string EATTRIBUTE = SqlHelper.GetEATTRIBUTE("ICSPurchaseOrder", "a").TrimEnd(',');
  159. string sql = @"SELECT a.ID, a.POCode,a.Sequence,CONVERT(NVARCHAR(15),a.CreateDateTime,23) AS PODate,mm.SHQTY,
  160. a.ExtensionID,a.VenCode,ee.VenName,a.InvCode,cc.NGQTY AS RefuseLotQty,dd.returnqty AS BackLotQty,
  161. b.InvName,b.InvStd,b.InvUnit,a.Quantity,ISNULL(bb.LotQty,0) AS LotQty ,b.InvDesc,b.ClassCode,isnull(InQuantity,0) as InQuantity,a.WorkPoint as WorkPointCode
  162. ,CreatePerson,e.ProjectCode,a.SignBackStatus as SignBackStatus ," + EATTRIBUTE + "";
  163. sql += @",a.MTIME,isnull(b.EATTRIBUTE2,0) as MINQty
  164. ,b.EffectiveDays,b.EffectiveEnable,c.InQty
  165. FROM dbo.ICSPurchaseOrder a
  166. LEFT JOIN dbo.ICSExtension e ON a.ExtensionID=e.ID AND a.WorkPoint=e.WorkPoint
  167. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  168. left join (
  169. select a.TransCode,a.TransSequence,sum(b.Quantity) as SHQTY from dbo.ICSInventoryLotDetail a
  170. inner join dbo.ICSASNDetail b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  171. group by a.TransCode,a.TransSequence) mm on a.POCode=mm.TransCode and a.Sequence=mm.TransSequence
  172. LEFT JOIN (
  173. SELECT mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY ,ee.WorkPoint
  174. FROM ICSInventoryLot ee
  175. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo
  176. WHERE ISNULL(ee.EATTRIBUTE1,'')=''
  177. group by mm.TransCode,mm.TransSequence,ee.WorkPoint ) bb
  178. on a.POCode=bb.TransCode and a.Sequence=bb.TransSequence AND a.WorkPoint=bb.WorkPoint
  179. left join (
  180. select c.TransCode,c.TransSequence,SUM(ISNULL(a.Quantity,0)) NGQTY,a.WorkPoint
  181. from ICSDeliveryNotice a
  182. left join ICSInventoryLot b on a.EATTRIBUTE1=b.LotNo
  183. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo
  184. group by c.TransCode,c.TransSequence,a.WorkPoint,DNType having a.DNType='3') cc
  185. on a.POCode=cc.TransCode and a.Sequence=cc.TransSequence AND a.WorkPoint=cc.WorkPoint
  186. left join (
  187. select b.POCode,b.Sequence,sum(isnull(a.Quantity,0)) returnqty ,a.WorkPoint
  188. FROM ICSDeliveryNotice a
  189. left join ICSPurchaseOrder b on a.PODetailID=b.PODetailID
  190. group by b.POCode,b.Sequence,a.DNType,a.WorkPoint having a.DNType='2'
  191. UNION ALL
  192. SELECT b.POCode,b.Sequence,sum(isnull(a.RCVQuantity,0)) returnqty ,a.WorkPoint
  193. FROM ICSPurchaseReceive a
  194. left join ICSDeliveryNotice aa on aa.DNCode=a.SourceCode and aa.Sequence=a.SourceSequence and a.WorkPoint=aa.WorkPoint
  195. left join ICSPurchaseOrder b on aa.PODetailID=b.PODetailID and b.WorkPoint=aa.WorkPoint
  196. group by a.RCVCode,b.POCode,b.Sequence,a.WorkPoint
  197. UNION ALL
  198. SELECT b.POCode,b.Sequence,sum(isnull(a.RCVQuantity,0)) returnqty ,a.WorkPoint
  199. FROM ICSPurchaseReceive a
  200. left join ICSPurchaseOrder b on a.SourceCode=b.POCode and a.SourceSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  201. group by a.RCVCode,b.POCode,b.Sequence,a.WorkPoint ) dd
  202. on a.POCode=dd.POCode and a.Sequence=dd.Sequence AND a.WorkPoint=dd.WorkPoint
  203. left join ICSVendor ee on a.VenCode=ee.VenCode and a.WorkPoint=ee.WorkPoint
  204. LEFT JOIN (
  205. SELECT SUM(x.Quantity) CreatedQty,z.TransCode,z.TransSequence,x.WorkPoint,
  206. SUM(CASE WHEN y.LotNO IS NOT NULL THEN x.Quantity ELSE 0 END) AS InQty
  207. FROM dbo.ICSInventoryLot x
  208. LEFT JOIN dbo.ICSWareHouseLotInfo y ON x.LotNO=y.LotNO AND x.WorkPoint=y.WorkPoint
  209. left join ICSInventoryLotDetail z on x.LotNo=z.LotNo
  210. WHERE ISNULL(x.EATTRIBUTE1,'')=''
  211. GROUP BY z.TransCode,z.TransSequence,x.WorkPoint
  212. ) c ON a.POCode=c.TransCode AND a.Sequence=c.TransSequence AND a.WorkPoint=c.WorkPoint
  213. WHERE 1=1 AND a.ReleaseState = '1' and a.Status<>'3'";
  214. if (!string.IsNullOrWhiteSpace(queryJson))
  215. {
  216. if (!string.IsNullOrWhiteSpace(queryParam["ORDERNO"].ToString()))
  217. {
  218. sql += " and a.ExtensionID like '%" + queryParam["ORDERNO"].ToString() + "%' ";
  219. }
  220. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  221. {
  222. sql += " and a.POCode like '%" + queryParam["POCode"].ToString() + "%' ";
  223. }
  224. if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  225. {
  226. sql += " and CONVERT(NVARCHAR(15),a.CreateDateTime,23) >='" + queryParam["BeginDate"].ToString() + "' ";
  227. }
  228. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  229. {
  230. sql += " and CONVERT(NVARCHAR(15),a.CreateDateTime,23) <='" + queryParam["EndDate"].ToString() + "'";
  231. }
  232. if (!string.IsNullOrWhiteSpace(queryParam["BeginMTIME"].ToString()))
  233. {
  234. sql += " and CONVERT(NVARCHAR(15),a.MTIME,23) >='" + queryParam["BeginMTIME"].ToString() + "' ";
  235. }
  236. if (!string.IsNullOrWhiteSpace(queryParam["EndMTIME"].ToString()))
  237. {
  238. sql += " and CONVERT(NVARCHAR(15),a.MTIME,23) <='" + queryParam["EndMTIME"].ToString() + "'";
  239. }
  240. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  241. {
  242. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  243. }
  244. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  245. {
  246. sql += " and ee.VenName like '%" + queryParam["VenName"].ToString() + "%'";
  247. }
  248. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  249. {
  250. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%'";
  251. }
  252. if (!string.IsNullOrWhiteSpace(queryParam["EATTRIBUTE12"].ToString()))
  253. {
  254. sql += " and a.EATTRIBUTE12 like '%" + queryParam["EATTRIBUTE12"].ToString() + "%'";
  255. }
  256. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  257. {
  258. string POStatus = queryParam["POStatus"].ToString();
  259. if (POStatus == "0")
  260. {
  261. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  262. }
  263. else if (POStatus == "1")
  264. {
  265. sql += " and a.Quantity=ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)";
  266. }
  267. else
  268. {
  269. sql += " and a.Quantity>ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)";
  270. }
  271. }
  272. }
  273. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  274. {
  275. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  276. }
  277. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  278. {
  279. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode + "'";
  280. }
  281. ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  282. if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  283. {
  284. return SqlHelper.FindTablePageBySql_OtherTemp(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  285. }
  286. else
  287. {
  288. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  289. }
  290. }
  291. public DataTable GetGridJsonWeiWai(string queryJson, ref Pagination jqgridparam)
  292. {
  293. string ParentId = "";
  294. DataTable dt = new DataTable();
  295. var queryParam = queryJson.ToJObject();
  296. List<DbParameter> parameter = new List<DbParameter>();
  297. string EATTRIBUTE = SqlHelper.GetEATTRIBUTE("ICSPurchaseOrder","a").TrimEnd(',');
  298. string sql = @" SELECT a.ID, a.OOCode,a.Sequence,CONVERT(NVARCHAR(15),a.CreateDateTime,23) AS PODate,a.OODetailID,
  299. a.ExtensionID,a.VenCode,ee.VenName,a.InvCode,cc.NGQTY AS RefuseLotQty,dd.returnqty AS BackLotQty,
  300. b.InvName,b.InvStd,b.InvUnit,a.Quantity,ISNULL(bb.LotQty,0) AS LotQty ,b.InvDesc,b.ClassCode,isnull(InQuantity,0) as InQuantity,a.WorkPoint as WorkPointCode,e.ProjectCode," + EATTRIBUTE + "";
  301. sql+= @",a.MTIME,isnull(b.EATTRIBUTE2,0) as MINQty
  302. ,b.EffectiveDays,b.EffectiveEnable
  303. FROM dbo.ICSOutsourcingOrder a
  304. LEFT JOIN dbo.ICSExtension e ON a.ExtensionID=e.ID AND a.WorkPoint=e.WorkPoint
  305. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  306. LEFT JOIN (
  307. SELECT mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY ,ee.WorkPoint
  308. FROM ICSInventoryLot ee
  309. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo
  310. WHERE ISNULL(ee.EATTRIBUTE1,'')=''
  311. group by mm.TransCode,mm.TransSequence,ee.WorkPoint ) bb
  312. on a.OOCode=bb.TransCode and a.Sequence=bb.TransSequence AND a.WorkPoint=bb.WorkPoint
  313. left join (
  314. select c.TransCode,c.TransSequence,SUM(ISNULL(a.Quantity,0)) NGQTY,a.WorkPoint
  315. from ICSODeliveryNotice a
  316. left join ICSInventoryLot b on a.EATTRIBUTE1=b.LotNo
  317. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo
  318. group by c.TransCode,c.TransSequence,a.WorkPoint,ODNType having a.ODNType='3') cc
  319. on a.OOCode=cc.TransCode and a.Sequence=cc.TransSequence AND a.WorkPoint=cc.WorkPoint
  320. left join (select b.OOCode,b.Sequence,sum(isnull(a.Quantity,0)) returnqty ,a.WorkPoint
  321. FROM ICSODeliveryNotice a
  322. left join ICSOutsourcingOrder b on a.OODetailID=b.OODetailID
  323. group by b.OOCode,b.Sequence,a.ODNType,a.WorkPoint having a.ODNType='2'
  324. UNION ALL
  325. SELECT b.OOCode,b.Sequence,sum(isnull(a.RCVQuantity,0)) returnqty ,a.WorkPoint
  326. FROM ICSPurchaseReceive a
  327. left join ICSDeliveryNotice aa on aa.DNCode=a.SourceCode and aa.Sequence=a.SourceSequence and a.WorkPoint=aa.WorkPoint
  328. left join ICSOutsourcingOrder b on aa.PODetailID=b.OODetailID and b.WorkPoint=aa.WorkPoint
  329. group by a.RCVCode,b.OOCode,b.Sequence,a.WorkPoint
  330. UNION ALL
  331. SELECT b.OOCode,b.Sequence,sum(isnull(a.RCVQuantity,0)) returnqty ,a.WorkPoint
  332. FROM ICSPurchaseReceive a
  333. left join ICSOutsourcingOrder b on a.SourceCode=b.OOCode and a.SourceSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  334. group by a.RCVCode,b.OOCode,b.Sequence,a.WorkPoint ) dd
  335. on a.OOCode=dd.OOCode and a.Sequence=dd.Sequence AND a.WorkPoint=dd.WorkPoint
  336. left join ICSVendor ee on a.VenCode=ee.VenCode and a.WorkPoint=ee.WorkPoint
  337. WHERE 1=1 AND a.ReleaseState = '1' and a.Status<>'3'";
  338. if (!string.IsNullOrWhiteSpace(queryJson))
  339. {
  340. if (!string.IsNullOrWhiteSpace(queryParam["ORDERNO"].ToString()))
  341. {
  342. sql += " and a.ExtensionID like '%" + queryParam["ORDERNO"].ToString() + "%' ";
  343. }
  344. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  345. {
  346. sql += " and a.OOCode like '%" + queryParam["POCode"].ToString() + "%' ";
  347. }
  348. if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  349. {
  350. sql += " and a.ReleaseDate >='" + queryParam["BeginDate"].ToString() + "' ";
  351. }
  352. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  353. {
  354. sql += " and a.ReleaseDate <='" + queryParam["EndDate"].ToString() + "'";
  355. }
  356. if (!string.IsNullOrWhiteSpace(queryParam["BeginMTIME"].ToString()))
  357. {
  358. sql += " and CONVERT(NVARCHAR(15),a.MTIME,23) >='" + queryParam["BeginMTIME"].ToString() + "' ";
  359. }
  360. if (!string.IsNullOrWhiteSpace(queryParam["EndMTIME"].ToString()))
  361. {
  362. sql += " and CONVERT(NVARCHAR(15),a.MTIME,23) <='" + queryParam["EndMTIME"].ToString() + "'";
  363. }
  364. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  365. {
  366. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  367. }
  368. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  369. {
  370. sql += " and ee.VenName like '%" + queryParam["VenName"].ToString() + "%'";
  371. }
  372. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  373. {
  374. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%'";
  375. }
  376. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  377. {
  378. string POStatus = queryParam["POStatus"].ToString();
  379. if (POStatus == "0")
  380. {
  381. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  382. }
  383. else if (POStatus == "1")
  384. {
  385. sql += " and a.Quantity=ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)";
  386. }
  387. else
  388. {
  389. sql += " and a.Quantity>ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)";
  390. }
  391. }
  392. }
  393. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  394. {
  395. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  396. }
  397. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  398. {
  399. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode + "'";
  400. }
  401. ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  402. if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  403. {
  404. return SqlHelper.FindTablePageBySql_OtherTemp(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  405. }
  406. else
  407. {
  408. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  409. }
  410. }
  411. public DataTable GetGridJsonWeiWaiByBB(string queryJson, ref Pagination jqgridparam)
  412. {
  413. string ParentId = "";
  414. DataTable dt = new DataTable();
  415. var queryParam = queryJson.ToJObject();
  416. List<DbParameter> parameter = new List<DbParameter>();
  417. string EATTRIBUTE = SqlHelper.GetEATTRIBUTE("ICSPurchaseOrder", "a").TrimEnd(',');
  418. string sql = @" SELECT a.ID, a.OOCode,a.Sequence,CONVERT(NVARCHAR(15),a.CreateDateTime,23) AS PODate,a.OODetailID,mm.SHQTY,
  419. a.ExtensionID,a.VenCode,ee.VenName,a.InvCode,cc.NGQTY AS RefuseLotQty,dd.returnqty AS BackLotQty,
  420. b.InvName,b.InvStd,b.InvUnit,a.Quantity,ISNULL(bb.LotQty,0) AS LotQty ,b.InvDesc,b.ClassCode,isnull(InQuantity,0) as InQuantity,a.WorkPoint as WorkPointCode,e.ProjectCode," + EATTRIBUTE + "";
  421. sql += @",a.MTIME,isnull(b.EATTRIBUTE2,0) as MINQty
  422. ,b.EffectiveDays,b.EffectiveEnable,c.InQty
  423. FROM dbo.ICSOutsourcingOrder a
  424. LEFT JOIN dbo.ICSExtension e ON a.ExtensionID=e.ID AND a.WorkPoint=e.WorkPoint
  425. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  426. left join (
  427. select a.TransCode,a.TransSequence,sum(b.Quantity) as SHQTY from dbo.ICSInventoryLotDetail a
  428. inner join dbo.ICSOASNDetail b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  429. group by a.TransCode,a.TransSequence) mm on a.OOCode=mm.TransCode and a.Sequence=mm.TransSequence
  430. LEFT JOIN (
  431. SELECT mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY ,ee.WorkPoint
  432. FROM ICSInventoryLot ee
  433. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo
  434. WHERE ISNULL(ee.EATTRIBUTE1,'')=''
  435. group by mm.TransCode,mm.TransSequence,ee.WorkPoint ) bb
  436. on a.OOCode=bb.TransCode and a.Sequence=bb.TransSequence AND a.WorkPoint=bb.WorkPoint
  437. left join (
  438. select c.TransCode,c.TransSequence,SUM(ISNULL(a.Quantity,0)) NGQTY,a.WorkPoint
  439. from ICSODeliveryNotice a
  440. left join ICSInventoryLot b on a.EATTRIBUTE1=b.LotNo
  441. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo
  442. group by c.TransCode,c.TransSequence,a.WorkPoint,ODNType having a.ODNType='3') cc
  443. on a.OOCode=cc.TransCode and a.Sequence=cc.TransSequence AND a.WorkPoint=cc.WorkPoint
  444. left join (select b.OOCode,b.Sequence,sum(isnull(a.Quantity,0)) returnqty ,a.WorkPoint
  445. FROM ICSODeliveryNotice a
  446. left join ICSOutsourcingOrder b on a.OODetailID=b.OODetailID
  447. group by b.OOCode,b.Sequence,a.ODNType,a.WorkPoint having a.ODNType='2'
  448. UNION ALL
  449. SELECT b.OOCode,b.Sequence,sum(isnull(a.RCVQuantity,0)) returnqty ,a.WorkPoint
  450. FROM ICSPurchaseReceive a
  451. left join ICSDeliveryNotice aa on aa.DNCode=a.SourceCode and aa.Sequence=a.SourceSequence and a.WorkPoint=aa.WorkPoint
  452. left join ICSOutsourcingOrder b on aa.PODetailID=b.OODetailID and b.WorkPoint=aa.WorkPoint
  453. group by a.RCVCode,b.OOCode,b.Sequence,a.WorkPoint
  454. UNION ALL
  455. SELECT b.OOCode,b.Sequence,sum(isnull(a.RCVQuantity,0)) returnqty ,a.WorkPoint
  456. FROM ICSPurchaseReceive a
  457. left join ICSOutsourcingOrder b on a.SourceCode=b.OOCode and a.SourceSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  458. group by a.RCVCode,b.OOCode,b.Sequence,a.WorkPoint ) dd
  459. on a.OOCode=dd.OOCode and a.Sequence=dd.Sequence AND a.WorkPoint=dd.WorkPoint
  460. left join ICSVendor ee on a.VenCode=ee.VenCode and a.WorkPoint=ee.WorkPoint
  461. LEFT JOIN (
  462. SELECT SUM(x.Quantity) CreatedQty,z.TransCode,z.TransSequence,x.WorkPoint,
  463. SUM(CASE WHEN y.LotNO IS NOT NULL THEN x.Quantity ELSE 0 END) AS InQty
  464. FROM dbo.ICSInventoryLot x
  465. LEFT JOIN dbo.ICSWareHouseLotInfo y ON x.LotNO=y.LotNO AND x.WorkPoint=y.WorkPoint
  466. left join ICSInventoryLotDetail z on x.LotNo=z.LotNo
  467. WHERE ISNULL(x.EATTRIBUTE1,'')=''
  468. GROUP BY z.TransCode,z.TransSequence,x.WorkPoint
  469. ) c ON a.OOCode=c.TransCode AND a.Sequence=c.TransSequence AND a.WorkPoint=c.WorkPoint
  470. WHERE 1=1 AND a.ReleaseState = '1' and a.Status<>'3'";
  471. if (!string.IsNullOrWhiteSpace(queryJson))
  472. {
  473. if (!string.IsNullOrWhiteSpace(queryParam["ORDERNO"].ToString()))
  474. {
  475. sql += " and a.ExtensionID like '%" + queryParam["ORDERNO"].ToString() + "%' ";
  476. }
  477. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  478. {
  479. sql += " and a.OOCode like '%" + queryParam["POCode"].ToString() + "%' ";
  480. }
  481. if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  482. {
  483. sql += " and a.ReleaseDate >='" + queryParam["BeginDate"].ToString() + "' ";
  484. }
  485. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  486. {
  487. sql += " and a.ReleaseDate <='" + queryParam["EndDate"].ToString() + "'";
  488. }
  489. if (!string.IsNullOrWhiteSpace(queryParam["BeginMTIME"].ToString()))
  490. {
  491. sql += " and CONVERT(NVARCHAR(15),a.MTIME,23) >='" + queryParam["BeginMTIME"].ToString() + "' ";
  492. }
  493. if (!string.IsNullOrWhiteSpace(queryParam["EndMTIME"].ToString()))
  494. {
  495. sql += " and CONVERT(NVARCHAR(15),a.MTIME,23) <='" + queryParam["EndMTIME"].ToString() + "'";
  496. }
  497. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  498. {
  499. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  500. }
  501. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  502. {
  503. sql += " and ee.VenName like '%" + queryParam["VenName"].ToString() + "%'";
  504. }
  505. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  506. {
  507. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%'";
  508. }
  509. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  510. {
  511. string POStatus = queryParam["POStatus"].ToString();
  512. if (POStatus == "0")
  513. {
  514. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  515. }
  516. else if (POStatus == "1")
  517. {
  518. sql += " and a.Quantity=ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)";
  519. }
  520. else
  521. {
  522. sql += " and a.Quantity>ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)";
  523. }
  524. }
  525. }
  526. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  527. {
  528. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  529. }
  530. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  531. {
  532. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode + "'";
  533. }
  534. ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  535. if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  536. {
  537. return SqlHelper.FindTablePageBySql_OtherTemp(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  538. }
  539. else
  540. {
  541. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  542. }
  543. }
  544. /// <summary>
  545. /// 子表查询
  546. /// </summary>
  547. /// <param name="queryJson"></param>
  548. /// <param name="jqgridparam"></param>
  549. /// <returns></returns>
  550. public DataTable GetSubGridJson(string POCode, string PORow, string WorkPoint,ref Pagination jqgridparam)
  551. {
  552. DataTable dt = new DataTable();
  553. //var queryParam = queryJson.ToJObject();
  554. List<DbParameter> parameter = new List<DbParameter>();
  555. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  556. string sql = @"SELECT c.TransCode,c.TransSequence,a.ID,a.LotNO,a.Quantity,a.PrintTimes,a.ProductDate,
  557. CASE WHEN b.LotNoCount>0 THEN b.Quantity ELSE 0 END AS ruku,a.LastPrintTime,a.WorkPoint
  558. ,x.ContainerCode as XH,
  559. y.ContainerCode as ZB,z.ASNCode
  560. FROM dbo.ICSInventoryLot a
  561. LEFT JOIN (SELECT COUNT(LotNO) LotNoCount,LotNO,WorkPoint,
  562. Quantity from dbo.ICSWareHouseLotInfolog
  563. where BusinessCode='1'
  564. group BY LotNO,WorkPoint,Quantity) b ON a.LotNO=b.LotNO AND a.WorkPoint=b.WorkPoint
  565. inner join ICSInventoryLotDetail c on a.LotNo=c.LotNo
  566. LEFT JOIN dbo.ICSContainerLot d ON c.LotNo=d.LotNo AND a.WorkPoint=d.WorkPoint
  567. LEFT JOIN ICSContainer X ON d.ContainerID=X.ID AND c.WorkPoint=x.WorkPoint and X.ContainerType='ContainerType01'
  568. left join ICSContainer y on X.ContainerID=y.ID and X.WorkPoint=y.WorkPoint and y.ContainerType='ContainerType04'
  569. LEFT JOIN dbo.ICSASNDetail z ON c.LotNo=z.LotNo AND c.WorkPoint=z.WorkPoint
  570. WHERE c.TransCode='" + POCode + "' and c.TransSequence='" + PORow + "' and a.WorkPoint in ('" + WorkPoint + "') and ISNULL(a.EATTRIBUTE1,'') =''";
  571. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  572. }
  573. /// <summary>
  574. /// 委外子表查询
  575. /// </summary>
  576. /// <param name="queryJson"></param>
  577. /// <param name="jqgridparam"></param>
  578. /// <returns></returns>
  579. public DataTable GetSubGridJsonByWeiWai(string POCode, string PORow, string WorkPoint, ref Pagination jqgridparam)
  580. {
  581. DataTable dt = new DataTable();
  582. //var queryParam = queryJson.ToJObject();
  583. List<DbParameter> parameter = new List<DbParameter>();
  584. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  585. string sql = @"SELECT c.TransCode,c.TransSequence,a.ID,a.LotNO,a.Quantity,a.PrintTimes,a.ProductDate,
  586. CASE WHEN b.LotNoCount>0 THEN b.Quantity ELSE 0 END AS ruku,a.LastPrintTime,a.WorkPoint
  587. ,x.ContainerCode as XH,
  588. y.ContainerCode as ZB,z.ASNCode
  589. FROM dbo.ICSInventoryLot a
  590. LEFT JOIN (SELECT COUNT(LotNO) LotNoCount,LotNO,WorkPoint,
  591. Quantity from dbo.ICSWareHouseLotInfolog
  592. where BusinessCode='9'
  593. group BY LotNO,WorkPoint,Quantity) b ON a.LotNO=b.LotNO AND a.WorkPoint=b.WorkPoint
  594. left join ICSInventoryLotDetail c on a.LotNo=c.LotNo
  595. LEFT JOIN dbo.ICSContainerLot d ON a.LotNo=d.LotNo AND a.WorkPoint=d.WorkPoint
  596. LEFT JOIN ICSContainer X ON d.ContainerID=X.ID AND c.WorkPoint=x.WorkPoint and X.ContainerType='ContainerType01'
  597. left join ICSContainer y on X.ContainerID=y.ID and X.WorkPoint=y.WorkPoint and y.ContainerType='ContainerType04'
  598. LEFT JOIN dbo.ICSASNDetail z ON c.LotNo=z.LotNo AND c.WorkPoint=z.WorkPoint
  599. WHERE c.TransCode='" + POCode + "' and c.TransSequence='" + PORow + "' and a.WorkPoint in ('" + WorkPoint + "') and ISNULL(a.EATTRIBUTE1,'') =''";
  600. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  601. }
  602. /// <summary>
  603. /// 点击生成条码
  604. /// </summary>
  605. /// <param name="POCode">采购订单</param>
  606. /// <param name="PORow">采购订单行</param>
  607. /// <param name="WorkPoint">多站点</param>
  608. /// 已改
  609. /// <returns></returns>
  610. public DataTable GetSubGridJsonByCreate(string POCode, string PORow, string WorkPoint)
  611. {
  612. DataTable dt = new DataTable();
  613. //var queryParam = queryJson.ToJObject();
  614. List<DbParameter> parameter = new List<DbParameter>();
  615. string sql = @" SELECT a.ID, a.POCode,a.Sequence, CONVERT(NVARCHAR(50),a.CreateDateTime,23) as PODate,a.ExtensionID,a.VenCode,mm.VenName,a.InvCode,
  616. (a.Quantity-ISNULL(bb.LOTQTY,0)+isnull(cc.NGQTY,0)+isnull(dd.returnqty,0)) as thisCreateQty,
  617. b.InvName,b.InvStd,b.InvDesc,b.InvUnit,a.Quantity,isnull(c.InQty,0) as InQty,a.WorkPoint,ISNULL(bb.LOTQTY,0) AS CreatedQty,
  618. isnull(cc.NGQTY,0) AS RefuseLotQty,isnull(dd.returnqty,0) AS BackLotQty,ISNULL(ee.repairqty,0) AS RepairQty,
  619. isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(18,2)) as EffectiveDays ,
  620. CAST( a.Amount as DECIMAL(18,2)) as Amount
  621. FROM dbo.ICSPurchaseOrder a
  622. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  623. left join (
  624. SELECT b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY
  625. FROM ICSInventoryLot a
  626. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo
  627. WHERE ISNULL(a.EATTRIBUTE1,'')=''
  628. group by b.TransCode,b.TransSequence
  629. ) bb on a.POCode=bb.TransCode and a.Sequence=bb.TransSequence
  630. left join (
  631. select c.TransCode,c.TransSequence,SUM(ISNULL(a.Quantity,0)) NGQTY,a.WorkPoint
  632. from ICSDeliveryNotice a
  633. left join ICSInventoryLot b on a.EATTRIBUTE1=b.LotNo
  634. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo
  635. group by c.TransCode,c.TransSequence,a.WorkPoint,DNType having a.DNType='3'
  636. ) cc on a.POCode=cc.TransCode and a.Sequence=cc.TransSequence
  637. left join (
  638. select b.POCode,b.Sequence,sum(isnull(a.Quantity,0)) returnqty ,a.WorkPoint
  639. FROM ICSDeliveryNotice a
  640. left join ICSPurchaseOrder b on a.PODetailID=b.PODetailID
  641. group by b.POCode,b.Sequence,a.DNType,a.WorkPoint having a.DNType='2'
  642. UNION ALL
  643. SELECT b.POCode,b.Sequence,sum(isnull(a.RCVQuantity,0)) returnqty ,a.WorkPoint
  644. FROM ICSPurchaseReceive a
  645. left join ICSDeliveryNotice aa on aa.DNCode=a.SourceCode and aa.Sequence=a.SourceSequence and a.WorkPoint=aa.WorkPoint
  646. left join ICSPurchaseOrder b on aa.PODetailID=b.PODetailID and b.WorkPoint=aa.WorkPoint
  647. group by a.RCVCode,b.POCode,b.Sequence,a.WorkPoint
  648. UNION ALL
  649. SELECT b.POCode,b.Sequence,sum(isnull(a.RCVQuantity,0)) returnqty ,a.WorkPoint
  650. FROM ICSPurchaseReceive a
  651. left join ICSPurchaseOrder b on a.SourceCode=b.POCode and a.SourceSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  652. group by a.RCVCode,b.POCode,b.Sequence,a.WorkPoint) dd
  653. on a.POCode=dd.POCode and a.Sequence=dd.Sequence
  654. LEFT JOIN (
  655. SELECT SUM(x.Quantity) CreatedQty,z.TransCode,z.TransSequence,x.WorkPoint,
  656. SUM(CASE WHEN y.LotNO IS NOT NULL THEN x.Quantity ELSE 0 END) AS InQty
  657. FROM dbo.ICSInventoryLot x
  658. LEFT JOIN dbo.ICSWareHouseLotInfo y ON x.LotNO=y.LotNO AND x.WorkPoint=y.WorkPoint
  659. left join ICSInventoryLotDetail z on x.LotNo=z.LotNo
  660. WHERE ISNULL(x.EATTRIBUTE1,'')=''
  661. GROUP BY z.TransCode,z.TransSequence,x.WorkPoint
  662. ) c ON a.POCode=c.TransCode AND a.Sequence=c.TransSequence AND a.WorkPoint=c.WorkPoint
  663. LEFT JOIN (SELECT c.TransCode,c.TransSequence,
  664. 0 AS repairqty,a.WorkPoint
  665. FROM ICSASNDetail a
  666. LEFT JOIN ICSInventoryLot b ON a.LotNO = b.LotNO AND a.WorkPoint = b.WorkPoint
  667. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo and b.WorkPoint=c.WorkPoint
  668. GROUP BY c.TransCode,c.TransSequence,a.WorkPoint
  669. ) ee ON a.POCode = ee.TransCode AND a.Sequence = ee.TransSequence AND a.WorkPoint = ee.WorkPoint
  670. left join ICSVendor mm on a.VenCode=mm.VenCode and a.WorkPoint=mm.WorkPoint
  671. WHERE 1 =1
  672. and a.POCode='" + POCode + "' and a.Sequence='" + PORow + "'";
  673. sql += " and a.WorkPoint='" +WorkPoint+ "'";
  674. return Repository().FindTableBySql(sql.ToString());
  675. }
  676. /// <summary>
  677. /// 点击生成条码
  678. /// </summary>
  679. /// <param name="POCode">采购订单</param>
  680. /// <param name="PORow">采购订单行</param>
  681. /// <param name="WorkPoint">多站点</param>
  682. /// 已改
  683. /// <returns></returns>
  684. public DataTable GetSubGridJsonByCreateWeiWai(string OOCode, string Sequence, string WorkPoint)
  685. {
  686. DataTable dt = new DataTable();
  687. //var queryParam = queryJson.ToJObject();
  688. //string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  689. List<DbParameter> parameter = new List<DbParameter>();
  690. string sql = @"
  691. SELECT a.ID, pp.Enable,a.OOCode,a.Sequence,CAST( a.Amount as DECIMAL(18,2)) as Amount, CONVERT(NVARCHAR(50),a.CreateDateTime,23) as PODate,a.ExtensionID,a.VenCode,mm.VenName,a.InvCode,
  692. (a.Quantity-ISNULL(bb.LOTQTY,0)+isnull(cc.NGQTY,0)+isnull(dd.returnqty,0)) as thisCreateQty,
  693. b.InvName,b.InvStd,b.InvDesc,b.InvUnit,a.Quantity,isnull(c.InQty,0) as InQty,a.WorkPoint,ISNULL(bb.LOTQTY,0) AS CreatedQty,
  694. isnull(cc.NGQTY,0) AS RefuseLotQty,isnull(dd.returnqty,0) AS BackLotQty,ISNULL(ee.repairqty,0) AS RepairQty,
  695. isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(18,2)) as EffectiveDays
  696. FROM dbo.ICSOutsourcingOrder a
  697. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  698. left join (
  699. SELECT b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY
  700. FROM ICSInventoryLot a
  701. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo
  702. WHERE ISNULL(a.EATTRIBUTE1,'')=''
  703. group by b.TransCode,b.TransSequence
  704. ) bb on a.OOCode=bb.TransCode and a.Sequence=bb.TransSequence
  705. left join (
  706. select c.TransCode,c.TransSequence,SUM(ISNULL(a.Quantity,0)) NGQTY,a.WorkPoint
  707. from ICSODeliveryNotice a
  708. left join ICSInventoryLot b on a.EATTRIBUTE1=b.LotNo
  709. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo
  710. group by c.TransCode,c.TransSequence,a.WorkPoint,ODNType having a.ODNType='3'
  711. ) cc on a.OOCode=cc.TransCode and a.Sequence=cc.TransSequence
  712. left join (
  713. select b.OOCode,b.Sequence,sum(isnull(a.Quantity,0)) returnqty ,a.WorkPoint
  714. from ICSODeliveryNotice a
  715. left join ICSOutsourcingOrder b on a.OODetailID=b.OODetailID
  716. group by b.OOCode,b.Sequence,a.ODNType,a.WorkPoint
  717. having a.ODNType='2'
  718. UNION ALL
  719. SELECT b.OOCode,b.Sequence,sum(isnull(a.RCVQuantity,0)) returnqty ,a.WorkPoint
  720. FROM ICSPurchaseReceive a
  721. left join ICSDeliveryNotice aa on aa.DNCode=a.SourceCode and aa.Sequence=a.SourceSequence and a.WorkPoint=aa.WorkPoint
  722. left join ICSOutsourcingOrder b on aa.PODetailID=b.OODetailID and b.WorkPoint=aa.WorkPoint
  723. group by a.RCVCode,b.OOCode,b.Sequence,a.WorkPoint
  724. UNION ALL
  725. SELECT b.OOCode,b.Sequence,sum(isnull(a.RCVQuantity,0)) returnqty ,a.WorkPoint
  726. FROM ICSPurchaseReceive a
  727. left join ICSOutsourcingOrder b on a.SourceCode=b.OOCode and a.SourceSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  728. group by a.RCVCode,b.OOCode,b.Sequence,a.WorkPoint ) dd
  729. on a.OOCode=dd.OOCode and a.Sequence=dd.Sequence
  730. LEFT JOIN (
  731. SELECT SUM(x.Quantity) CreatedQty,z.TransCode,z.TransSequence,x.WorkPoint,
  732. SUM(CASE WHEN y.LotNO IS NOT NULL THEN x.Quantity ELSE 0 END) AS InQty
  733. FROM dbo.ICSInventoryLot x
  734. LEFT JOIN dbo.ICSWareHouseLotInfo y ON x.LotNO=y.LotNO AND x.WorkPoint=y.WorkPoint
  735. left join ICSInventoryLotDetail z on x.LotNo=z.LotNo
  736. WHERE ISNULL(x.EATTRIBUTE1,'')=''
  737. GROUP BY z.TransCode,z.TransSequence,x.WorkPoint
  738. ) c ON a.OOCode=c.TransCode AND a.Sequence=c.TransSequence AND a.WorkPoint=c.WorkPoint
  739. LEFT JOIN (SELECT c.TransCode,c.TransSequence,
  740. 0 AS repairqty,a.WorkPoint
  741. FROM ICSOASNDetail a
  742. LEFT JOIN ICSInventoryLot b ON a.LotNO = b.LotNO AND a.WorkPoint = b.WorkPoint
  743. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo and b.WorkPoint=c.WorkPoint
  744. GROUP BY c.TransCode,c.TransSequence,a.WorkPoint
  745. ) ee ON a.OOCode = ee.TransCode AND a.Sequence = ee.TransSequence AND a.WorkPoint = ee.WorkPoint
  746. left join ICSVendor mm on a.VenCode=mm.VenCode
  747. left join ICSConfiguration pp on pp.Code='CompleteVerification'
  748. WHERE 1 =1
  749. and a.OOCode='" + OOCode + "' and a.Sequence='" + Sequence + "'";
  750. sql += " and a.WorkPoint='" + WorkPoint + "'";
  751. return Repository().FindTableBySql(sql.ToString());
  752. }
  753. /// <summary>
  754. /// 自动生成批次信息
  755. /// </summary>
  756. /// <param name="InvCode"></param>
  757. /// <param name="WorkPoint"></param>
  758. /// <returns></returns>
  759. public DataTable GetVendorLotNo(string InvCode, string WorkPoint)
  760. {
  761. DataTable dt = new DataTable();
  762. string sqlClass = "SELECT EATTRIBUTE1 FROM ICSInventory WHERE InvCode='{0}'and WorkPoint='{1}'";
  763. sqlClass = string.Format(sqlClass, InvCode, WorkPoint);
  764. DataTable dtClass = SqlHelper.GetDataTableBySql(sqlClass);
  765. string pre = dtClass.Rows[0]["EATTRIBUTE1"].ToString() + DateTime.Now.ToString("yyyyMMdd");
  766. //var queryParam = queryJson.ToJObject();
  767. //List<DbParameter> parameter = new List<DbParameter>();
  768. //string dtPre = DateTime.Now.ToString("yyyyMMdd");
  769. string sql = @"EXEC Addins_GetSerialCode '" + WorkPoint + "','ICSInventoryLot','BatchCode','" + pre + "',4";
  770. return Repository().FindTableBySql(sql.ToString());
  771. }
  772. public string GetPoStatus(string POCode, string PORow)
  773. {
  774. string sqlU9 = "SELECT DBIpAddress,DBName FROM dbo.Sys_DataBase WHERE DBSourceName='ERP'";
  775. DataTable dtU9 = SqlHelper.GetDataTableBySql(sqlU9);
  776. string U9IP = dtU9.Rows[0]["DBIpAddress"].ToString();
  777. string DBName = dtU9.Rows[0]["DBName"].ToString();
  778. string msg = "";
  779. string U9ConnStr = ConfigurationManager.ConnectionStrings["U9connstr"].ConnectionString;
  780. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  781. string sql = string.Format(@"select a.docno,b.DocLineNo,b.status,d.code 组织
  782. from [{0}].{1}.dbo.PM_PurchaseOrder A
  783. LEFT JOIN [{0}].{1}.dbo.PM_POLine B ON A.ID=B.PurchaseOrder and a.Org=b.CurrentOrg
  784. LEFT JOIN [{0}].{1}.dbo.pm_poshipline C ON B.ID=C.poline and a.Org=c.CurrentOrg
  785. left join [{0}].{1}.dbo.Base_Organization d with (nolock) on a.org=d.id
  786. left join [{0}].{1}.dbo.Base_Organization_trl e with (nolock) on d.id=e.ID
  787. WHERE d.code='" + WorkPoint + "'and a.docno='" + POCode + "' and b.doclineno='" + PORow + "'", U9IP, DBName);
  788. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  789. if (dt != null && dt.Rows.Count > 0)
  790. {
  791. string poStatus = dt.Rows[0]["status"].ToString();
  792. if (poStatus != "2")
  793. {
  794. msg = "该订单行不是审核状态,无法生成条码!";
  795. }
  796. }
  797. return msg;
  798. }
  799. /// <summary>
  800. /// 生成条码
  801. /// </summary>
  802. /// <param name="POCode"></param>
  803. /// <param name="PORow"></param>
  804. /// <param name="keyValue"></param>
  805. /// 已改
  806. /// <returns></returns>
  807. public int CreateItemLotNo(string POCode, string PORow, string keyValue, string WorkPoint,string IsEable)
  808. {
  809. int RowNumber=Convert.ToInt32(SqlHelper.GetItemsDetails("PORowZero"));
  810. var queryParam = keyValue.ToJObject();
  811. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  812. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  813. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  814. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  815. DataTable dts = GetSubGridJsonByCreate(POCode, PORow, WorkPoint);
  816. if(thisCreateQty> Convert.ToDecimal( dts.Rows[0]["thisCreateQty"]))
  817. {
  818. throw new Exception("超订单生成数量!!");
  819. }
  820. decimal PageNUM = Convert.ToDecimal(queryParam["PageNUM"].ToString());
  821. decimal Quantity = Convert.ToDecimal(queryParam["Quantity"].ToString());
  822. decimal LOTQTY = minPackQty;
  823. string VenCode = GetVendorCode(POCode, PORow, WorkPoint);
  824. string Pre = POCode + PORow.PadLeft(RowNumber, '0');
  825. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");
  826. string sql = string.Empty;
  827. //string VendorLot = queryParam["VendorLot"].ToString();
  828. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  829. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  830. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  831. string sqls= string.Empty;
  832. string Colspan = "";
  833. string str1 = "";
  834. Colspan = queryParam["ProjectCode"].ToString() + "~" + queryParam["BatchCode"].ToString() + "~" + queryParam["Version"].ToString() + "~" + queryParam["Brand"].ToString() + "~" + queryParam["cFree1"].ToString() + "~" + queryParam["cFree2"].ToString() + "~" + queryParam["cFree3"].ToString() + "~" + queryParam["cFree4"].ToString() + "~" + queryParam["cFree5"].ToString() + "~" + queryParam["cFree6"].ToString() + "~" + queryParam["cFree7"].ToString() + "~" + queryParam["cFree8"].ToString() + "~" + queryParam["cFree9"].ToString() + "~" + queryParam["cFree10"].ToString();
  835. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan,WorkPoint);
  836. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  837. if (ExtensionID == null)
  838. {
  839. str1 = Guid.NewGuid().ToString();
  840. sql += string.Format(@"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
  841. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  842. str1, Colspan, queryParam["ProjectCode"].ToString(), queryParam["BatchCode"].ToString(),
  843. queryParam["Version"].ToString(), queryParam["Brand"].ToString(),
  844. queryParam["cFree1"].ToString(), queryParam["cFree2"].ToString(),
  845. queryParam["cFree3"].ToString(), queryParam["cFree4"].ToString(),
  846. queryParam["cFree5"].ToString(), queryParam["cFree6"].ToString(),
  847. queryParam["cFree7"].ToString(), queryParam["cFree8"].ToString(),
  848. queryParam["cFree9"].ToString(), queryParam["cFree10"].ToString(),
  849. MUSER, MUSERNAME, WorkPoint);
  850. }
  851. else if (ExtensionID != null)
  852. {
  853. str1 = ExtensionID.ToString();
  854. }
  855. if (IsEable == "" || IsEable == "0")
  856. {
  857. for (int i = 0; i < createPageCount; i++)
  858. {
  859. if (i + 1 == createPageCount)
  860. {
  861. if (minPackQty * createPageCount > thisCreateQty)
  862. {
  863. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  864. }
  865. }
  866. //string Pre = VenCode + "_" + queryParam["BatchCode"].ToString() + "_" + queryParam["InvCode"].ToString() + "_" + DateTime.Now.ToString("yyyyMMdd") + "_" + queryParam["EATTRIBUTE3"].ToString() + "_" + (int)LOTQTY + "_";
  867. string LotNo = GetSerialCode(WorkPoint, "ICSITEMLot", "LotNO", Pre, 4);
  868. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  869. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  870. LotNo, POCode, PORow, MUSER, MUSERNAME, WorkPoint);
  871. sql += string.Format(@" insert into ICSInventoryLot
  872. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  873. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  874. select
  875. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','200','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  876. from ICSPurchaseOrder where POCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  877. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, POCode, PORow, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  878. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  879. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  880. sql += "\r\n";
  881. }
  882. }
  883. else
  884. {
  885. var CartonCount = Math.Ceiling(createPageCount / PageNUM);
  886. decimal Count = 0;
  887. for (int j = 0; j < PageNUM; j++)
  888. {
  889. object CARID = Guid.NewGuid();
  890. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  891. sql += @"INSERT INTO dbo.ICSContainer
  892. ( ID,ContainerCode ,
  893. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  894. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint + "','" + VenCode + "','SRM','" + CARID + "','" + Carton + "',1,1,1,1)";
  895. for (int i = 0; i < CartonCount; i++)
  896. {
  897. if (Count >= Quantity)
  898. {
  899. break;
  900. }
  901. if (j + 1 == PageNUM)
  902. {
  903. if (minPackQty * CartonCount * CartonCount > thisCreateQty)
  904. {
  905. LOTQTY = thisCreateQty - Count;
  906. }
  907. }
  908. //string Pre = VenCode + "_" + queryParam["BatchCode"].ToString() + "_" + queryParam["InvCode"].ToString() + "_" + DateTime.Now.ToString("yyyyMMdd") + "_" + queryParam["EATTRIBUTE3"].ToString() + "_" + (int)LOTQTY + "_";
  909. string LotNo = GetSerialCode(WorkPoint, "ICSITEMLot", "LotNO", Pre, 4);
  910. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  911. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  912. LotNo, POCode, PORow, MUSER, MUSERNAME, WorkPoint);
  913. sql += string.Format(@" insert into ICSInventoryLot
  914. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  915. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  916. select
  917. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','200','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  918. from ICSPurchaseOrder where POCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  919. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, POCode, PORow, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString(), queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  920. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  921. sql += "\r\n";
  922. sql += string.Format(@"INSERT INTO dbo.ICSContainerLot
  923. ( ID ,ContainerID ,LotNo ,
  924. MUSER ,MUSERName ,MTIME ,WorkPoint )
  925. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' )", CARID, LotNo, MUSER, MUSERNAME, WorkPoint);
  926. Count = Count + LOTQTY;
  927. }
  928. }
  929. }
  930. sql += string.Format(@"UPDATE ICSPurchaseOrder set MTIME=GETDATE() where POCode='{0}' and Sequence='{1}' and WorkPoint='{2}' ", POCode, PORow, WorkPoint);
  931. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  932. return count;
  933. }
  934. /// <summary>
  935. /// 批量生成
  936. /// </summary>
  937. /// <param name="POCode"></param>
  938. /// <param name="PORow"></param>
  939. /// <param name="keyValue"></param>
  940. /// 已改
  941. /// <returns></returns>
  942. public int BatchSubmitForm(string keyValue)
  943. {
  944. int RowNumber = Convert.ToInt32(SqlHelper.GetItemsDetails("PORowZero"));
  945. //var queryParam = keyValue.ToJObject();
  946. int count = 0;
  947. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  948. foreach (var item in res)
  949. {
  950. JObject jo = (JObject)item;
  951. string VenCode = GetVendorCode(jo["POCode"].ToString(), jo["PORow"].ToString(), jo["WorkPoint"].ToString());
  952. string Pre = jo["POCode"].ToString() + jo["PORow"].ToString().PadLeft(RowNumber, '0');
  953. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");
  954. string sql = string.Empty;
  955. //string VendorLot = queryParam["VendorLot"].ToString();
  956. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  957. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  958. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  959. string sqls = string.Empty;
  960. string Colspan = "";
  961. string str1 = "";
  962. Colspan = jo["ProjectCode"].ToString() + "~" + jo["BatchCode"].ToString() + "~" + jo["Version"].ToString() + "~" + jo["Brand"].ToString() + "~" + jo["cFree1"].ToString() + "~" + jo["cFree2"].ToString() + "~" + jo["cFree3"].ToString() + "~" + jo["cFree4"].ToString() + "~" + jo["cFree5"].ToString() + "~" + jo["cFree6"].ToString() + "~" + jo["cFree7"].ToString() + "~" + jo["cFree8"].ToString() + "~" + jo["cFree9"].ToString() + "~" + jo["cFree10"].ToString();
  963. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, jo["WorkPoint"].ToString());
  964. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  965. if (ExtensionID == null)
  966. {
  967. str1 = Guid.NewGuid().ToString();
  968. sql += string.Format(@"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
  969. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  970. str1, Colspan, jo["ProjectCode"].ToString(), jo["BatchCode"].ToString(),
  971. jo["Version"].ToString(), jo["Brand"].ToString(),
  972. jo["cFree1"].ToString(), jo["cFree2"].ToString(),
  973. jo["cFree3"].ToString(), jo["cFree4"].ToString(),
  974. jo["cFree5"].ToString(), jo["cFree6"].ToString(),
  975. jo["cFree7"].ToString(), jo["cFree8"].ToString(),
  976. jo["cFree9"].ToString(), jo["cFree10"].ToString(),
  977. MUSER, MUSERNAME, jo["WorkPoint"].ToString());
  978. }
  979. else if (ExtensionID != null)
  980. {
  981. str1 = ExtensionID.ToString();
  982. }
  983. //如果没有维护最小包装量只生成一个条码 条码数量等于单子数量
  984. if (jo["minPackQty"].ToString() == "0"|| Convert.ToDecimal( jo["minPackQty"].ToString())> Convert.ToDecimal(jo["thisCreateQty"].ToString()))
  985. {
  986. string LotNo = GetSerialCode(jo["WorkPoint"].ToString(), "ICSITEMLot", "LotNO", Pre, 4);
  987. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  988. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  989. LotNo, jo["POCode"].ToString(), jo["PORow"].ToString(), MUSER, MUSERNAME, jo["WorkPoint"].ToString());
  990. sql += string.Format(@" insert into ICSInventoryLot
  991. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  992. )
  993. select
  994. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','200','{3}','{4}', getdate(),'{5}','{9}'
  995. from ICSPurchaseOrder where POCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  996. LotNo, PRODUCTDATE, jo["thisCreateQty"].ToString(), MUSER, MUSERNAME, jo["WorkPoint"].ToString(), jo["POCode"].ToString(), jo["PORow"].ToString(), str1, jo["Amount"].ToString(), jo["ExpirationDate"].ToString()
  997. );
  998. sql += "\r\n";
  999. }
  1000. else
  1001. {
  1002. //根据最小包装量自动生成条码数量
  1003. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  1004. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  1005. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  1006. decimal LOTQTY = minPackQty;
  1007. for (int i = 0; i < createPageCount; i++)
  1008. {
  1009. if (i + 1 == createPageCount)
  1010. {
  1011. if (minPackQty * createPageCount > thisCreateQty)
  1012. {
  1013. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  1014. }
  1015. }
  1016. //string Pre = VenCode + "_" + queryParam["BatchCode"].ToString() + "_" + queryParam["InvCode"].ToString() + "_" + DateTime.Now.ToString("yyyyMMdd") + "_" + queryParam["EATTRIBUTE3"].ToString() + "_" + (int)LOTQTY + "_";
  1017. string LotNo = GetSerialCode(jo["WorkPoint"].ToString(), "ICSITEMLot", "LotNO", Pre, 4);
  1018. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  1019. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  1020. LotNo, jo["POCode"].ToString(), jo["PORow"].ToString(), MUSER, MUSERNAME, jo["WorkPoint"].ToString());
  1021. sql += string.Format(@" insert into ICSInventoryLot
  1022. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  1023. )
  1024. select
  1025. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','200','{3}','{4}', getdate(),'{5}','{9}'
  1026. from ICSPurchaseOrder where POCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  1027. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, jo["WorkPoint"].ToString(), jo["POCode"].ToString(), jo["PORow"].ToString(), str1, jo["Amount"].ToString(), jo["ExpirationDate"].ToString());
  1028. sql += "\r\n";
  1029. }
  1030. }
  1031. //变更操作时间显示在列表中
  1032. sql += string.Format(@"UPDATE ICSPurchaseOrder set MTIME=GETDATE() where POCode='{0}' and Sequence='{1}' and WorkPoint='{2}' ", jo["POCode"].ToString(), jo["PORow"].ToString(), jo["WorkPoint"].ToString());
  1033. count = SqlHelper.CmdExecuteNonQueryLi(sql);
  1034. }
  1035. return count;
  1036. }
  1037. /// <summary>
  1038. /// 生成条码
  1039. /// </summary>
  1040. /// <param name="POCode"></param>
  1041. /// <param name="PORow"></param>
  1042. /// <param name="keyValue"></param>
  1043. /// 已改
  1044. /// <returns></returns>
  1045. public int SubmitFormWeiWai(string OOCode, string Sequence, string keyValue, string WorkPoint,string IsEable)
  1046. {
  1047. int RowNumber = Convert.ToInt32(SqlHelper.GetItemsDetails("PORowZero"));
  1048. var queryParam = keyValue.ToJObject();
  1049. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1050. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  1051. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  1052. decimal PageNUM = Convert.ToDecimal(queryParam["PageNUM"].ToString());
  1053. decimal Quantity = Convert.ToDecimal(queryParam["Quantity"].ToString());
  1054. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  1055. decimal LOTQTY = minPackQty;
  1056. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1057. string VenCode = GetVendorCode(OOCode, Sequence, WorkPoint);
  1058. string Pre = OOCode + Sequence.PadLeft(RowNumber, '0');
  1059. string sql = string.Empty;
  1060. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");
  1061. //string VendorLot = queryParam["VendorLot"].ToString();
  1062. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1063. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1064. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  1065. string sqls = string.Empty;
  1066. string Colspan = "";
  1067. string str1 = "";
  1068. Colspan = queryParam["ProjectCode"].ToString() + "~" + queryParam["BatchCode"].ToString() + "~" + queryParam["Version"].ToString() + "~" + queryParam["Brand"].ToString() + "~" + queryParam["cFree1"].ToString() + "~" + queryParam["cFree2"].ToString() + "~" + queryParam["cFree3"].ToString() + "~" + queryParam["cFree4"].ToString() + "~" + queryParam["cFree5"].ToString() + "~" + queryParam["cFree6"].ToString() + "~" + queryParam["cFree7"].ToString() + "~" + queryParam["cFree8"].ToString() + "~" + queryParam["cFree9"].ToString() + "~" + queryParam["cFree10"].ToString();
  1069. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan,WorkPoint);
  1070. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  1071. if (ExtensionID == null)
  1072. {
  1073. str1 = Guid.NewGuid().ToString();
  1074. sql += string.Format(@"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
  1075. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  1076. str1, Colspan, queryParam["ProjectCode"].ToString(), queryParam["BatchCode"].ToString(), queryParam["Version"].ToString(), queryParam["Brand"].ToString(), queryParam["cFree1"].ToString(), queryParam["cFree2"].ToString(), queryParam["cFree3"].ToString(), queryParam["cFree4"].ToString(), queryParam["cFree5"].ToString(), queryParam["cFree6"].ToString(), queryParam["cFree7"].ToString(), queryParam["cFree8"].ToString(), queryParam["cFree9"].ToString(), queryParam["cFree10"].ToString(),
  1077. MUSER, MUSERNAME, WorkPoint);
  1078. }
  1079. else if (ExtensionID != null)
  1080. {
  1081. str1 = ExtensionID.ToString();
  1082. }
  1083. if (IsEable == "" || IsEable == "0")
  1084. {
  1085. for (int i = 0; i < createPageCount; i++)
  1086. {
  1087. if (i + 1 == createPageCount)
  1088. {
  1089. if (minPackQty * createPageCount > thisCreateQty)
  1090. {
  1091. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  1092. }
  1093. }
  1094. string LotNo = GetSerialCode(WorkPoint, "ICSITEMLot", "LotNO", Pre, 5);
  1095. // sqls= string.Format(@"select * from ICSInventoryLotDetail where TransCode='{0}' and TransSequence='{1}' )",
  1096. // POCode, PORow);
  1097. //DataTable dtASN = SqlHelper.GetDataTableBySql(sqls);
  1098. //if (dtASN == null && dtASN.Rows.Count <= 0)
  1099. //{
  1100. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  1101. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  1102. LotNo, OOCode, Sequence, MUSER, MUSERNAME, WorkPoint);
  1103. //}
  1104. //if (SqlHelper.ExecuteNonQuery(sqls)>0)
  1105. //{
  1106. sql += string.Format(@" insert into ICSInventoryLot
  1107. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  1108. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  1109. select
  1110. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','201','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  1111. from ICSOutsourcingOrder where OOCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  1112. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, OOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString(), queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  1113. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  1114. sql += "\r\n";
  1115. //}
  1116. }
  1117. }
  1118. else
  1119. {
  1120. var CartonCount = Math.Ceiling(createPageCount / PageNUM);
  1121. decimal Count = 0;
  1122. for (int j = 0; j < PageNUM; j++)
  1123. {
  1124. object CARID = Guid.NewGuid();
  1125. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  1126. sql += @"INSERT INTO dbo.ICSContainer
  1127. ( ID,ContainerCode ,
  1128. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  1129. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint + "','" + VenCode + "','SRM','" + CARID + "','" + Pre + "',1,1,1,1)";
  1130. for (int i = 0; i < CartonCount; i++)
  1131. {
  1132. if (Count >= Quantity)
  1133. {
  1134. break;
  1135. }
  1136. if (j + 1 == PageNUM)
  1137. {
  1138. if (minPackQty * CartonCount * CartonCount > thisCreateQty)
  1139. {
  1140. LOTQTY = thisCreateQty - Count;
  1141. }
  1142. }
  1143. string LotNo = GetSerialCode(WorkPoint, "ICSITEMLot", "LotNO", Pre, 4);
  1144. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  1145. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  1146. LotNo, OOCode, Sequence, MUSER, MUSERNAME, WorkPoint);
  1147. sql += string.Format(@" insert into ICSInventoryLot
  1148. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  1149. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  1150. select
  1151. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','201','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  1152. from ICSOutsourcingOrder where OOCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  1153. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, OOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString(), queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  1154. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  1155. sql += "\r\n";
  1156. sql += string.Format(@"INSERT INTO dbo.ICSContainerLot
  1157. ( ID ,ContainerID ,LotNo ,
  1158. MUSER ,MUSERName ,MTIME ,WorkPoint )
  1159. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' )", CARID, LotNo, MUSER, MUSERNAME, WorkPoint);
  1160. Count = Count + LOTQTY;
  1161. }
  1162. }
  1163. }
  1164. sql += string.Format(@"UPDATE ICSOutsourcingOrder set MTIME=GETDATE() where OOCode='{0}' and Sequence='{1}' and WorkPoint='{2}' ", OOCode, Sequence, WorkPoint);
  1165. int count = SqlHelper.ExecuteNonQuery(sql);
  1166. return count;
  1167. }
  1168. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  1169. {
  1170. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  1171. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  1172. return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  1173. }
  1174. public string GetVendorCode(string POCode, string PORow, string WorkPoint)
  1175. {
  1176. string sql = string.Format(@"SELECT VenCode FROM dbo.ICSPurchaseOrder
  1177. WHERE POCode='{0}' AND Sequence='{1}' AND WorkPoint='{2}'", POCode, PORow, WorkPoint);
  1178. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1179. string VenCode = string.Empty;
  1180. if (dt != null && dt.Rows.Count > 0)
  1181. {
  1182. VenCode = dt.Rows[0][0].ToString();
  1183. }
  1184. return VenCode;
  1185. }
  1186. /// <summary>
  1187. /// 删除条码
  1188. /// </summary>
  1189. /// <param name="keyValue"></param>
  1190. /// <returns></returns>
  1191. public string DeleteItemLot(string keyValue, string WorkPoint)
  1192. {
  1193. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1194. string msg = string.Empty;
  1195. string sql = string.Format(@"SELECT * FROM dbo.ICSASNDetail
  1196. WHERE LotNo IN (SELECT LotNO FROM dbo.ICSInventoryLot WHERE ID IN ({0})) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  1197. DataTable dtASN = SqlHelper.GetDataTableBySql(sql);
  1198. if (dtASN != null && dtASN.Rows.Count > 0)
  1199. {
  1200. msg = "所选条码已有加入送货单中,请先在送货单中删除!";
  1201. }
  1202. sql = string.Format(@"SELECT * FROM dbo.ICSContainerLot WHERE LotNO IN
  1203. (SELECT LotNO FROM dbo.ICSInventoryLot WHERE ID IN ({0})) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  1204. DataTable dtCarton = SqlHelper.GetDataTableBySql(sql);
  1205. if (dtCarton != null && dtCarton.Rows.Count > 0)
  1206. {
  1207. msg += "所选条码已有加入箱号中,请先在箱号中删除!";
  1208. }
  1209. if (string.IsNullOrEmpty(msg))
  1210. {
  1211. sql = string.Format("DELETE FROM dbo.ICSInventoryLot WHERE ID IN ({0}) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  1212. sql += string.Format(@"delete b from
  1213. ICSInventoryLot a
  1214. inner join dbo.ICSInventoryLotDetail b on a.LotNo = b.LotNo WHERE a.ID IN({0}) and a.WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  1215. SqlHelper.ExecuteNonQuery(sql);
  1216. }
  1217. return msg;
  1218. //keyValue = keyValue.Substring(1, keyValue.Length - 2);
  1219. //string sql = @"DELETE FROM dbo.ICSITEMLot WHERE ID IN (" + keyValue.TrimEnd(',') + ")";
  1220. //int i = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1221. //return i;
  1222. }
  1223. public DataTable SelectICSExtensionEnable(string BeginTime, string EndTime)
  1224. {
  1225. string sql = @"select ColCode from ICSExtensionEnable
  1226. where Enable=0
  1227. order by cast(EATTRIBUTE1 as int)";
  1228. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1229. return dt;
  1230. }
  1231. public DataTable SelectICSInventoryEnable(string InvCode)
  1232. {
  1233. string sql = @"SELECT case when AmountEnable=1 then '是' else '否' end as AmountEnable
  1234. FROM dbo.ICSInventory WHERE InvCode='"+InvCode+"'";
  1235. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1236. return dt;
  1237. }
  1238. public DataTable SelectICSColumnEnableForLotEnable(string WorkPoint)
  1239. {
  1240. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1241. string sql = @" select ColumnCode from ICSColumnEnable
  1242. where Enable='0' and TableCode='ICSInventoryLot' and WorkPoint='" + WorkPoint + "' order by cast(Code as int)";
  1243. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1244. return dt;
  1245. }
  1246. /// <summary>
  1247. /// 齐套
  1248. /// </summary>
  1249. /// <param name="keyValue"></param>
  1250. /// <returns></returns>
  1251. public object GetQiSetNum(string keyValue)
  1252. {
  1253. int Num = 0;
  1254. string msg = "";
  1255. string APIURL = ConfigurationManager.ConnectionStrings["ERPAPIURL"].ConnectionString + "POCheck";
  1256. string result = HttpPost(APIURL, keyValue);
  1257. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  1258. string MessAge = Obj["Message"].ToString();
  1259. string Success = Obj["Success"].ToString();
  1260. if (Success.ToUpper() == "FALSE")
  1261. {
  1262. msg = MessAge;
  1263. }
  1264. if (msg == "")
  1265. {
  1266. string jsonStr = JsonConvert.DeserializeObject(Obj["Data"].ToString()).ToString();
  1267. var data = JsonConvert.DeserializeObject<dynamic>(jsonStr);
  1268. // 获取 "Data" 的值
  1269. Num = data.Data;
  1270. }
  1271. var Header = new
  1272. {
  1273. msg = msg,
  1274. Num = Num,
  1275. };
  1276. return Header;
  1277. }
  1278. public DataTable GetWWComplete(string BeginTime, string EndTime)
  1279. {
  1280. string sql = @"select Enable from ICSConfiguration where Code='CompleteVerification004'";
  1281. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1282. return dt;
  1283. }
  1284. public DataTable GetLoadShowForColumn(string WorkPoint)
  1285. {
  1286. //string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1287. string sql = @"
  1288. select * from ICSColumnEnable where TableCode='ICSInventoryLot' and WorkPoint='" + WorkPoint + "' order by cast(code as int) ";
  1289. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1290. return dt;
  1291. }
  1292. //接口api解析
  1293. public static string HttpPost(string url, string body)
  1294. {
  1295. try
  1296. {
  1297. Encoding encoding = Encoding.UTF8;
  1298. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  1299. request.Method = "POST";
  1300. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  1301. request.ContentType = "application/json; charset=utf-8";
  1302. byte[] buffer = encoding.GetBytes(body);
  1303. request.ContentLength = buffer.Length;
  1304. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  1305. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  1306. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  1307. {
  1308. return reader.ReadToEnd();
  1309. }
  1310. }
  1311. catch (WebException ex)
  1312. {
  1313. throw new Exception(ex.Message);
  1314. }
  1315. }
  1316. public DataTable GetInventoryIsEnable(string InvCode, string WorkPoint)
  1317. {
  1318. DataTable dt = new DataTable();
  1319. //var queryParam = queryJson.ToJObject();
  1320. List<DbParameter> parameter = new List<DbParameter>();
  1321. //string dtPre = DateTime.Now.ToString("yyyyMMdd");
  1322. string sql = @"SELECT CAST(ContainerEnable as nvarchar(20)) ContainerEnable FROM ICSInventory WHERE invcode='" + InvCode + "'";
  1323. return Repository().FindTableBySql(sql.ToString());
  1324. }
  1325. public DataTable GetInvBatchEnable(string InvCode)
  1326. {
  1327. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1328. string sql = @"select distinct BatchEnable from ICSInventory where InvCode='{0}' and WorkPoint in({1})";
  1329. sql = string.Format(sql, InvCode, WorkPoints);
  1330. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1331. return dt;
  1332. }
  1333. public bool GetInvBatchCardControl(string InvCode,string BatchCode,string PRODUCTDATE)
  1334. {
  1335. bool Flag = false;
  1336. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1337. string SqlSeach = @"select * from dbo.Sys_SRM_ItemsDetail where F_ItemCode='CreateLotCardControl001' and F_EnabledMark='1'";
  1338. DataTable dt = SqlHelper.GetDataTableBySql(SqlSeach);
  1339. if (dt.Rows.Count>0)
  1340. {
  1341. string SeachTime = @" select top 1 a.ProductDate from dbo.ICSInventoryLot a
  1342. inner join dbo.ICSExtension b on a.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint
  1343. where a.InvCode='" + InvCode + "' and b.BatchCode='"+ BatchCode + "' and a.ProductDate>='"+ PRODUCTDATE + "'";
  1344. object ProductDate = SqlHelper.ExecuteScalar(SeachTime);
  1345. if (ProductDate.ToString()!=""|| ProductDate!=null)
  1346. {
  1347. Flag = true;
  1348. }
  1349. }
  1350. return Flag;
  1351. }
  1352. public string ISPOBack()
  1353. {
  1354. string msg = "";
  1355. msg = SqlHelper.GetSHDZDSHItemsDetails("POBack", "");
  1356. return msg;
  1357. }
  1358. public bool IsDDSX(string VenCode, string InvCode, string WorkPoint, string PODate, string POCode, string Sequence,string DDSX)
  1359. {
  1360. string sqlSeach = @"select "+ DDSX + " from ICSPurchaseOrder where POCode='"+ POCode + "' and Sequence='"+ Sequence + "'";
  1361. object Date = SqlHelper.ExecuteScalar(sqlSeach);
  1362. bool ISTrue = false;
  1363. string sql = @" SELECT a.ID, a.POCode,a.Sequence,CONVERT(NVARCHAR(15),a.CreateDateTime,23) AS PODate,
  1364. a.ExtensionID,a.VenCode,ee.VenName,a.InvCode,cc.NGQTY AS RefuseLotQty,dd.returnqty AS BackLotQty,
  1365. b.InvName,b.InvStd,b.InvUnit,a.Quantity,ISNULL(bb.LotQty,0) AS LotQty ,b.InvDesc,b.ClassCode,isnull(InQuantity,0) as InQuantity,a.WorkPoint as WorkPointCode
  1366. ,CreatePerson,e.ProjectCode,a.SignBackStatus as SignBackStatus,a.MTIME,isnull(b.EATTRIBUTE2,0) as MINQty
  1367. ,b.EffectiveDays,b.EffectiveEnable
  1368. FROM dbo.ICSPurchaseOrder a
  1369. LEFT JOIN dbo.ICSExtension e ON a.ExtensionID=e.ID AND a.WorkPoint=e.WorkPoint
  1370. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  1371. LEFT JOIN (
  1372. SELECT mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY ,ee.WorkPoint
  1373. FROM ICSInventoryLot ee
  1374. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo
  1375. WHERE ISNULL(ee.EATTRIBUTE1,'')=''
  1376. group by mm.TransCode,mm.TransSequence,ee.WorkPoint ) bb
  1377. on a.POCode=bb.TransCode and a.Sequence=bb.TransSequence AND a.WorkPoint=bb.WorkPoint
  1378. left join (
  1379. select c.TransCode,c.TransSequence,SUM(ISNULL(a.Quantity,0)) NGQTY,a.WorkPoint
  1380. from ICSDeliveryNotice a
  1381. left join ICSInventoryLot b on a.EATTRIBUTE1=b.LotNo
  1382. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo
  1383. group by c.TransCode,c.TransSequence,a.WorkPoint,DNType having a.DNType='3') cc
  1384. on a.POCode=cc.TransCode and a.Sequence=cc.TransSequence AND a.WorkPoint=cc.WorkPoint
  1385. left join (select b.POCode,b.Sequence,sum(isnull(a.Quantity,0)) returnqty ,a.WorkPoint
  1386. FROM ICSDeliveryNotice a
  1387. left join ICSPurchaseOrder b on a.PODetailID=b.PODetailID
  1388. group by b.POCode,b.Sequence,a.DNType,a.WorkPoint having a.DNType='2' ) dd
  1389. on a.POCode=dd.POCode and a.Sequence=dd.Sequence AND a.WorkPoint=dd.WorkPoint
  1390. left join ICSVendor ee on a.VenCode=ee.VenCode and a.WorkPoint=ee.WorkPoint
  1391. WHERE 1=1 AND a.ReleaseState = '1' and a.Status<>'3' AND a.VenCode = '{0}' and a.InvCode='{1}' and a.WorkPoint='{2}' and a.Quantity>ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)
  1392. and format(a." + DDSX + " , 'yyyy-MM-dd') < '{3}'";
  1393. sql = string.Format(sql, VenCode, InvCode, WorkPoint, Date.ToDate().ToString("yyyy-MM-dd"));
  1394. DataTable dtcount = SqlHelper.GetDataTableBySql(sql);
  1395. if (dtcount.Rows.Count > 0)
  1396. {
  1397. ISTrue = true;
  1398. }
  1399. return ISTrue;
  1400. }
  1401. public string ISEableDDSX(string VenCode, string InvCode, string WorkPoint, string PODate,string POCode,string Sequence)
  1402. {
  1403. string msg = string.Empty;
  1404. try
  1405. {
  1406. string DDSX = string.Empty;
  1407. string sqldetail = @"SELECT a.F_Define1 FROM Sys_SRM_ItemsDetail a
  1408. LEFT JOIN Sys_SRM_Items b ON a.F_ItemId = b.F_Id
  1409. WHERE b.F_EnCode = 'DDSX' and a.F_EnabledMark='1'";
  1410. DataTable dts = SqlHelper.GetDataTableBySql(sqldetail);
  1411. if (dts.Rows.Count > 0)
  1412. {
  1413. DDSX = dts.Rows[0]["F_Define1"].ToString();
  1414. }
  1415. // DDSX = SqlHelper.GetSHDZDSHItemsDetails("DDSX", WorkPoint);
  1416. if (!string.IsNullOrWhiteSpace(DDSX))
  1417. {
  1418. if (IsDDSX(VenCode, InvCode, WorkPoint, PODate, POCode, Sequence, DDSX))
  1419. {
  1420. msg="请先生成日期前的数据";
  1421. }
  1422. }
  1423. }
  1424. catch (Exception ex)
  1425. {
  1426. msg=ex.Message;
  1427. }
  1428. return msg;
  1429. }
  1430. public DataTable SeachCreateLotOrderByPO()
  1431. {
  1432. // string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1433. string sql = @"select F_ItemCode,F_ItemName,F_Define1,F_Define2 from [Sys_SRM_ItemsDetail] where F_ItemCode ='CreateLotOrderBy001' and F_EnabledMark='1'
  1434. ";
  1435. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1436. return dt;
  1437. }
  1438. public DataTable SeachCreateLotOrderByOO()
  1439. {
  1440. // string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1441. string sql = @"select F_ItemCode,F_ItemName,F_Define1,F_Define2 from [Sys_SRM_ItemsDetail] where F_ItemCode ='CreateLotOrderBy002' and F_EnabledMark='1'
  1442. ";
  1443. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1444. return dt;
  1445. }
  1446. public bool SeachPoArriveDate(string Code, string Row, string Type)
  1447. {
  1448. bool Flag = false;
  1449. string sql = string.Empty;
  1450. if (Type=="1")
  1451. {
  1452. sql = @"select ArriveDate,DeliveryDate,EATTRIBUTE29 from dbo.ICSPurchaseOrder where POCode='" + Code + "' and Sequence='" + Row + "'";
  1453. }
  1454. else
  1455. {
  1456. sql = @"select ArriveDate,DeliveryDate,EATTRIBUTE29 from dbo.ICSOutsourcingOrder where OOCode='" + Code + "' and Sequence='" + Row + "'";
  1457. }
  1458. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1459. if (dt.Rows[0]["ArriveDate"].ToString() != "" || dt.Rows[0]["DeliveryDate"].ToString() != "" || dt.Rows[0]["EATTRIBUTE29"].ToString() != "")
  1460. {
  1461. Flag = true;
  1462. }
  1463. return Flag;
  1464. }
  1465. }
  1466. }