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.

1621 lines
100 KiB

1 month 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. inner JOIN(select ASNCode from dbo.ICSDeliveryNotice group by ASNCode) 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)-ISNULL(eee.qc,0)";
  135. }
  136. else
  137. {
  138. sql += " and a.Quantity>ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)-ISNULL(eee.qc,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 AND b.TransCode+'~'+b.TransSequence=d.PODetailID
  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. inner JOIN(select ASNCode from dbo.ICSDeliveryNotice group by ASNCode) d ON c.ASNCode=d.ASNCode
  691. --WHERE ISNULL(d.ASNCode,'')<>'' AND d.Dntype='1'
  692. GROUP BY b.TransCode,b.TransSequence
  693. ) eee ON a.poCode=eee.TransCode AND a.Sequence=eee.TransSequence
  694. WHERE 1 =1
  695. and a.POCode='" + POCode + "' and a.Sequence='" + PORow + "'";
  696. sql += " and a.WorkPoint='" +WorkPoint+ "'";
  697. return Repository().FindTableBySql(sql.ToString());
  698. }
  699. /// <summary>
  700. /// 点击生成条码
  701. /// </summary>
  702. /// <param name="POCode">采购订单</param>
  703. /// <param name="PORow">采购订单行</param>
  704. /// <param name="WorkPoint">多站点</param>
  705. /// 已改
  706. /// <returns></returns>
  707. public DataTable GetSubGridJsonByCreateWeiWai(string OOCode, string Sequence, string WorkPoint)
  708. {
  709. DataTable dt = new DataTable();
  710. //var queryParam = queryJson.ToJObject();
  711. //string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  712. List<DbParameter> parameter = new List<DbParameter>();
  713. string sql = @"
  714. 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,
  715. (a.Quantity-ISNULL(bb.LOTQTY,0)+isnull(cc.NGQTY,0)+isnull(dd.returnqty,0)+isnull(eee.qc,0)) as thisCreateQty,
  716. b.InvName,b.InvStd,b.InvDesc,b.InvUnit,a.Quantity,isnull(c.InQty,0) as InQty,a.WorkPoint,ISNULL(bb.LOTQTY,0) AS CreatedQty,
  717. isnull(cc.NGQTY,0) AS RefuseLotQty,isnull(dd.returnqty,0) AS BackLotQty,ISNULL(ee.repairqty,0) AS RepairQty,
  718. isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(18,2)) as EffectiveDays,isnull(eee.qc,0)
  719. FROM dbo.ICSOutsourcingOrder a
  720. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  721. left join (
  722. SELECT b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY
  723. FROM ICSInventoryLot a
  724. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo
  725. WHERE ISNULL(a.EATTRIBUTE1,'')=''
  726. group by b.TransCode,b.TransSequence
  727. ) bb on a.OOCode=bb.TransCode and a.Sequence=bb.TransSequence
  728. left join (
  729. select c.TransCode,c.TransSequence,SUM(ISNULL(a.Quantity,0)) NGQTY,a.WorkPoint
  730. from ICSODeliveryNotice a
  731. left join ICSInventoryLot b on a.EATTRIBUTE1=b.LotNo
  732. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo
  733. group by c.TransCode,c.TransSequence,a.WorkPoint,ODNType having a.ODNType='3'
  734. ) cc on a.OOCode=cc.TransCode and a.Sequence=cc.TransSequence
  735. left join (
  736. select b.OOCode,b.Sequence,sum(isnull(a.Quantity,0)) returnqty ,a.WorkPoint
  737. from ICSODeliveryNotice a
  738. left join ICSOutsourcingOrder b on a.OODetailID=b.OODetailID
  739. group by b.OOCode,b.Sequence,a.ODNType,a.WorkPoint
  740. having a.ODNType='2'
  741. UNION ALL
  742. SELECT b.OOCode,b.Sequence,sum(isnull(a.RCVQuantity,0)) returnqty ,a.WorkPoint
  743. FROM ICSPurchaseReceive a
  744. left join ICSDeliveryNotice aa on aa.DNCode=a.SourceCode and aa.Sequence=a.SourceSequence and a.WorkPoint=aa.WorkPoint
  745. left join ICSOutsourcingOrder b on aa.PODetailID=b.OODetailID and b.WorkPoint=aa.WorkPoint
  746. group by a.RCVCode,b.OOCode,b.Sequence,a.WorkPoint
  747. UNION ALL
  748. SELECT b.OOCode,b.Sequence,sum(isnull(a.RCVQuantity,0)) returnqty ,a.WorkPoint
  749. FROM ICSPurchaseReceive a
  750. left join ICSOutsourcingOrder b on a.SourceCode=b.OOCode and a.SourceSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
  751. group by a.RCVCode,b.OOCode,b.Sequence,a.WorkPoint ) dd
  752. on a.OOCode=dd.OOCode and a.Sequence=dd.Sequence
  753. LEFT JOIN (
  754. SELECT SUM(x.Quantity) CreatedQty,z.TransCode,z.TransSequence,x.WorkPoint,
  755. SUM(CASE WHEN y.LotNO IS NOT NULL THEN x.Quantity ELSE 0 END) AS InQty
  756. FROM dbo.ICSInventoryLot x
  757. LEFT JOIN dbo.ICSWareHouseLotInfo y ON x.LotNO=y.LotNO AND x.WorkPoint=y.WorkPoint
  758. left join ICSInventoryLotDetail z on x.LotNo=z.LotNo
  759. WHERE ISNULL(x.EATTRIBUTE1,'')=''
  760. GROUP BY z.TransCode,z.TransSequence,x.WorkPoint
  761. ) c ON a.OOCode=c.TransCode AND a.Sequence=c.TransSequence AND a.WorkPoint=c.WorkPoint
  762. LEFT JOIN (SELECT c.TransCode,c.TransSequence,
  763. 0 AS repairqty,a.WorkPoint
  764. FROM ICSOASNDetail a
  765. LEFT JOIN ICSInventoryLot b ON a.LotNO = b.LotNO AND a.WorkPoint = b.WorkPoint
  766. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo and b.WorkPoint=c.WorkPoint
  767. GROUP BY c.TransCode,c.TransSequence,a.WorkPoint
  768. ) ee ON a.OOCode = ee.TransCode AND a.Sequence = ee.TransSequence AND a.WorkPoint = ee.WorkPoint
  769. left join ICSVendor mm on a.VenCode=mm.VenCode
  770. left join ICSConfiguration pp on pp.Code='CompleteVerification'
  771. LEFT JOIN (SELECT sum(c.Quantity)-sum(c.ODNQuantity)AS qc,b.TransCode,b.TransSequence
  772. FROM dbo.ICSInventoryLot a
  773. LEFT JOIN dbo.ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  774. LEFT JOIN dbo.ICSOASNDetail c ON b.LotNo=c.LotNo AND b.WorkPoint=c.WorkPoint
  775. LEFT JOIN dbo.ICSODeliveryNotice d ON c.OASNCode=d.OASNCode AND b.TransCode+'~'+b.TransSequence=d.PODetailID
  776. --WHERE ISNULL(d.OASNCode,'')<>'' AND d.ODNType='1'
  777. GROUP BY b.TransCode,b.TransSequence
  778. ) eee ON a.OOCode=eee.TransCode AND a.Sequence=eee.TransSequence
  779. WHERE 1 =1
  780. and a.OOCode='" + OOCode + "' and a.Sequence='" + Sequence + "'";
  781. sql += " and a.WorkPoint='" + WorkPoint + "'";
  782. return Repository().FindTableBySql(sql.ToString());
  783. }
  784. /// <summary>
  785. /// 自动生成批次信息
  786. /// </summary>
  787. /// <param name="InvCode"></param>
  788. /// <param name="WorkPoint"></param>
  789. /// <returns></returns>
  790. public DataTable GetVendorLotNo(string InvCode, string WorkPoint)
  791. {
  792. DataTable dt = new DataTable();
  793. string sqlClass = "SELECT EATTRIBUTE1 FROM ICSInventory WHERE InvCode='{0}'and WorkPoint='{1}'";
  794. sqlClass = string.Format(sqlClass, InvCode, WorkPoint);
  795. DataTable dtClass = SqlHelper.GetDataTableBySql(sqlClass);
  796. string pre = dtClass.Rows[0]["EATTRIBUTE1"].ToString() + DateTime.Now.ToString("yyyyMMdd");
  797. //var queryParam = queryJson.ToJObject();
  798. //List<DbParameter> parameter = new List<DbParameter>();
  799. //string dtPre = DateTime.Now.ToString("yyyyMMdd");
  800. string sql = @"EXEC Addins_GetSerialCode '" + WorkPoint + "','ICSInventoryLot','BatchCode','" + pre + "',4";
  801. return Repository().FindTableBySql(sql.ToString());
  802. }
  803. public string GetPoStatus(string POCode, string PORow)
  804. {
  805. string sqlU9 = "SELECT DBIpAddress,DBName FROM dbo.Sys_DataBase WHERE DBSourceName='ERP'";
  806. DataTable dtU9 = SqlHelper.GetDataTableBySql(sqlU9);
  807. string U9IP = dtU9.Rows[0]["DBIpAddress"].ToString();
  808. string DBName = dtU9.Rows[0]["DBName"].ToString();
  809. string msg = "";
  810. string U9ConnStr = ConfigurationManager.ConnectionStrings["U9connstr"].ConnectionString;
  811. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  812. string sql = string.Format(@"select a.docno,b.DocLineNo,b.status,d.code 组织
  813. from [{0}].{1}.dbo.PM_PurchaseOrder A
  814. LEFT JOIN [{0}].{1}.dbo.PM_POLine B ON A.ID=B.PurchaseOrder and a.Org=b.CurrentOrg
  815. LEFT JOIN [{0}].{1}.dbo.pm_poshipline C ON B.ID=C.poline and a.Org=c.CurrentOrg
  816. left join [{0}].{1}.dbo.Base_Organization d with (nolock) on a.org=d.id
  817. left join [{0}].{1}.dbo.Base_Organization_trl e with (nolock) on d.id=e.ID
  818. WHERE d.code='" + WorkPoint + "'and a.docno='" + POCode + "' and b.doclineno='" + PORow + "'", U9IP, DBName);
  819. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  820. if (dt != null && dt.Rows.Count > 0)
  821. {
  822. string poStatus = dt.Rows[0]["status"].ToString();
  823. if (poStatus != "2")
  824. {
  825. msg = "该订单行不是审核状态,无法生成条码!";
  826. }
  827. }
  828. return msg;
  829. }
  830. /// <summary>
  831. /// 生成条码
  832. /// </summary>
  833. /// <param name="POCode"></param>
  834. /// <param name="PORow"></param>
  835. /// <param name="keyValue"></param>
  836. /// 已改
  837. /// <returns></returns>
  838. public int CreateItemLotNo(string POCode, string PORow, string keyValue, string WorkPoint,string IsEable)
  839. {
  840. int RowNumber=Convert.ToInt32(SqlHelper.GetItemsDetails("PORowZero"));
  841. var queryParam = keyValue.ToJObject();
  842. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  843. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  844. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  845. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  846. DataTable dts = GetSubGridJsonByCreate(POCode, PORow, WorkPoint);
  847. if(thisCreateQty> Convert.ToDecimal( dts.Rows[0]["thisCreateQty"]))
  848. {
  849. throw new Exception("超订单生成数量!!");
  850. }
  851. decimal PageNUM = Convert.ToDecimal(queryParam["PageNUM"].ToString());
  852. decimal Quantity = Convert.ToDecimal(queryParam["Quantity"].ToString());
  853. decimal LOTQTY = minPackQty;
  854. string VenCode = GetVendorCode(POCode, PORow, WorkPoint);
  855. string Pre = POCode + PORow.PadLeft(RowNumber, '0');
  856. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");
  857. string sql = string.Empty;
  858. //string VendorLot = queryParam["VendorLot"].ToString();
  859. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  860. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  861. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  862. string sqls= string.Empty;
  863. string Colspan = "";
  864. string str1 = "";
  865. 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();
  866. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan,WorkPoint);
  867. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  868. if (ExtensionID == null)
  869. {
  870. str1 = Guid.NewGuid().ToString();
  871. 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)
  872. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  873. str1, Colspan, queryParam["ProjectCode"].ToString(), queryParam["BatchCode"].ToString(),
  874. queryParam["Version"].ToString(), queryParam["Brand"].ToString(),
  875. queryParam["cFree1"].ToString(), queryParam["cFree2"].ToString(),
  876. queryParam["cFree3"].ToString(), queryParam["cFree4"].ToString(),
  877. queryParam["cFree5"].ToString(), queryParam["cFree6"].ToString(),
  878. queryParam["cFree7"].ToString(), queryParam["cFree8"].ToString(),
  879. queryParam["cFree9"].ToString(), queryParam["cFree10"].ToString(),
  880. MUSER, MUSERNAME, WorkPoint);
  881. }
  882. else if (ExtensionID != null)
  883. {
  884. str1 = ExtensionID.ToString();
  885. }
  886. if (IsEable == "" || IsEable == "0")
  887. {
  888. for (int i = 0; i < createPageCount; i++)
  889. {
  890. if (i + 1 == createPageCount)
  891. {
  892. if (minPackQty * createPageCount > thisCreateQty)
  893. {
  894. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  895. }
  896. }
  897. //string Pre = VenCode + "_" + queryParam["BatchCode"].ToString() + "_" + queryParam["InvCode"].ToString() + "_" + DateTime.Now.ToString("yyyyMMdd") + "_" + queryParam["EATTRIBUTE3"].ToString() + "_" + (int)LOTQTY + "_";
  898. string LotNo = GetSerialCode(WorkPoint, "ICSITEMLot", "LotNO", Pre, 4);
  899. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  900. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  901. LotNo, POCode, PORow, MUSER, MUSERNAME, WorkPoint);
  902. sql += string.Format(@" insert into ICSInventoryLot
  903. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  904. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  905. select
  906. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','200','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  907. from ICSPurchaseOrder where POCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  908. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, POCode, PORow, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  909. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  910. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  911. sql += "\r\n";
  912. }
  913. }
  914. else
  915. {
  916. var CartonCount = Math.Ceiling(createPageCount / PageNUM);
  917. decimal Count = 0;
  918. for (int j = 0; j < PageNUM; j++)
  919. {
  920. object CARID = Guid.NewGuid();
  921. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  922. sql += @"INSERT INTO dbo.ICSContainer
  923. ( ID,ContainerCode ,
  924. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  925. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint + "','" + VenCode + "','SRM','" + CARID + "','" + Carton + "',1,1,1,1)";
  926. for (int i = 0; i < CartonCount; i++)
  927. {
  928. if (Count >= Quantity)
  929. {
  930. break;
  931. }
  932. if (j + 1 == PageNUM)
  933. {
  934. if (minPackQty * CartonCount * CartonCount > thisCreateQty)
  935. {
  936. LOTQTY = thisCreateQty - Count;
  937. }
  938. }
  939. //string Pre = VenCode + "_" + queryParam["BatchCode"].ToString() + "_" + queryParam["InvCode"].ToString() + "_" + DateTime.Now.ToString("yyyyMMdd") + "_" + queryParam["EATTRIBUTE3"].ToString() + "_" + (int)LOTQTY + "_";
  940. string LotNo = GetSerialCode(WorkPoint, "ICSITEMLot", "LotNO", Pre, 4);
  941. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  942. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  943. LotNo, POCode, PORow, MUSER, MUSERNAME, WorkPoint);
  944. sql += string.Format(@" insert into ICSInventoryLot
  945. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  946. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  947. select
  948. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','200','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  949. from ICSPurchaseOrder where POCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  950. 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(),
  951. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  952. sql += "\r\n";
  953. sql += string.Format(@"INSERT INTO dbo.ICSContainerLot
  954. ( ID ,ContainerID ,LotNo ,
  955. MUSER ,MUSERName ,MTIME ,WorkPoint )
  956. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' )", CARID, LotNo, MUSER, MUSERNAME, WorkPoint);
  957. Count = Count + LOTQTY;
  958. }
  959. }
  960. }
  961. sql += string.Format(@"UPDATE ICSPurchaseOrder set MTIME=GETDATE() where POCode='{0}' and Sequence='{1}' and WorkPoint='{2}' ", POCode, PORow, WorkPoint);
  962. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  963. return count;
  964. }
  965. /// <summary>
  966. /// 批量生成
  967. /// </summary>
  968. /// <param name="POCode"></param>
  969. /// <param name="PORow"></param>
  970. /// <param name="keyValue"></param>
  971. /// 已改
  972. /// <returns></returns>
  973. public int BatchSubmitForm(string keyValue)
  974. {
  975. int RowNumber = Convert.ToInt32(SqlHelper.GetItemsDetails("PORowZero"));
  976. //var queryParam = keyValue.ToJObject();
  977. int count = 0;
  978. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  979. foreach (var item in res)
  980. {
  981. JObject jo = (JObject)item;
  982. string VenCode = GetVendorCode(jo["POCode"].ToString(), jo["PORow"].ToString(), jo["WorkPoint"].ToString());
  983. string Pre = jo["POCode"].ToString() + jo["PORow"].ToString().PadLeft(RowNumber, '0');
  984. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");
  985. string sql = string.Empty;
  986. //string VendorLot = queryParam["VendorLot"].ToString();
  987. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  988. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  989. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  990. string sqls = string.Empty;
  991. string Colspan = "";
  992. string str1 = "";
  993. 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();
  994. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, jo["WorkPoint"].ToString());
  995. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  996. if (ExtensionID == null)
  997. {
  998. str1 = Guid.NewGuid().ToString();
  999. 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)
  1000. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  1001. str1, Colspan, jo["ProjectCode"].ToString(), jo["BatchCode"].ToString(),
  1002. jo["Version"].ToString(), jo["Brand"].ToString(),
  1003. jo["cFree1"].ToString(), jo["cFree2"].ToString(),
  1004. jo["cFree3"].ToString(), jo["cFree4"].ToString(),
  1005. jo["cFree5"].ToString(), jo["cFree6"].ToString(),
  1006. jo["cFree7"].ToString(), jo["cFree8"].ToString(),
  1007. jo["cFree9"].ToString(), jo["cFree10"].ToString(),
  1008. MUSER, MUSERNAME, jo["WorkPoint"].ToString());
  1009. }
  1010. else if (ExtensionID != null)
  1011. {
  1012. str1 = ExtensionID.ToString();
  1013. }
  1014. //如果没有维护最小包装量只生成一个条码 条码数量等于单子数量
  1015. if (jo["minPackQty"].ToString() == "0"|| Convert.ToDecimal( jo["minPackQty"].ToString())> Convert.ToDecimal(jo["thisCreateQty"].ToString()))
  1016. {
  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, jo["thisCreateQty"].ToString(), MUSER, MUSERNAME, jo["WorkPoint"].ToString(), jo["POCode"].ToString(), jo["PORow"].ToString(), str1, jo["Amount"].ToString(), jo["ExpirationDate"].ToString()
  1028. );
  1029. sql += "\r\n";
  1030. }
  1031. else
  1032. {
  1033. //根据最小包装量自动生成条码数量
  1034. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  1035. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  1036. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  1037. decimal LOTQTY = minPackQty;
  1038. for (int i = 0; i < createPageCount; i++)
  1039. {
  1040. if (i + 1 == createPageCount)
  1041. {
  1042. if (minPackQty * createPageCount > thisCreateQty)
  1043. {
  1044. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  1045. }
  1046. }
  1047. //string Pre = VenCode + "_" + queryParam["BatchCode"].ToString() + "_" + queryParam["InvCode"].ToString() + "_" + DateTime.Now.ToString("yyyyMMdd") + "_" + queryParam["EATTRIBUTE3"].ToString() + "_" + (int)LOTQTY + "_";
  1048. string LotNo = GetSerialCode(jo["WorkPoint"].ToString(), "ICSITEMLot", "LotNO", Pre, 4);
  1049. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  1050. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  1051. LotNo, jo["POCode"].ToString(), jo["PORow"].ToString(), MUSER, MUSERNAME, jo["WorkPoint"].ToString());
  1052. sql += string.Format(@" insert into ICSInventoryLot
  1053. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  1054. )
  1055. select
  1056. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','200','{3}','{4}', getdate(),'{5}','{9}'
  1057. from ICSPurchaseOrder where POCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  1058. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, jo["WorkPoint"].ToString(), jo["POCode"].ToString(), jo["PORow"].ToString(), str1, jo["Amount"].ToString(), jo["ExpirationDate"].ToString());
  1059. sql += "\r\n";
  1060. }
  1061. }
  1062. //变更操作时间显示在列表中
  1063. 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());
  1064. count = SqlHelper.CmdExecuteNonQueryLi(sql);
  1065. }
  1066. return count;
  1067. }
  1068. /// <summary>
  1069. /// 生成条码
  1070. /// </summary>
  1071. /// <param name="POCode"></param>
  1072. /// <param name="PORow"></param>
  1073. /// <param name="keyValue"></param>
  1074. /// 已改
  1075. /// <returns></returns>
  1076. public int SubmitFormWeiWai(string OOCode, string Sequence, string keyValue, string WorkPoint,string IsEable)
  1077. {
  1078. int RowNumber = Convert.ToInt32(SqlHelper.GetItemsDetails("PORowZero"));
  1079. var queryParam = keyValue.ToJObject();
  1080. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1081. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  1082. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  1083. decimal PageNUM = Convert.ToDecimal(queryParam["PageNUM"].ToString());
  1084. decimal Quantity = Convert.ToDecimal(queryParam["Quantity"].ToString());
  1085. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  1086. decimal LOTQTY = minPackQty;
  1087. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1088. string VenCode = GetVendorCode(OOCode, Sequence, WorkPoint);
  1089. string Pre = OOCode + Sequence.PadLeft(RowNumber, '0');
  1090. string sql = string.Empty;
  1091. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");
  1092. //string VendorLot = queryParam["VendorLot"].ToString();
  1093. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1094. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1095. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  1096. string sqls = string.Empty;
  1097. string Colspan = "";
  1098. string str1 = "";
  1099. 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();
  1100. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan,WorkPoint);
  1101. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  1102. if (ExtensionID == null)
  1103. {
  1104. str1 = Guid.NewGuid().ToString();
  1105. 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)
  1106. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  1107. 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(),
  1108. MUSER, MUSERNAME, WorkPoint);
  1109. }
  1110. else if (ExtensionID != null)
  1111. {
  1112. str1 = ExtensionID.ToString();
  1113. }
  1114. if (IsEable == "" || IsEable == "0")
  1115. {
  1116. for (int i = 0; i < createPageCount; i++)
  1117. {
  1118. if (i + 1 == createPageCount)
  1119. {
  1120. if (minPackQty * createPageCount > thisCreateQty)
  1121. {
  1122. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  1123. }
  1124. }
  1125. string LotNo = GetSerialCode(WorkPoint, "ICSITEMLot", "LotNO", Pre, 5);
  1126. // sqls= string.Format(@"select * from ICSInventoryLotDetail where TransCode='{0}' and TransSequence='{1}' )",
  1127. // POCode, PORow);
  1128. //DataTable dtASN = SqlHelper.GetDataTableBySql(sqls);
  1129. //if (dtASN == null && dtASN.Rows.Count <= 0)
  1130. //{
  1131. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  1132. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  1133. LotNo, OOCode, Sequence, MUSER, MUSERNAME, WorkPoint);
  1134. //}
  1135. //if (SqlHelper.ExecuteNonQuery(sqls)>0)
  1136. //{
  1137. sql += string.Format(@" insert into ICSInventoryLot
  1138. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  1139. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  1140. select
  1141. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','201','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  1142. from ICSOutsourcingOrder where OOCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  1143. 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(),
  1144. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  1145. sql += "\r\n";
  1146. //}
  1147. }
  1148. }
  1149. else
  1150. {
  1151. var CartonCount = Math.Ceiling(createPageCount / PageNUM);
  1152. decimal Count = 0;
  1153. for (int j = 0; j < PageNUM; j++)
  1154. {
  1155. object CARID = Guid.NewGuid();
  1156. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  1157. sql += @"INSERT INTO dbo.ICSContainer
  1158. ( ID,ContainerCode ,
  1159. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  1160. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint + "','" + VenCode + "','SRM','" + CARID + "','" + Pre + "',1,1,1,1)";
  1161. for (int i = 0; i < CartonCount; i++)
  1162. {
  1163. if (Count >= Quantity)
  1164. {
  1165. break;
  1166. }
  1167. if (j + 1 == PageNUM)
  1168. {
  1169. if (minPackQty * CartonCount * CartonCount > thisCreateQty)
  1170. {
  1171. LOTQTY = thisCreateQty - Count;
  1172. }
  1173. }
  1174. string LotNo = GetSerialCode(WorkPoint, "ICSITEMLot", "LotNO", Pre, 4);
  1175. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  1176. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  1177. LotNo, OOCode, Sequence, MUSER, MUSERNAME, WorkPoint);
  1178. sql += string.Format(@" insert into ICSInventoryLot
  1179. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  1180. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  1181. select
  1182. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','201','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  1183. from ICSOutsourcingOrder where OOCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  1184. 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(),
  1185. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  1186. sql += "\r\n";
  1187. sql += string.Format(@"INSERT INTO dbo.ICSContainerLot
  1188. ( ID ,ContainerID ,LotNo ,
  1189. MUSER ,MUSERName ,MTIME ,WorkPoint )
  1190. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' )", CARID, LotNo, MUSER, MUSERNAME, WorkPoint);
  1191. Count = Count + LOTQTY;
  1192. }
  1193. }
  1194. }
  1195. sql += string.Format(@"UPDATE ICSOutsourcingOrder set MTIME=GETDATE() where OOCode='{0}' and Sequence='{1}' and WorkPoint='{2}' ", OOCode, Sequence, WorkPoint);
  1196. int count = SqlHelper.ExecuteNonQuery(sql);
  1197. return count;
  1198. }
  1199. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  1200. {
  1201. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  1202. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  1203. return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  1204. }
  1205. public string GetVendorCode(string POCode, string PORow, string WorkPoint)
  1206. {
  1207. string sql = string.Format(@"SELECT VenCode FROM dbo.ICSPurchaseOrder
  1208. WHERE POCode='{0}' AND Sequence='{1}' AND WorkPoint='{2}'", POCode, PORow, WorkPoint);
  1209. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1210. string VenCode = string.Empty;
  1211. if (dt != null && dt.Rows.Count > 0)
  1212. {
  1213. VenCode = dt.Rows[0][0].ToString();
  1214. }
  1215. return VenCode;
  1216. }
  1217. /// <summary>
  1218. /// 删除条码
  1219. /// </summary>
  1220. /// <param name="keyValue"></param>
  1221. /// <returns></returns>
  1222. public string DeleteItemLot(string keyValue, string WorkPoint)
  1223. {
  1224. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1225. string msg = string.Empty;
  1226. string sql = string.Format(@"SELECT * FROM dbo.ICSASNDetail
  1227. WHERE LotNo IN (SELECT LotNO FROM dbo.ICSInventoryLot WHERE ID IN ({0})) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  1228. DataTable dtASN = SqlHelper.GetDataTableBySql(sql);
  1229. if (dtASN != null && dtASN.Rows.Count > 0)
  1230. {
  1231. msg = "所选条码已有加入送货单中,请先在送货单中删除!";
  1232. }
  1233. sql = string.Format(@"SELECT * FROM dbo.ICSContainerLot WHERE LotNO IN
  1234. (SELECT LotNO FROM dbo.ICSInventoryLot WHERE ID IN ({0})) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  1235. DataTable dtCarton = SqlHelper.GetDataTableBySql(sql);
  1236. if (dtCarton != null && dtCarton.Rows.Count > 0)
  1237. {
  1238. msg += "所选条码已有加入箱号中,请先在箱号中删除!";
  1239. }
  1240. if (string.IsNullOrEmpty(msg))
  1241. {
  1242. sql = string.Format("DELETE FROM dbo.ICSInventoryLot WHERE ID IN ({0}) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  1243. sql += string.Format(@"delete b from
  1244. ICSInventoryLot a
  1245. inner join dbo.ICSInventoryLotDetail b on a.LotNo = b.LotNo WHERE a.ID IN({0}) and a.WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  1246. SqlHelper.ExecuteNonQuery(sql);
  1247. }
  1248. return msg;
  1249. //keyValue = keyValue.Substring(1, keyValue.Length - 2);
  1250. //string sql = @"DELETE FROM dbo.ICSITEMLot WHERE ID IN (" + keyValue.TrimEnd(',') + ")";
  1251. //int i = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  1252. //return i;
  1253. }
  1254. public DataTable SelectICSExtensionEnable(string BeginTime, string EndTime)
  1255. {
  1256. string sql = @"select ColCode from ICSExtensionEnable
  1257. where Enable=0
  1258. order by cast(EATTRIBUTE1 as int)";
  1259. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1260. return dt;
  1261. }
  1262. public DataTable SelectICSInventoryEnable(string InvCode)
  1263. {
  1264. string sql = @"SELECT case when AmountEnable=1 then '是' else '否' end as AmountEnable
  1265. FROM dbo.ICSInventory WHERE InvCode='"+InvCode+"'";
  1266. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1267. return dt;
  1268. }
  1269. public DataTable SelectICSColumnEnableForLotEnable(string WorkPoint)
  1270. {
  1271. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1272. string sql = @" select ColumnCode from ICSColumnEnable
  1273. where Enable='0' and TableCode='ICSInventoryLot' and WorkPoint='" + WorkPoint + "' order by cast(Code as int)";
  1274. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1275. return dt;
  1276. }
  1277. /// <summary>
  1278. /// 齐套
  1279. /// </summary>
  1280. /// <param name="keyValue"></param>
  1281. /// <returns></returns>
  1282. public object GetQiSetNum(string keyValue)
  1283. {
  1284. int Num = 0;
  1285. string msg = "";
  1286. string APIURL = ConfigurationManager.ConnectionStrings["ERPAPIURL"].ConnectionString + "POCheck";
  1287. string result = HttpPost(APIURL, keyValue);
  1288. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  1289. string MessAge = Obj["Message"].ToString();
  1290. string Success = Obj["Success"].ToString();
  1291. if (Success.ToUpper() == "FALSE")
  1292. {
  1293. msg = MessAge;
  1294. }
  1295. if (msg == "")
  1296. {
  1297. string jsonStr = JsonConvert.DeserializeObject(Obj["Data"].ToString()).ToString();
  1298. var data = JsonConvert.DeserializeObject<dynamic>(jsonStr);
  1299. // 获取 "Data" 的值
  1300. Num = data.Data;
  1301. }
  1302. var Header = new
  1303. {
  1304. msg = msg,
  1305. Num = Num,
  1306. };
  1307. return Header;
  1308. }
  1309. public DataTable GetWWComplete(string BeginTime, string EndTime)
  1310. {
  1311. string sql = @"select Enable from ICSConfiguration where Code='CompleteVerification004'";
  1312. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1313. return dt;
  1314. }
  1315. public DataTable GetLoadShowForColumn(string WorkPoint)
  1316. {
  1317. //string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1318. string sql = @"
  1319. select * from ICSColumnEnable where TableCode='ICSInventoryLot' and WorkPoint='" + WorkPoint + "' order by cast(code as int) ";
  1320. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1321. return dt;
  1322. }
  1323. //接口api解析
  1324. public static string HttpPost(string url, string body)
  1325. {
  1326. try
  1327. {
  1328. Encoding encoding = Encoding.UTF8;
  1329. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  1330. request.Method = "POST";
  1331. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  1332. request.ContentType = "application/json; charset=utf-8";
  1333. byte[] buffer = encoding.GetBytes(body);
  1334. request.ContentLength = buffer.Length;
  1335. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  1336. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  1337. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  1338. {
  1339. return reader.ReadToEnd();
  1340. }
  1341. }
  1342. catch (WebException ex)
  1343. {
  1344. throw new Exception(ex.Message);
  1345. }
  1346. }
  1347. public DataTable GetInventoryIsEnable(string InvCode, string WorkPoint)
  1348. {
  1349. DataTable dt = new DataTable();
  1350. //var queryParam = queryJson.ToJObject();
  1351. List<DbParameter> parameter = new List<DbParameter>();
  1352. //string dtPre = DateTime.Now.ToString("yyyyMMdd");
  1353. string sql = @"SELECT CAST(ContainerEnable as nvarchar(20)) ContainerEnable FROM ICSInventory WHERE invcode='" + InvCode + "'";
  1354. return Repository().FindTableBySql(sql.ToString());
  1355. }
  1356. public DataTable GetInvBatchEnable(string InvCode)
  1357. {
  1358. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1359. string sql = @"select distinct BatchEnable from ICSInventory where InvCode='{0}' and WorkPoint in({1})";
  1360. sql = string.Format(sql, InvCode, WorkPoints);
  1361. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1362. return dt;
  1363. }
  1364. public bool GetInvBatchCardControl(string InvCode,string BatchCode,string PRODUCTDATE)
  1365. {
  1366. bool Flag = false;
  1367. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1368. string SqlSeach = @"select * from dbo.Sys_SRM_ItemsDetail where F_ItemCode='CreateLotCardControl001' and F_EnabledMark='1'";
  1369. DataTable dt = SqlHelper.GetDataTableBySql(SqlSeach);
  1370. if (dt.Rows.Count>0)
  1371. {
  1372. string SeachTime = @" select top 1 a.ProductDate from dbo.ICSInventoryLot a
  1373. inner join dbo.ICSExtension b on a.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint
  1374. where a.InvCode='" + InvCode + "' and b.BatchCode='"+ BatchCode + "' and a.ProductDate>='"+ PRODUCTDATE + "'";
  1375. object ProductDate = SqlHelper.ExecuteScalar(SeachTime);
  1376. if (ProductDate.ToString()!=""|| ProductDate!=null)
  1377. {
  1378. Flag = true;
  1379. }
  1380. }
  1381. return Flag;
  1382. }
  1383. public string ISPOBack()
  1384. {
  1385. string msg = "";
  1386. msg = SqlHelper.GetSHDZDSHItemsDetails("POBack", "");
  1387. return msg;
  1388. }
  1389. public bool IsDDSX(string VenCode, string InvCode, string WorkPoint, string PODate, string POCode, string Sequence,string DDSX)
  1390. {
  1391. string sqlSeach = @"select "+ DDSX + " from ICSPurchaseOrder where POCode='"+ POCode + "' and Sequence='"+ Sequence + "'";
  1392. object Date = SqlHelper.ExecuteScalar(sqlSeach);
  1393. bool ISTrue = false;
  1394. string sql = @" SELECT a.ID, a.POCode,a.Sequence,CONVERT(NVARCHAR(15),a.CreateDateTime,23) AS PODate,
  1395. a.ExtensionID,a.VenCode,ee.VenName,a.InvCode,cc.NGQTY AS RefuseLotQty,dd.returnqty AS BackLotQty,
  1396. 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
  1397. ,CreatePerson,e.ProjectCode,a.SignBackStatus as SignBackStatus,a.MTIME,isnull(b.EATTRIBUTE2,0) as MINQty
  1398. ,b.EffectiveDays,b.EffectiveEnable
  1399. FROM dbo.ICSPurchaseOrder a
  1400. LEFT JOIN dbo.ICSExtension e ON a.ExtensionID=e.ID AND a.WorkPoint=e.WorkPoint
  1401. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  1402. LEFT JOIN (
  1403. SELECT mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY ,ee.WorkPoint
  1404. FROM ICSInventoryLot ee
  1405. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo
  1406. WHERE ISNULL(ee.EATTRIBUTE1,'')=''
  1407. group by mm.TransCode,mm.TransSequence,ee.WorkPoint ) bb
  1408. on a.POCode=bb.TransCode and a.Sequence=bb.TransSequence AND a.WorkPoint=bb.WorkPoint
  1409. left join (
  1410. select c.TransCode,c.TransSequence,SUM(ISNULL(a.Quantity,0)) NGQTY,a.WorkPoint
  1411. from ICSDeliveryNotice a
  1412. left join ICSInventoryLot b on a.EATTRIBUTE1=b.LotNo
  1413. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo
  1414. group by c.TransCode,c.TransSequence,a.WorkPoint,DNType having a.DNType='3') cc
  1415. on a.POCode=cc.TransCode and a.Sequence=cc.TransSequence AND a.WorkPoint=cc.WorkPoint
  1416. left join (select b.POCode,b.Sequence,sum(isnull(a.Quantity,0)) returnqty ,a.WorkPoint
  1417. FROM ICSDeliveryNotice a
  1418. left join ICSPurchaseOrder b on a.PODetailID=b.PODetailID
  1419. group by b.POCode,b.Sequence,a.DNType,a.WorkPoint having a.DNType='2' ) dd
  1420. on a.POCode=dd.POCode and a.Sequence=dd.Sequence AND a.WorkPoint=dd.WorkPoint
  1421. left join ICSVendor ee on a.VenCode=ee.VenCode and a.WorkPoint=ee.WorkPoint
  1422. 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)
  1423. and format(a." + DDSX + " , 'yyyy-MM-dd') < '{3}'";
  1424. sql = string.Format(sql, VenCode, InvCode, WorkPoint, Date.ToDate().ToString("yyyy-MM-dd"));
  1425. DataTable dtcount = SqlHelper.GetDataTableBySql(sql);
  1426. if (dtcount.Rows.Count > 0)
  1427. {
  1428. ISTrue = true;
  1429. }
  1430. return ISTrue;
  1431. }
  1432. public string ISEableDDSX(string VenCode, string InvCode, string WorkPoint, string PODate,string POCode,string Sequence)
  1433. {
  1434. string msg = string.Empty;
  1435. try
  1436. {
  1437. string DDSX = string.Empty;
  1438. string sqldetail = @"SELECT a.F_Define1 FROM Sys_SRM_ItemsDetail a
  1439. LEFT JOIN Sys_SRM_Items b ON a.F_ItemId = b.F_Id
  1440. WHERE b.F_EnCode = 'DDSX' and a.F_EnabledMark='1'";
  1441. DataTable dts = SqlHelper.GetDataTableBySql(sqldetail);
  1442. if (dts.Rows.Count > 0)
  1443. {
  1444. DDSX = dts.Rows[0]["F_Define1"].ToString();
  1445. }
  1446. // DDSX = SqlHelper.GetSHDZDSHItemsDetails("DDSX", WorkPoint);
  1447. if (!string.IsNullOrWhiteSpace(DDSX))
  1448. {
  1449. if (IsDDSX(VenCode, InvCode, WorkPoint, PODate, POCode, Sequence, DDSX))
  1450. {
  1451. msg="请先生成日期前的数据";
  1452. }
  1453. }
  1454. }
  1455. catch (Exception ex)
  1456. {
  1457. msg=ex.Message;
  1458. }
  1459. return msg;
  1460. }
  1461. public DataTable SeachCreateLotOrderByPO()
  1462. {
  1463. // string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1464. string sql = @"select F_ItemCode,F_ItemName,F_Define1,F_Define2 from [Sys_SRM_ItemsDetail] where F_ItemCode ='CreateLotOrderBy001' and F_EnabledMark='1'
  1465. ";
  1466. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1467. return dt;
  1468. }
  1469. public DataTable SeachCreateLotOrderByOO()
  1470. {
  1471. // string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1472. string sql = @"select F_ItemCode,F_ItemName,F_Define1,F_Define2 from [Sys_SRM_ItemsDetail] where F_ItemCode ='CreateLotOrderBy002' and F_EnabledMark='1'
  1473. ";
  1474. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1475. return dt;
  1476. }
  1477. public bool SeachPoArriveDate(string Code, string Row, string Type)
  1478. {
  1479. bool Flag = false;
  1480. string sql = string.Empty;
  1481. if (Type=="1")
  1482. {
  1483. sql = @"select ArriveDate,DeliveryDate,EATTRIBUTE29 from dbo.ICSPurchaseOrder where POCode='" + Code + "' and Sequence='" + Row + "'";
  1484. }
  1485. else
  1486. {
  1487. sql = @"select ArriveDate,DeliveryDate,EATTRIBUTE29 from dbo.ICSOutsourcingOrder where OOCode='" + Code + "' and Sequence='" + Row + "'";
  1488. }
  1489. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1490. if (dt.Rows[0]["ArriveDate"].ToString() != "" || dt.Rows[0]["DeliveryDate"].ToString() != "" || dt.Rows[0]["EATTRIBUTE29"].ToString() != "")
  1491. {
  1492. Flag = true;
  1493. }
  1494. return Flag;
  1495. }
  1496. }
  1497. }