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.

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