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.

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