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.

12766 lines
752 KiB

1 month ago
  1. using NFine.Data.Extensions;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using NFine.Code;
  6. using NFine.Repository;
  7. using System.Data.Common;
  8. using NFine.Domain._03_Entity.SRM;
  9. using System.Configuration;
  10. using System.Text;
  11. using System.Net;
  12. using Newtonsoft.Json.Linq;
  13. using Newtonsoft.Json;
  14. using System.IO;
  15. using System.Data.SqlClient;
  16. using System.Linq;
  17. using NFine.Application.Models;
  18. using System.Text.RegularExpressions;
  19. using NFine.Domain._03_Entity.JinHuaWMS;
  20. namespace NFine.Application.JinHuaWMS
  21. {
  22. public class WMSCreateItemLotApp : RepositoryFactory<ICSVendor>
  23. {
  24. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  25. {
  26. DataTable dt = new DataTable();
  27. var queryParam = queryJson.ToJObject();
  28. List<DbParameter> parameter = new List<DbParameter>();
  29. object Figure = GetDecimalDigits();
  30. #region [SQL]
  31. string sql = @"select a.ID,y.MOCode,a.ApplyNegCode,a.Sequence,a.SourceDetailID,a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  32. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity
  33. ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount , CAST(a.IssueNegQuantity AS DECIMAL(38,{0})) as IssueNegQuantity ,a.ExtensionID,a.MUSERName,a.MTIME ,
  34. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  35. ,b.EffectiveEnable,b.EffectiveDays
  36. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  37. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  38. a.EATTRIBUTE9,a.EATTRIBUTE10
  39. from ICSMOApplyNegDetail a
  40. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  41. left join 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 from ICSInventoryLot ee
  44. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='1'
  45. where isnull(ee.EATTRIBUTE1,'')=''
  46. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  47. )c
  48. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  49. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  50. inner JOIN ICSMOPick x ON a.SourceDetailID=x.PickID AND a.WorkPoint=x.WorkPoint
  51. left JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
  52. where d.Type='1' and d.Status='2' ";
  53. sql = string.Format(sql, Figure);
  54. #endregion
  55. if (!string.IsNullOrWhiteSpace(queryJson))
  56. {
  57. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  58. {
  59. sql += " and a.ApplyNegCode like '%" + queryParam["POCode"].ToString() + "%' ";
  60. }
  61. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  62. {
  63. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  64. }
  65. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  66. {
  67. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  68. }
  69. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  70. {
  71. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  72. }
  73. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  74. {
  75. sql += " and a.MTIME >= '" + queryParam["FromTime"].ToString() + "' ";
  76. }
  77. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  78. {
  79. sql += " and a.MTIME <= '" + queryParam["ToTime"].ToString() + "' ";
  80. }
  81. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  82. {
  83. string POStatus = queryParam["POStatus"].ToString();
  84. if (POStatus == "0")
  85. {
  86. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  87. }
  88. else if (POStatus == "1")
  89. {
  90. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  91. }
  92. else
  93. {
  94. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  95. }
  96. }
  97. }
  98. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  99. {
  100. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  101. }
  102. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  103. {
  104. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  105. }
  106. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  107. }
  108. /// <summary>
  109. /// 领料子件信息
  110. /// </summary>
  111. /// <param name="MODetailID"></param>
  112. /// <param name="workpoint"></param>
  113. /// <param name="jqgridparam"></param>
  114. /// <returns></returns>
  115. public DataTable GetICSMOPick(string MODetailID, string workpoint, ref Pagination jqgridparam)
  116. {
  117. DataTable dt = new DataTable();
  118. List<DbParameter> parameter = new List<DbParameter>();
  119. object Figure = GetDecimalDigits();
  120. #region [SQL]
  121. string sql = @" SELECT b.InvCode,c.InvName,c.InvStd,InvUnit,b.ID,b.Quantity,b.IssueQuantity,d.WarehouseCode,d.WarehouseName FROM dbo.ICSMO a
  122. LEFT JOIN dbo.ICSMOPick b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
  123. LEFT JOIN dbo.ICSInventory c ON b.InvCode=c.InvCode AND b.WorkPoint=c.WorkPoint
  124. left join dbo.ICSWarehouse d on b.WHCode=d.WarehouseCode and b.WorkPoint=d.WorkPoint
  125. WHERE a.MODetailID='{0}'
  126. ";
  127. sql = string.Format(sql, MODetailID);
  128. #endregion
  129. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  130. }
  131. public DataTable GetSubGridJson(string ApplyNegCode, string Sequence, string Type, string isPrint, ref Pagination jqgridparam)
  132. {
  133. DataTable dt = new DataTable();
  134. object Figure = GetDecimalDigits();
  135. List<DbParameter> parameter = new List<DbParameter>();
  136. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  137. string sql = @" select c.TransCode,c.TransSequence ,a.ID,a.LotNo, CAST( a.Quantity AS DECIMAL(38,{0})) as Quantity ,a.MUSERName,a.MTIME
  138. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  139. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  140. case when isnull(d.ID,'')='' then '' else '' end as isStorage,
  141. case when g.InvIQC='1'and isnull(e.ID,'')='' then '' else '' end as isInspection,
  142. case when isnull(a.LastPrintUser,'')='' then '' else '' end as isPrint,
  143. case when Isnull(g.InvIQC,'0')='1' then '否' else '是' end as isExemption,a.Amount,
  144. convert(varchar(20),a.ProductDate,23) as ProductDate,convert(varchar(20),a.ExpirationDate,23) as ExpirationDate ,g.EffectiveDays,a.EATTRIBUTE4,a.EATTRIBUTE5,Case When isnull(a.EATTRIBUTE30,'')='1' then '是' else '否' end as isUpload
  145. from ICSInventoryLot a
  146. left join (select count(LotNo) LotNoCount,LotNo,WorkPoint from ICSWareHouseLotInfo
  147. group by LotNo,WorkPoint)b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  148. left join ICSInventoryLotDetail c on a.LotNo=c.LotNo and a.WorkPoint=c.WorkPoint
  149. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  150. left join dbo.ICSWareHouseLotInfo d on a.LotNo=d.LotNo and a.WorkPoint=d.WorkPoint
  151. left join ICSInspection e on a.LotNo=e.LotNo and e.Enable='1' and a.WorkPoint=e.WorkPoint
  152. left join ICSInventory g on a.InvCode=g.InvCode and a.WorkPoint=g.WorkPoint
  153. WHERE isnull(a.EATTRIBUTE1,'')='' and a.Type='" + Type + "' and c.TransCode='" + ApplyNegCode + "' and c.TransSequence='" + Sequence + "' and a.WorkPoint in ('" + WorkPoint + "')";
  154. if (!string.IsNullOrWhiteSpace(isPrint))
  155. {
  156. if (isPrint == "0")
  157. {
  158. }
  159. else if (isPrint == "1")
  160. {
  161. sql += " and isnull(LastPrintUser,'')<>''";
  162. }
  163. else
  164. {
  165. sql += " and isnull(LastPrintUser,'')=''";
  166. }
  167. }
  168. sql = string.Format(sql, Figure);
  169. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  170. }
  171. public DataTable GetSubGridJsonForLiKu(string ApplyNegCode, string Sequence, string Type, string isPrint, string isUpLoad, ref Pagination jqgridparam)
  172. {
  173. DataTable dt = new DataTable();
  174. object Figure = GetDecimalDigits();
  175. List<DbParameter> parameter = new List<DbParameter>();
  176. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  177. string sql = @" select c.TransCode,c.TransSequence ,a.ID,a.LotNo, CAST( a.Quantity AS DECIMAL(38,{0})) as Quantity ,a.MUSERName,a.MTIME
  178. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  179. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  180. case when isnull(d.ID,'')='' then '' else '' end as isStorage,
  181. case when g.InvIQC='1'and isnull(e.ID,'')='' then '' else '' end as isInspection,
  182. case when isnull(a.LastPrintUser,'')='' then '' else '' end as isPrint,
  183. case when Isnull(g.InvIQC,'0')='1' then '否' else '是' end as isExemption,a.Amount,
  184. convert(varchar(20),a.ProductDate,23) as ProductDate,convert(varchar(20),a.ExpirationDate,23) as ExpirationDate ,g.EffectiveDays,a.EATTRIBUTE4,a.EATTRIBUTE5,Case When isnull(a.EATTRIBUTE30,'')='1' then '是' else '否' end as isUpload
  185. from ICSInventoryLot a
  186. left join (select count(LotNo) LotNoCount,LotNo,WorkPoint from ICSWareHouseLotInfo
  187. group by LotNo,WorkPoint)b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  188. left join ICSInventoryLotDetail c on a.LotNo=c.LotNo and a.WorkPoint=c.WorkPoint
  189. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  190. left join dbo.ICSWareHouseLotInfo d on a.LotNo=d.LotNo and a.WorkPoint=d.WorkPoint
  191. left join ICSInspection e on a.LotNo=e.LotNo and e.Enable='1' and a.WorkPoint=e.WorkPoint
  192. left join ICSInventory g on a.InvCode=g.InvCode and a.WorkPoint=g.WorkPoint
  193. WHERE isnull(a.EATTRIBUTE1,'')='' and a.Type='" + Type + "' and c.TransCode='" + ApplyNegCode + "' and c.TransSequence='" + Sequence + "' and a.WorkPoint in ('" + WorkPoint + "')";
  194. if (!string.IsNullOrWhiteSpace(isPrint))
  195. {
  196. if (isPrint == "0")
  197. {
  198. }
  199. else if (isPrint == "1")
  200. {
  201. sql += " and isnull(LastPrintUser,'')<>''";
  202. }
  203. else
  204. {
  205. sql += " and isnull(LastPrintUser,'')=''";
  206. }
  207. if (isUpLoad == "1")
  208. {
  209. sql += " and isnull(a.EATTRIBUTE30,'')='1' ";
  210. }
  211. else if (isUpLoad == "2")
  212. {
  213. sql += " and isnull(a.EATTRIBUTE30,'')=''";
  214. }
  215. }
  216. sql = string.Format(sql, Figure);
  217. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  218. }
  219. /// <summary>
  220. /// 点击生成条码
  221. /// </summary>
  222. public DataTable GetSubGridJsonByCreate(string ApplyNegCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  223. {
  224. DataTable dt = new DataTable();
  225. object Figure = GetDecimalDigits();
  226. List<DbParameter> parameter = new List<DbParameter>();
  227. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn017', " + Quantity + ",1,2,'')";
  228. object Num = SqlHelper.ExecuteScalar(SeachNum);
  229. string sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  230. CAST( a.Amount as DECIMAL(38,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty ,
  231. CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  232. CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays, case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ,
  233. d.ProjectCode,d.BatchCode,d.Version,d.Brand,d.cFree1,d.cFree2,d.cFree3,d.cFree4,d.cFree5,d.cFree6,d.cFree7,d.cFree8,d.cFree9,d.cFree10,
  234. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  235. from ICSMOApplyNegDetail a
  236. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  237. left join (
  238. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  239. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='1'
  240. where isnull(a.EATTRIBUTE1,'')=''
  241. group by b.TransCode,b.TransSequence
  242. ) c on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence
  243. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  244. WHERE 1 =1
  245. and a.ApplyNegCode='" + ApplyNegCode + "' and a.Sequence='" + Sequence + "'";
  246. sql += " and a.WorkPoint='" + WorkPoint + "'";
  247. sql = string.Format(sql, Figure);
  248. return Repository().FindTableBySql(sql.ToString());
  249. }
  250. public DataTable GetVendorLotNo(string VenCode, string WorkPoint)
  251. {
  252. DataTable dt = new DataTable();
  253. //var queryParam = queryJson.ToJObject();
  254. List<DbParameter> parameter = new List<DbParameter>();
  255. string dtPre = DateTime.Now.ToString("yyyyMMdd");
  256. string sql = @"EXEC Addins_GetSerialCode '" + WorkPoint + "','ICSITEMLotNo','VendorLotNo','" + VenCode + dtPre + "',2";
  257. return Repository().FindTableBySql(sql.ToString());
  258. }
  259. /// <summary>
  260. /// 生产退料生成条码
  261. /// </summary>
  262. /// <param name="POCode"></param>
  263. /// <param name="PORow"></param>
  264. /// <param name="keyValue"></param>
  265. /// 已改
  266. /// <returns></returns>
  267. public int CreateItemLotNo(string ApplyNegCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  268. {
  269. var queryParam = keyValue.ToJObject();
  270. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  271. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  272. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  273. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  274. decimal LOTQTY = minPackQty;
  275. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  276. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  277. string Pre = "MDN" + ApplyNegCode + (Convert.ToInt32(Sequence)).ToString("D4");
  278. string sql = string.Empty;
  279. //string VendorLot = queryParam["VendorLot"].ToString();
  280. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  281. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  282. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  283. string InvCode = queryParam["ClassCode"].ToString();
  284. string Colspan = "";
  285. string sqls = string.Empty;
  286. string LotNo = string.Empty;
  287. string str1 = "";
  288. List<string> ExtensionIDList = new List<string>();
  289. #region 装箱的功能
  290. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  291. string VenCode = queryParam["VenCode"].ToString();
  292. int PackCount = 0;//每箱放的数量
  293. int Pack_YuShu = 0;//需要平摊的数量
  294. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  295. List<PackModel> List_Pack = new List<PackModel>();
  296. int ZQty = 0;
  297. if (createPackCount > 0)
  298. {
  299. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  300. if (Pack_YuShu == 0)
  301. {
  302. PackCount = (createPageCount / createPackCount);
  303. }
  304. else
  305. {
  306. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  307. }
  308. for (int jj = 0; jj < createPackCount; jj++)
  309. {
  310. object CARID = Guid.NewGuid();
  311. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  312. sql += @" INSERT INTO dbo.ICSContainer
  313. ( ID,ContainerCode ,
  314. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  315. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  316. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  317. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  318. PackModel PP = new PackModel();
  319. PP.ID = CARID.ToString();
  320. PP.PackCode = Carton;
  321. if (jj < Pack_YuShu)
  322. {
  323. PP.FristBarIndex = ZQty;
  324. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  325. }
  326. else
  327. {
  328. PP.FristBarIndex = ZQty;
  329. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  330. }
  331. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  332. List_Pack.Add(PP);
  333. }
  334. }
  335. #endregion
  336. for (int i = 0; i < createPageCount; i++)
  337. {
  338. if (i + 1 == createPageCount)
  339. {
  340. if (minPackQty * createPageCount > thisCreateQty)
  341. {
  342. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  343. }
  344. }
  345. 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();
  346. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  347. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  348. bool flag = true;
  349. foreach (var item in ExtensionIDList)
  350. {
  351. if (item == Colspan + WorkPoint)
  352. {
  353. flag = false;
  354. }
  355. }
  356. if (ExtensionID == null && flag == true)
  357. {
  358. str1 = Guid.NewGuid().ToString();
  359. 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)
  360. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  361. 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(),
  362. MUSER, MUSERNAME, WorkPoints);
  363. }
  364. else if (ExtensionID != null)
  365. {
  366. str1 = ExtensionID.ToString();
  367. }
  368. ExtensionIDList.Add(Colspan + WorkPoint);
  369. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  370. if (AMEnable == "true")
  371. {
  372. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  373. }
  374. else
  375. {
  376. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  377. }
  378. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  379. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  380. LotNo, ApplyNegCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  381. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  382. //{
  383. sql += string.Format(@"insert into ICSInventoryLot
  384. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  385. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  386. select
  387. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','1','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  388. from ICSMOApplyNegDetail where ApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  389. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, ApplyNegCode, Sequence, str1, Convert.ToDecimal(Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  390. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  391. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  392. sql += "\r\n";
  393. //装箱的功能
  394. if (List_Pack.Count > 0)
  395. {
  396. PackModel mm = new PackModel();
  397. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  398. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  399. ( ID ,ContainerID ,LotNo ,
  400. MUSER ,MUSERName ,MTIME ,WorkPoint )
  401. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  402. }
  403. //}
  404. }
  405. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  406. return count;
  407. }
  408. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  409. {
  410. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  411. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  412. //return Repository().FindTableBySql(sql.ToString());
  413. return SqlHelper.ExecuteScalar(sql).ToString();
  414. //return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  415. }
  416. /// <summary>
  417. /// 删除条码
  418. /// </summary>
  419. /// <param name="keyValue"></param>
  420. /// <returns></returns>
  421. public string DeleteItemLot(string keyValue)
  422. {
  423. try
  424. {
  425. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  426. string msg = string.Empty;
  427. string sql = string.Format(@"SELECT * FROM dbo.ICSInspection
  428. WHERE LotNo IN (SELECT LotNO FROM dbo.ICSInventoryLot WHERE ID IN ({0})) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  429. DataTable dtASN = SqlHelper.GetDataTableBySql(sql);
  430. if (dtASN != null && dtASN.Rows.Count > 0)
  431. {
  432. msg = "所选条码已生成检验单,无法删除!";
  433. }
  434. sql = string.Format(@"SELECT * FROM dbo.ICSWareHouseLotInfo WHERE LotNO IN
  435. (SELECT LotNO FROM dbo.ICSInventoryLot WHERE ID IN ({0})) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  436. DataTable dtCarton = SqlHelper.GetDataTableBySql(sql);
  437. if (dtCarton != null && dtCarton.Rows.Count > 0)
  438. {
  439. msg += "所选条码已入库,无法删除!";
  440. }
  441. sql = string.Format(@"SELECT LotNO FROM dbo.ICSInventoryLot WHERE ID IN ({0}) and WorkPoint in ('{1}') AND ISNULL(EATTRIBUTE30,'')='1'", keyValue.TrimEnd(','), WorkPoint);
  442. DataTable lkdt = SqlHelper.GetDataTableBySql(sql);
  443. if (lkdt != null && lkdt.Rows.Count > 0)
  444. {
  445. msg += "所选条码已上传立库,无法删除!";
  446. }
  447. if (string.IsNullOrEmpty(msg))
  448. {
  449. string sqls = string.Format("DELETE FROM ICSInventoryLotDetail WHERE LotNO IN (select LotNO from ICSInventoryLot where ID in ({0}) ) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  450. sqls += string.Format("DELETE FROM dbo.ICSContainerLot WHERE LotNO IN (select LotNO from ICSInventoryLot where ID in ({0}) ) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);//删除箱子 条码对应关系
  451. sqls += string.Format("DELETE FROM dbo.ICSInventoryLot WHERE ID IN ({0}) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  452. SqlHelper.CmdExecuteNonQueryLi(sqls);
  453. }
  454. return msg;
  455. }
  456. catch (Exception ex)
  457. {
  458. return ex.Message;
  459. }
  460. }
  461. public DataTable GetGridJsonWeiWai(string queryJson, ref Pagination jqgridparam)
  462. {
  463. DataTable dt = new DataTable();
  464. var queryParam = queryJson.ToJObject();
  465. List<DbParameter> parameter = new List<DbParameter>();
  466. object Figure = GetDecimalDigits();
  467. #region [SQL]
  468. string sql = @"select a.ID,a.OApplyNegCode,a.Sequence,a.SourceDetailID,a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  469. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity
  470. ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount , CAST(a.IssueNegQuantity AS DECIMAL(38,{0})) as IssueNegQuantity,a.ExtensionID,a.MUSERName,a.MTIME ,
  471. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  472. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  473. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  474. a.EATTRIBUTE9,a.EATTRIBUTE10
  475. from ICSOApplyNegDetail a
  476. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  477. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  478. left join (
  479. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  480. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='2'
  481. where isnull(ee.EATTRIBUTE1,'')=''
  482. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  483. )c
  484. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  485. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  486. WHERE d.Type='1' ";
  487. sql = string.Format(sql, Figure);
  488. #endregion
  489. if (!string.IsNullOrWhiteSpace(queryJson))
  490. {
  491. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  492. {
  493. sql += " and a.OApplyNegCode like '%" + queryParam["POCode"].ToString() + "%' ";
  494. }
  495. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  496. {
  497. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  498. }
  499. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  500. {
  501. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  502. }
  503. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  504. {
  505. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  506. }
  507. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  508. {
  509. sql += " and d.CreateDateTime >= '" + queryParam["FromTime"].ToString() + "' ";
  510. }
  511. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  512. {
  513. sql += " and d.CreateDateTime <= '" + queryParam["ToTime"].ToString() + "' ";
  514. }
  515. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  516. {
  517. sql += " and d.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  518. }
  519. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  520. {
  521. string POStatus = queryParam["POStatus"].ToString();
  522. if (POStatus == "0")
  523. {
  524. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  525. }
  526. else if (POStatus == "1")
  527. {
  528. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  529. }
  530. else
  531. {
  532. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  533. }
  534. }
  535. }
  536. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  537. {
  538. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  539. }
  540. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  541. {
  542. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  543. }
  544. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  545. }
  546. public DataTable GetSubGridJsonWeiWai(string OApplyNegCode, string Sequence, ref Pagination jqgridparam)
  547. {
  548. DataTable dt = new DataTable();
  549. object Figure = GetDecimalDigits();
  550. //var queryParam = queryJson.ToJObject();
  551. List<DbParameter> parameter = new List<DbParameter>();
  552. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  553. string sql = @" select c.TransCode,c.TransSequence ,a.ID,a.LotNo,CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity from ICSInventoryLot a
  554. left join (select count(LotNo) LotNoCount,LotNo,WorkPoint from ICSWareHouseLotInfo
  555. group by LotNo,WorkPoint)b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  556. left join ICSInventoryLotDetail c on a.LotNo=c.LotNo
  557. WHERE c.TransCode='" + OApplyNegCode + "' and c.TransSequence='" + Sequence + "' and a.WorkPoint in (" + WorkPoint + ")";
  558. sql = string.Format(sql, Figure);
  559. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  560. }
  561. /// <summary>
  562. /// 点击委外退料生成条码
  563. /// </summary>
  564. public DataTable GetSubGridJsonWeiWaiByCreate(string OApplyNegCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  565. {
  566. DataTable dt = new DataTable();
  567. object Figure = GetDecimalDigits();
  568. List<DbParameter> parameter = new List<DbParameter>();
  569. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn008', " + Quantity + ",1,2,'')";
  570. object Num = SqlHelper.ExecuteScalar(SeachNum);
  571. string sql = @" select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  572. CAST( a.Amount as DECIMAL(38,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  573. CAST( ( " + Num + @" -ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  574. CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays , case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  575. ,e.ProjectCode,e.BatchCode,e.Version,e.Brand,e.cFree1,e.cFree2,e.cFree3,e.cFree4,e.cFree5,e.cFree6,e.cFree7,e.cFree8,e.cFree9,e.cFree10,
  576. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  577. from ICSOApplyNegDetail a
  578. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  579. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  580. left join (
  581. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  582. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='2'
  583. where isnull(a.EATTRIBUTE1,'')=''
  584. group by b.TransCode,b.TransSequence
  585. ) c on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence
  586. left join ICSExtension e on a.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  587. WHERE d.Type='1'
  588. and a.OApplyNegCode='" + OApplyNegCode + "' and a.Sequence='" + Sequence + "'";
  589. sql += " and a.WorkPoint='" + WorkPoint + "'";
  590. sql = string.Format(sql, Figure);
  591. return Repository().FindTableBySql(sql.ToString());
  592. }
  593. /// <summary>
  594. /// 委外退料生成条码
  595. /// </summary>
  596. /// <param name="POCode"></param>
  597. /// <param name="PORow"></param>
  598. /// <param name="keyValue"></param>
  599. /// 已改
  600. /// <returns></returns>
  601. public int SubmitFormWeiWai(string OApplyNegCode, string Sequence, string keyValue, string WorkPoint)
  602. {
  603. var queryParam = keyValue.ToJObject();
  604. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  605. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  606. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  607. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  608. decimal LOTQTY = minPackQty;
  609. string Pre = "OI" + OApplyNegCode + (Convert.ToInt32(Sequence)).ToString("D4");
  610. string sql = string.Empty;
  611. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  612. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  613. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  614. string sqls = string.Empty;
  615. string Colspan = "";
  616. List<string> ExtensionIDList = new List<string>();
  617. string str1 = "";
  618. #region 装箱的功能
  619. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  620. string VenCode = queryParam["VenCode"].ToString();
  621. int PackCount = 0;//每箱放的数量
  622. int Pack_YuShu = 0;//需要平摊的数量
  623. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  624. List<PackModel> List_Pack = new List<PackModel>();
  625. int ZQty = 0;
  626. if (createPackCount > 0)
  627. {
  628. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  629. if (Pack_YuShu == 0)
  630. {
  631. PackCount = (createPageCount / createPackCount);
  632. }
  633. else
  634. {
  635. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  636. }
  637. for (int jj = 0; jj < createPackCount; jj++)
  638. {
  639. object CARID = Guid.NewGuid();
  640. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  641. sql += @" INSERT INTO dbo.ICSContainer
  642. ( ID,ContainerCode ,
  643. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  644. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  645. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  646. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  647. PackModel PP = new PackModel();
  648. PP.ID = CARID.ToString();
  649. PP.PackCode = Carton;
  650. if (jj < Pack_YuShu)
  651. {
  652. PP.FristBarIndex = ZQty;
  653. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  654. }
  655. else
  656. {
  657. PP.FristBarIndex = ZQty;
  658. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  659. }
  660. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  661. List_Pack.Add(PP);
  662. }
  663. }
  664. #endregion
  665. for (int i = 0; i < createPageCount; i++)
  666. {
  667. if (i + 1 == createPageCount)
  668. {
  669. if (minPackQty * createPageCount > thisCreateQty)
  670. {
  671. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  672. }
  673. }
  674. 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();
  675. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  676. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  677. bool flag = true;
  678. foreach (var item in ExtensionIDList)
  679. {
  680. if (item == Colspan + WorkPoint)
  681. {
  682. flag = false;
  683. }
  684. }
  685. if (ExtensionID == null && flag == true)
  686. {
  687. str1 = Guid.NewGuid().ToString();
  688. 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)
  689. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  690. 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(),
  691. MUSER, MUSERNAME, WorkPoints);
  692. }
  693. else if (ExtensionID != null)
  694. {
  695. str1 = ExtensionID.ToString();
  696. }
  697. ExtensionIDList.Add(Colspan + WorkPoint);
  698. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  699. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  700. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  701. LotNo, OApplyNegCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  702. sql += string.Format(@"insert into ICSInventoryLot
  703. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  704. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  705. select
  706. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','2','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  707. from ICSOApplyNegDetail where OApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  708. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, OApplyNegCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  709. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  710. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  711. sql += "\r\n";
  712. //装箱的功能
  713. if (List_Pack.Count > 0)
  714. {
  715. PackModel mm = new PackModel();
  716. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  717. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  718. ( ID ,ContainerID ,LotNo ,
  719. MUSER ,MUSERName ,MTIME ,WorkPoint )
  720. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  721. }
  722. }
  723. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  724. return count;
  725. }
  726. /// <summary>
  727. /// 委外退料生成条码
  728. /// </summary>
  729. /// <param name="POCode"></param>
  730. /// <param name="PORow"></param>
  731. /// <param name="keyValue"></param>
  732. /// 已改
  733. /// <returns></returns>
  734. public int SubmitFormWeiWaiNew(string OApplyNegCode, string Sequence, string keyValue, string WorkPoint)
  735. {
  736. var queryParam = keyValue.ToJObject();
  737. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  738. // decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  739. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  740. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  741. List<decimal> lotQtys = new List<decimal>();
  742. foreach (var jLotno in jLotnos)
  743. {
  744. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  745. lotQtys.Add(qty);
  746. }
  747. int createPageCount = lotQtys.Count();
  748. string Pre = "OI" + OApplyNegCode + (Convert.ToInt32(Sequence)).ToString("D4");
  749. string sql = string.Empty;
  750. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  751. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  752. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  753. string sqls = string.Empty;
  754. string Colspan = "";
  755. List<string> ExtensionIDList = new List<string>();
  756. string str1 = "";
  757. #region 装箱的功能
  758. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  759. string VenCode = queryParam["VenCode"].ToString();
  760. int PackCount = 0;//每箱放的数量
  761. int Pack_YuShu = 0;//需要平摊的数量
  762. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  763. List<PackModel> List_Pack = new List<PackModel>();
  764. int ZQty = 0;
  765. if (createPackCount > 0)
  766. {
  767. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  768. if (Pack_YuShu == 0)
  769. {
  770. PackCount = (createPageCount / createPackCount);
  771. }
  772. else
  773. {
  774. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  775. }
  776. for (int jj = 0; jj < createPackCount; jj++)
  777. {
  778. object CARID = Guid.NewGuid();
  779. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  780. sql += @" INSERT INTO dbo.ICSContainer
  781. ( ID,ContainerCode ,
  782. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  783. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  784. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  785. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  786. PackModel PP = new PackModel();
  787. PP.ID = CARID.ToString();
  788. PP.PackCode = Carton;
  789. if (jj < Pack_YuShu)
  790. {
  791. PP.FristBarIndex = ZQty;
  792. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  793. }
  794. else
  795. {
  796. PP.FristBarIndex = ZQty;
  797. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  798. }
  799. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  800. List_Pack.Add(PP);
  801. }
  802. }
  803. #endregion
  804. for (int i = 0; i < createPageCount; i++)
  805. {
  806. decimal LOTQTY = lotQtys[i];
  807. 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();
  808. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  809. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  810. bool flag = true;
  811. foreach (var item in ExtensionIDList)
  812. {
  813. if (item == Colspan + WorkPoint)
  814. {
  815. flag = false;
  816. }
  817. }
  818. if (ExtensionID == null && flag == true)
  819. {
  820. str1 = Guid.NewGuid().ToString();
  821. 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)
  822. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  823. 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(),
  824. MUSER, MUSERNAME, WorkPoints);
  825. }
  826. else if (ExtensionID != null)
  827. {
  828. str1 = ExtensionID.ToString();
  829. }
  830. ExtensionIDList.Add(Colspan + WorkPoint);
  831. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  832. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  833. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  834. LotNo, OApplyNegCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  835. sql += string.Format(@"insert into ICSInventoryLot
  836. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  837. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  838. select
  839. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','2','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  840. from ICSOApplyNegDetail where OApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  841. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, OApplyNegCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  842. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  843. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  844. sql += "\r\n";
  845. //装箱的功能
  846. if (List_Pack.Count > 0)
  847. {
  848. PackModel mm = new PackModel();
  849. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  850. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  851. ( ID ,ContainerID ,LotNo ,
  852. MUSER ,MUSERName ,MTIME ,WorkPoint )
  853. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  854. }
  855. }
  856. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  857. return count;
  858. }
  859. public DataTable GetGridJsonChengPing(string queryJson, ref Pagination jqgridparam)
  860. {
  861. DataTable dt = new DataTable();
  862. var queryParam = queryJson.ToJObject();
  863. List<DbParameter> parameter = new List<DbParameter>();
  864. object Figure = GetDecimalDigits();
  865. #region [SQL]
  866. string sql = @" select distinct a.ID, a.MODetailID,a.MOCode,a.Sequence,
  867. CAST(a.RCVQuantity AS DECIMAL(38,{0})) as RCVQuantity ,a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  868. CAST( a.Quantity AS DECIMAL(38,{0})) as Quantity,CAST( a.Amount as DECIMAL(38,{0})) as Amount,a.StartDate,a.WHCode,warehouse.WarehouseName as WHName
  869. ,a.DueDate,a.MOStatus,a.ExtensionID,a.MUSERName,a.MTIME ,
  870. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY ,
  871. CAST( a.Quantity AS DECIMAL(38,{0})) -CAST(a.RCVQuantity AS DECIMAL(38,{0})) as ERPNum,CAST((a.Quantity-ISnull(a.RCVQuantity,0)) AS DECIMAL(38,{0})) as NRCVQuantity,a.MOMemo
  872. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  873. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  874. a.EATTRIBUTE9,a.EATTRIBUTE10,a.EATTRIBUTE11,a.EATTRIBUTE12,b.MTIME as TMTime,dep.DepName,a.CreateDateTime,b.EATTRIBUTE1 as ICSInventoryEATTRIBUTE1 ,b.EATTRIBUTE2 as ICSInventoryEATTRIBUTE2,b.EATTRIBUTE3 as ICSInventoryEATTRIBUTE3,b.EATTRIBUTE4 as ICSInventoryEATTRIBUTE4,b.EATTRIBUTE5 as ICSInventoryEATTRIBUTE5,b.EATTRIBUTE6 as ICSInventoryEATTRIBUTE6,b.EATTRIBUTE7 as ICSInventoryEATTRIBUTE7,b.EATTRIBUTE8 as ICSInventoryEATTRIBUTE8,
  875. b.EATTRIBUTE9 as ICSInventoryEATTRIBUTE9,b.EATTRIBUTE10 as ICSInventoryEATTRIBUTE10
  876. from ICSMO a
  877. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  878. left join (
  879. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  880. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='3'
  881. where isnull(ee.EATTRIBUTE1,'')=''
  882. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  883. )c
  884. on a.MOCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  885. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  886. left join ICSDepartment dep ON dep.DepCode=a.DepCode and a.WorkPoint=dep.WorkPoint
  887. left join ICSWarehouse warehouse on a.WHCode=warehouse.WarehouseCode and a.WorkPoint=warehouse.WorkPoint ";
  888. sql += " WHERE 1=1 and a.MOStatus<>'3' ";
  889. sql = string.Format(sql, Figure);
  890. #endregion
  891. if (!string.IsNullOrWhiteSpace(queryJson))
  892. {
  893. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  894. {
  895. sql += " and a.MOCode like '%" + queryParam["POCode"].ToString() + "%' ";
  896. }
  897. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  898. {
  899. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  900. }
  901. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  902. {
  903. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  904. }
  905. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  906. {
  907. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  908. }
  909. if (!string.IsNullOrWhiteSpace(queryParam["SelGDLX"].ToString()))
  910. {
  911. sql += " and a.MOType like '%" + queryParam["SelGDLX"].ToString() + "%' ";
  912. }
  913. if (!string.IsNullOrWhiteSpace(queryParam["InvStd"].ToString()))
  914. {
  915. sql += " and b.InvStd like '%" + queryParam["InvStd"].ToString() + "%' ";
  916. }
  917. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  918. {
  919. sql += " and a.CreateDateTime >= '" + queryParam["FromTime"].ToString() + "' ";
  920. }
  921. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  922. {
  923. sql += " and a.CreateDateTime <= '" + queryParam["ToTime"].ToString() + "' ";
  924. }
  925. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  926. {
  927. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  928. }
  929. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  930. {
  931. string POStatus = queryParam["POStatus"].ToString();
  932. if (POStatus == "0")
  933. {
  934. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  935. }
  936. else if (POStatus == "1")
  937. {
  938. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  939. }
  940. else
  941. {
  942. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)>0";
  943. }
  944. }
  945. if (!string.IsNullOrWhiteSpace(queryParam["WHStatus"].ToString()))
  946. {
  947. string WHStatus = queryParam["WHStatus"].ToString();
  948. if (WHStatus == "0")
  949. {
  950. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  951. }
  952. else if (WHStatus == "1")
  953. {
  954. sql += " and a.Quantity-ISNULL(a.RCVQuantity,0)>0 ";
  955. }
  956. else
  957. {
  958. sql += " and a.Quantity-ISNULL(a.RCVQuantity,0)=0 ";
  959. }
  960. }
  961. }
  962. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  963. {
  964. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  965. }
  966. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  967. {
  968. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  969. }
  970. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  971. }
  972. /// <summary>
  973. /// 点击成品生成条码(成品)
  974. /// </summary>
  975. public DataTable GetSubGridJsonChengPingByCreate(string MOCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  976. {
  977. DataTable dt = new DataTable();
  978. object Figure = GetDecimalDigits();
  979. List<DbParameter> parameter = new List<DbParameter>();
  980. // string sql = @"select d.Enable, a.InvCode,b.ClassCode,b.InvName,b.InvStd,b.InvUnit, CAST( a.Quantity AS DECIMAL(18,{0})) as Quantity,CAST( a.Amount as DECIMAL(18,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(18,{0})) as CreatedQty,
  981. //CAST( (a.Quantity-ISNULL(c.LOTQTY,0)) as DECIMAL(18,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(18,{0})) as EffectiveDays
  982. // ,e.ProjectCode,e.BatchCode,e.Version,e.Brand,e.cFree1,e.cFree2,e.cFree3,e.cFree4,e.cFree5,e.cFree6,e.cFree7,e.cFree8,e.cFree9,e.cFree10,''as EATTRIBUTE2,''as EATTRIBUTE3,''as EATTRIBUTE4,''as EATTRIBUTE5
  983. // from ICSMO a
  984. // left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  985. // left join (
  986. // select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  987. // left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='3'
  988. // where isnull(a.EATTRIBUTE1,'')=''
  989. // group by b.TransCode,b.TransSequence
  990. // ) c on a.MOCode=c.TransCode and a.Sequence=c.TransSequence
  991. // left join ICSConfiguration d on d.Code='CompleteVerification001' and a.WorkPoint =d.WorkPoint
  992. // left join ICSExtension e on a.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  993. // WHERE 1 =1 and a.MOStatus<>'3'
  994. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn011', " + Quantity + ",1,2,'')";
  995. object Num = SqlHelper.ExecuteScalar(SeachNum);
  996. string sql = @" select d.Enable, a.InvCode,b.ClassCode,b.InvName,b.InvStd,b.InvUnit,
  997. CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  998. CAST( a.Amount as DECIMAL(38,{0})) as Amount,
  999. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  1000. CAST( ( " + Num + @" -ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  1001. CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays , case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  1002. ,e.ProjectCode,e.BatchCode,e.Version,e.Brand,e.cFree1,e.cFree2,e.cFree3,e.cFree4,e.cFree5,e.cFree6,e.cFree7,e.cFree8,e.cFree9,e.cFree10,
  1003. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  1004. from ICSMO a
  1005. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  1006. left join (
  1007. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  1008. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='3'
  1009. where isnull(a.EATTRIBUTE1,'')=''
  1010. group by b.TransCode,b.TransSequence
  1011. ) c on a.MOCode=c.TransCode and a.Sequence=c.TransSequence
  1012. left join ICSConfiguration d on d.Code='CompleteVerification001' and a.WorkPoint =d.WorkPoint
  1013. left join ICSExtension e on a.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  1014. WHERE 1 =1 and a.MOStatus<>'3'
  1015. and a.MOCode='" + MOCode + "' and a.Sequence='" + Sequence + "'";
  1016. sql += " and a.WorkPoint='" + WorkPoint + "'";
  1017. sql = string.Format(sql, Figure);
  1018. return Repository().FindTableBySql(sql.ToString());
  1019. }
  1020. /// <summary>
  1021. /// 成品生成条码
  1022. /// </summary>
  1023. /// <param name="POCode"></param>
  1024. /// <param name="PORow"></param>
  1025. /// <param name="keyValue"></param>
  1026. /// 已改
  1027. /// <returns></returns>
  1028. ///传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  1029. public int SubmitFormChengPing(string MOCode, string Sequence, string keyValue, string WorkPoint, float Quantity)
  1030. {
  1031. var queryParam = keyValue.ToJObject();
  1032. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1033. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  1034. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  1035. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  1036. decimal LOTQTY = minPackQty;
  1037. string InvCode = queryParam["ClassCode"].ToString();
  1038. string InvCodeLP = queryParam["InvCode"].ToString();
  1039. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1040. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  1041. //string Pre = InvCodeLP + "|" + MOCode + "|" + (int)Quantity + "|" + DateTime.Now.ToString("yyyyMMdd") + "|";
  1042. string Pre = "CP" + MOCode + (Convert.ToInt32(Sequence)).ToString("D4");
  1043. string sql = string.Empty;
  1044. //string VendorLot = queryParam["VendorLot"].ToString();
  1045. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1046. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1047. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  1048. string sqls = string.Empty;
  1049. string Colspan = "";
  1050. string str1 = "";
  1051. string LotNo = string.Empty;
  1052. List<string> ExtensionIDList = new List<string>();
  1053. #region 装箱的功能
  1054. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  1055. string VenCode = queryParam["VenCode"].ToString();
  1056. int PackCount = 0;//每箱放的数量
  1057. int Pack_YuShu = 0;//需要平摊的数量
  1058. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  1059. List<PackModel> List_Pack = new List<PackModel>();
  1060. int ZQty = 0;
  1061. if (createPackCount > 0)
  1062. {
  1063. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  1064. if (Pack_YuShu == 0)
  1065. {
  1066. PackCount = (createPageCount / createPackCount);
  1067. }
  1068. else
  1069. {
  1070. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  1071. }
  1072. for (int jj = 0; jj < createPackCount; jj++)
  1073. {
  1074. object CARID = Guid.NewGuid();
  1075. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  1076. sql += @" INSERT INTO dbo.ICSContainer
  1077. ( ID,ContainerCode ,
  1078. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  1079. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  1080. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  1081. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  1082. PackModel PP = new PackModel();
  1083. PP.ID = CARID.ToString();
  1084. PP.PackCode = Carton;
  1085. if (jj < Pack_YuShu)
  1086. {
  1087. PP.FristBarIndex = ZQty;
  1088. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  1089. }
  1090. else
  1091. {
  1092. PP.FristBarIndex = ZQty;
  1093. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  1094. }
  1095. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  1096. List_Pack.Add(PP);
  1097. }
  1098. }
  1099. #endregion
  1100. for (int i = 0; i < createPageCount; i++)
  1101. {
  1102. if (i + 1 == createPageCount)
  1103. {
  1104. if (minPackQty * createPageCount > thisCreateQty)
  1105. {
  1106. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  1107. }
  1108. }
  1109. 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();
  1110. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  1111. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  1112. bool flag = true;
  1113. foreach (var item in ExtensionIDList)
  1114. {
  1115. if (item == Colspan + WorkPoint)
  1116. {
  1117. flag = false;
  1118. }
  1119. }
  1120. if (ExtensionID == null && flag == true)
  1121. {
  1122. str1 = Guid.NewGuid().ToString();
  1123. 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)
  1124. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  1125. 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(),
  1126. MUSER, MUSERNAME, WorkPoints);
  1127. }
  1128. else if (ExtensionID != null)
  1129. {
  1130. str1 = ExtensionID.ToString();
  1131. }
  1132. ExtensionIDList.Add(Colspan + WorkPoint);
  1133. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  1134. //if (AMEnable == "true")
  1135. //{
  1136. // LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  1137. //}vvv
  1138. //else
  1139. //{
  1140. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 4);
  1141. //}
  1142. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  1143. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  1144. LotNo, MOCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  1145. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  1146. //{
  1147. sql += string.Format(@"insert into ICSInventoryLot
  1148. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  1149. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  1150. select
  1151. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','3','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  1152. from ICSMO where MOCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  1153. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, MOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  1154. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  1155. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  1156. sql += "\r\n";
  1157. //装箱的功能
  1158. if (List_Pack.Count > 0)
  1159. {
  1160. PackModel mm = new PackModel();
  1161. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  1162. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  1163. ( ID ,ContainerID ,LotNo ,
  1164. MUSER ,MUSERName ,MTIME ,WorkPoint )
  1165. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  1166. }
  1167. //}
  1168. }
  1169. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  1170. return count;
  1171. }
  1172. /// <summary>
  1173. /// 成品生成条码
  1174. /// </summary>
  1175. /// <param name="POCode"></param>
  1176. /// <param name="PORow"></param>
  1177. /// <param name="keyValue"></param>
  1178. /// 已改
  1179. /// <returns></returns>
  1180. ///传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  1181. public int SubmitFormChengPingNew(string MOCode, string Sequence, string keyValue, string WorkPoint, float Quantity)
  1182. {
  1183. var queryParam = keyValue.ToJObject();
  1184. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1185. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  1186. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  1187. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  1188. List<decimal> lotQtys = new List<decimal>();
  1189. foreach (var jLotno in jLotnos)
  1190. {
  1191. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  1192. lotQtys.Add(qty);
  1193. }
  1194. int createPageCount = lotQtys.Count();
  1195. string InvCode = queryParam["ClassCode"].ToString();
  1196. string InvCodeLP = queryParam["InvCode"].ToString();
  1197. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1198. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  1199. //string Pre = InvCodeLP + "|" + MOCode + "|" + (int)Quantity + "|" + DateTime.Now.ToString("yyyyMMdd") + "|";
  1200. string Pre = "CP" + MOCode + (Convert.ToInt32(Sequence)).ToString("D4");
  1201. string sql = string.Empty;
  1202. //string VendorLot = queryParam["VendorLot"].ToString();
  1203. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1204. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1205. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  1206. string sqls = string.Empty;
  1207. string Colspan = "";
  1208. string str1 = "";
  1209. string LotNo = string.Empty;
  1210. List<string> ExtensionIDList = new List<string>();
  1211. #region 装箱的功能
  1212. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  1213. string VenCode = queryParam["VenCode"].ToString();
  1214. int PackCount = 0;//每箱放的数量
  1215. int Pack_YuShu = 0;//需要平摊的数量
  1216. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  1217. List<PackModel> List_Pack = new List<PackModel>();
  1218. int ZQty = 0;
  1219. if (createPackCount > 0)
  1220. {
  1221. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  1222. if (Pack_YuShu == 0)
  1223. {
  1224. PackCount = (createPageCount / createPackCount);
  1225. }
  1226. else
  1227. {
  1228. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  1229. }
  1230. for (int jj = 0; jj < createPackCount; jj++)
  1231. {
  1232. object CARID = Guid.NewGuid();
  1233. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  1234. sql += @" INSERT INTO dbo.ICSContainer
  1235. ( ID,ContainerCode ,
  1236. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  1237. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  1238. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  1239. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  1240. PackModel PP = new PackModel();
  1241. PP.ID = CARID.ToString();
  1242. PP.PackCode = Carton;
  1243. if (jj < Pack_YuShu)
  1244. {
  1245. PP.FristBarIndex = ZQty;
  1246. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  1247. }
  1248. else
  1249. {
  1250. PP.FristBarIndex = ZQty;
  1251. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  1252. }
  1253. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  1254. List_Pack.Add(PP);
  1255. }
  1256. }
  1257. #endregion
  1258. for (int i = 0; i < createPageCount; i++)
  1259. {
  1260. var LOTQTY = lotQtys[i];
  1261. 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();
  1262. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  1263. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  1264. bool flag = true;
  1265. foreach (var item in ExtensionIDList)
  1266. {
  1267. if (item == Colspan + WorkPoint)
  1268. {
  1269. flag = false;
  1270. }
  1271. }
  1272. if (ExtensionID == null && flag == true)
  1273. {
  1274. str1 = Guid.NewGuid().ToString();
  1275. 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)
  1276. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  1277. 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(),
  1278. MUSER, MUSERNAME, WorkPoints);
  1279. }
  1280. else if (ExtensionID != null)
  1281. {
  1282. str1 = ExtensionID.ToString();
  1283. }
  1284. ExtensionIDList.Add(Colspan + WorkPoint);
  1285. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  1286. //if (AMEnable == "true")
  1287. //{
  1288. // LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  1289. //}vvv
  1290. //else
  1291. //{
  1292. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 4);
  1293. //}
  1294. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  1295. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  1296. LotNo, MOCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  1297. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  1298. //{
  1299. sql += string.Format(@"insert into ICSInventoryLot
  1300. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  1301. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  1302. select
  1303. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','3','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  1304. from ICSMO where MOCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  1305. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, MOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  1306. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  1307. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  1308. sql += "\r\n";
  1309. //装箱的功能
  1310. if (List_Pack.Count > 0)
  1311. {
  1312. PackModel mm = new PackModel();
  1313. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  1314. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  1315. ( ID ,ContainerID ,LotNo ,
  1316. MUSER ,MUSERName ,MTIME ,WorkPoint )
  1317. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  1318. }
  1319. //}
  1320. }
  1321. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  1322. return count;
  1323. }
  1324. /// <summary>
  1325. /// 成品生成条码
  1326. /// </summary>
  1327. /// <param name="POCode"></param>
  1328. /// <param name="PORow"></param>
  1329. /// <param name="keyValue"></param>
  1330. /// 已改
  1331. /// <returns></returns>
  1332. ///传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  1333. public int SubmitFormChengPingHG(string MOCode, string Sequence, string keyValue, string WorkPoint, float Quantity)
  1334. {
  1335. var queryParam = keyValue.ToJObject();
  1336. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1337. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  1338. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  1339. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  1340. decimal LOTQTY = minPackQty;
  1341. string InvCode = queryParam["ClassCode"].ToString();
  1342. string InvCodeLP = queryParam["InvCode"].ToString();
  1343. //查询 物料编码~成品版本(料品表自定义20字段)~序列号~订单号~车号段(ICSExtension表batchcode字段)~供应商
  1344. string invsql = $"SELECT EATTRIBUTE20,ClassCode,InvStd FROM ICSInventory WITH(nolock) WHERE InvCode='{queryParam["InvCode"]}' AND WorkPoint='{WorkPoints}'";
  1345. var invdt = SqlHelper.CmdExecuteDataTable(invsql);
  1346. string date = DateTime.Now.ToString("yyMMdd");
  1347. //获取当前时段
  1348. string currentPeriod = GetPeriod(DateTime.Now);
  1349. string pattern = @"^P00[1-9].*";
  1350. string Pre = "";
  1351. if (InvCode.StartsWith("Y004"))
  1352. {
  1353. Pre = $"{InvCodeLP}~{invdt.Rows[0]["EATTRIBUTE20"]}~{MOCode}{Sequence}";
  1354. }
  1355. else if (Regex.IsMatch(InvCode.Substring(0, 4), pattern))
  1356. {
  1357. if (invdt.Rows[0]["InvStd"].ToString().StartsWith("DCDC-OBC-PDU"))
  1358. {
  1359. Pre = $"{invdt.Rows[0]["InvStd"]}2101145{date}2000061501700120000436017014{currentPeriod}";
  1360. }
  1361. else
  1362. {
  1363. Pre = $"{InvCodeLP}~{invdt.Rows[0]["EATTRIBUTE20"]}~";
  1364. }
  1365. }
  1366. else
  1367. {
  1368. Pre = "CP" + MOCode + (Convert.ToInt32(Sequence)).ToString("D4");
  1369. }
  1370. string sql = string.Empty;
  1371. //string VendorLot = queryParam["VendorLot"].ToString();
  1372. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1373. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1374. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  1375. string sqls = string.Empty;
  1376. string Colspan = "";
  1377. string str1 = "";
  1378. string LotNo = string.Empty;
  1379. List<string> ExtensionIDList = new List<string>();
  1380. #region 装箱的功能
  1381. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  1382. string VenCode = queryParam["VenCode"].ToString();
  1383. int PackCount = 0;//每箱放的数量
  1384. int Pack_YuShu = 0;//需要平摊的数量
  1385. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  1386. List<PackModel> List_Pack = new List<PackModel>();
  1387. int ZQty = 0;
  1388. if (createPackCount > 0)
  1389. {
  1390. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  1391. if (Pack_YuShu == 0)
  1392. {
  1393. PackCount = (createPageCount / createPackCount);
  1394. }
  1395. else
  1396. {
  1397. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  1398. }
  1399. for (int jj = 0; jj < createPackCount; jj++)
  1400. {
  1401. object CARID = Guid.NewGuid();
  1402. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  1403. sql += @" INSERT INTO dbo.ICSContainer
  1404. ( ID,ContainerCode ,
  1405. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  1406. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  1407. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  1408. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  1409. PackModel PP = new PackModel();
  1410. PP.ID = CARID.ToString();
  1411. PP.PackCode = Carton;
  1412. if (jj < Pack_YuShu)
  1413. {
  1414. PP.FristBarIndex = ZQty;
  1415. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  1416. }
  1417. else
  1418. {
  1419. PP.FristBarIndex = ZQty;
  1420. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  1421. }
  1422. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  1423. List_Pack.Add(PP);
  1424. }
  1425. }
  1426. #endregion
  1427. for (int i = 0; i < createPageCount; i++)
  1428. {
  1429. if (i + 1 == createPageCount)
  1430. {
  1431. if (minPackQty * createPageCount > thisCreateQty)
  1432. {
  1433. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  1434. }
  1435. }
  1436. 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();
  1437. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  1438. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  1439. bool flag = true;
  1440. foreach (var item in ExtensionIDList)
  1441. {
  1442. if (item == Colspan + WorkPoint)
  1443. {
  1444. flag = false;
  1445. }
  1446. }
  1447. if (ExtensionID == null && flag == true)
  1448. {
  1449. str1 = Guid.NewGuid().ToString();
  1450. 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)
  1451. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  1452. 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(),
  1453. MUSER, MUSERNAME, WorkPoints);
  1454. }
  1455. else if (ExtensionID != null)
  1456. {
  1457. str1 = ExtensionID.ToString();
  1458. }
  1459. ExtensionIDList.Add(Colspan + WorkPoint);
  1460. if (InvCode.StartsWith("Y004"))
  1461. {
  1462. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 2);
  1463. LotNo = LotNo + $"~{MOCode}~{queryParam["BatchCode"]}~";
  1464. }
  1465. else if (Regex.IsMatch(InvCode.Substring(0, 4), pattern))
  1466. {
  1467. if (invdt.Rows[0]["InvStd"].ToString().StartsWith("DCDC-OBC-PDU"))
  1468. {
  1469. Pre = $"{invdt.Rows[0]["InvStd"]}2101145{date}2000061501700120000436017014{currentPeriod}";
  1470. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", date, 5);
  1471. LotNo = Pre + LotNo.Substring(5, 5);
  1472. }
  1473. else
  1474. {
  1475. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", "NTM", 7);
  1476. LotNo = Pre + LotNo.Substring(3, 7) + $"~{MOCode}~{queryParam["BatchCode"]}~";
  1477. }
  1478. }
  1479. else
  1480. {
  1481. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 4);
  1482. }
  1483. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  1484. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  1485. LotNo, MOCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  1486. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  1487. //{
  1488. sql += string.Format(@"insert into ICSInventoryLot
  1489. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  1490. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  1491. select
  1492. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','3','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  1493. from ICSMO where MOCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  1494. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, MOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  1495. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  1496. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  1497. sql += "\r\n";
  1498. //装箱的功能
  1499. if (List_Pack.Count > 0)
  1500. {
  1501. PackModel mm = new PackModel();
  1502. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  1503. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  1504. ( ID ,ContainerID ,LotNo ,
  1505. MUSER ,MUSERName ,MTIME ,WorkPoint )
  1506. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  1507. }
  1508. //}
  1509. }
  1510. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  1511. return count;
  1512. }
  1513. /// <summary>
  1514. /// 成品生成条码
  1515. /// </summary>
  1516. /// <param name="POCode"></param>
  1517. /// <param name="PORow"></param>
  1518. /// <param name="keyValue"></param>
  1519. /// 已改
  1520. /// <returns></returns>
  1521. ///传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  1522. public int SubmitFormChengPingHG1(string MOCode, string Sequence, string keyValue, string WorkPoint, float Quantity)
  1523. {
  1524. var queryParam = keyValue.ToJObject();
  1525. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1526. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  1527. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  1528. //获取当前时段
  1529. string currentPeriod = GetPeriod(DateTime.Now);
  1530. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  1531. List<decimal> lotQtys = new List<decimal>();
  1532. foreach (var jLotno in jLotnos)
  1533. {
  1534. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  1535. lotQtys.Add(qty);
  1536. }
  1537. //查询 物料编码~成品版本(料品表自定义20字段)~序列号~订单号~车号段(ICSExtension表batchcode字段)~供应商
  1538. string invsql = $"SELECT EATTRIBUTE20,ClassCode,InvStd FROM ICSInventory WITH(nolock) WHERE InvCode='{queryParam["InvCode"]}' AND WorkPoint='{WorkPoints}'";
  1539. var invdt = SqlHelper.CmdExecuteDataTable(invsql);
  1540. int createPageCount = lotQtys.Count();
  1541. string InvCode = queryParam["ClassCode"].ToString();
  1542. string InvCodeLP = queryParam["InvCode"].ToString();
  1543. string date = DateTime.Now.ToString("yyMMdd");
  1544. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1545. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  1546. string Pre = "";
  1547. if (InvCode == "Y004")
  1548. {
  1549. Pre = $"{InvCodeLP}~{invdt.Rows[0]["EATTRIBUTE20"]}~{MOCode}{Sequence}";
  1550. }
  1551. else if (InvCode.Length == 4 && InvCode.Contains("P00"))
  1552. {
  1553. if (invdt.Rows[0]["InvStd"].ToString().StartsWith("DCDC-OBC-PDU"))
  1554. {
  1555. Pre = $"{invdt.Rows[0]["InvStd"]}2101145{date}2000061501700120000436017014{currentPeriod}";
  1556. }
  1557. else
  1558. {
  1559. Pre = $"{InvCodeLP}~{invdt.Rows[0]["EATTRIBUTE20"]}";
  1560. }
  1561. }
  1562. else
  1563. {
  1564. Pre = "CP" + MOCode + (Convert.ToInt32(Sequence)).ToString("D4");
  1565. }
  1566. string sql = string.Empty;
  1567. //string VendorLot = queryParam["VendorLot"].ToString();
  1568. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1569. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1570. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  1571. string sqls = string.Empty;
  1572. string Colspan = "";
  1573. string str1 = "";
  1574. string LotNo = string.Empty;
  1575. List<string> ExtensionIDList = new List<string>();
  1576. #region 装箱的功能
  1577. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  1578. string VenCode = queryParam["VenCode"].ToString();
  1579. int PackCount = 0;//每箱放的数量
  1580. int Pack_YuShu = 0;//需要平摊的数量
  1581. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  1582. List<PackModel> List_Pack = new List<PackModel>();
  1583. int ZQty = 0;
  1584. if (createPackCount > 0)
  1585. {
  1586. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  1587. if (Pack_YuShu == 0)
  1588. {
  1589. PackCount = (createPageCount / createPackCount);
  1590. }
  1591. else
  1592. {
  1593. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  1594. }
  1595. for (int jj = 0; jj < createPackCount; jj++)
  1596. {
  1597. object CARID = Guid.NewGuid();
  1598. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  1599. sql += @" INSERT INTO dbo.ICSContainer
  1600. ( ID,ContainerCode ,
  1601. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  1602. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  1603. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  1604. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  1605. PackModel PP = new PackModel();
  1606. PP.ID = CARID.ToString();
  1607. PP.PackCode = Carton;
  1608. if (jj < Pack_YuShu)
  1609. {
  1610. PP.FristBarIndex = ZQty;
  1611. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  1612. }
  1613. else
  1614. {
  1615. PP.FristBarIndex = ZQty;
  1616. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  1617. }
  1618. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  1619. List_Pack.Add(PP);
  1620. }
  1621. }
  1622. #endregion
  1623. for (int i = 0; i < createPageCount; i++)
  1624. {
  1625. var LOTQTY = lotQtys[i];
  1626. 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();
  1627. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  1628. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  1629. bool flag = true;
  1630. foreach (var item in ExtensionIDList)
  1631. {
  1632. if (item == Colspan + WorkPoint)
  1633. {
  1634. flag = false;
  1635. }
  1636. }
  1637. if (ExtensionID == null && flag == true)
  1638. {
  1639. str1 = Guid.NewGuid().ToString();
  1640. 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)
  1641. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  1642. 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(),
  1643. MUSER, MUSERNAME, WorkPoints);
  1644. }
  1645. else if (ExtensionID != null)
  1646. {
  1647. str1 = ExtensionID.ToString();
  1648. }
  1649. ExtensionIDList.Add(Colspan + WorkPoint);
  1650. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  1651. //if (AMEnable == "true")
  1652. //{
  1653. // LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  1654. //}vvv
  1655. //else
  1656. //{
  1657. if (InvCode == "Y004")
  1658. {
  1659. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 2);
  1660. LotNo = LotNo + $"~{MOCode}~{queryParam["BatchCode"]}~";
  1661. }
  1662. else if (InvCode.Length == 4 && InvCode.Contains("P00"))
  1663. {
  1664. if (invdt.Rows[0]["InvStd"].ToString().StartsWith("DCDC-OBC-PDU"))
  1665. {
  1666. Pre = $"{invdt.Rows[0]["InvStd"]}2101145{DateTime.Now.ToString("yy-MM-dd")}2000061501700120000436017014{currentPeriod}";
  1667. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", date, 5);
  1668. LotNo = Pre + LotNo.Substring(5, 5);
  1669. }
  1670. else
  1671. {
  1672. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", "", 7);
  1673. LotNo = LotNo + $"~{MOCode}~{queryParam["BatchCode"]}~";
  1674. }
  1675. }
  1676. else
  1677. {
  1678. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 4);
  1679. }
  1680. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 4);
  1681. //}
  1682. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  1683. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  1684. LotNo, MOCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  1685. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  1686. //{
  1687. sql += string.Format(@"insert into ICSInventoryLot
  1688. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  1689. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  1690. select
  1691. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','3','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  1692. from ICSMO where MOCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  1693. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, MOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  1694. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  1695. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  1696. sql += "\r\n";
  1697. //装箱的功能
  1698. if (List_Pack.Count > 0)
  1699. {
  1700. PackModel mm = new PackModel();
  1701. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  1702. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  1703. ( ID ,ContainerID ,LotNo ,
  1704. MUSER ,MUSERName ,MTIME ,WorkPoint )
  1705. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  1706. }
  1707. //}
  1708. }
  1709. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  1710. return count;
  1711. }
  1712. private static string GetPeriod(DateTime time)
  1713. {
  1714. int hour = time.Hour;
  1715. return hour >= 8 && hour < 20 ? "D" : "N";
  1716. }
  1717. public DataTable GetGridJsonXiaoShou(string queryJson, ref Pagination jqgridparam)
  1718. {
  1719. DataTable dt = new DataTable();
  1720. var queryParam = queryJson.ToJObject();
  1721. List<DbParameter> parameter = new List<DbParameter>();
  1722. object Figure = GetDecimalDigits();
  1723. #region [SQL]
  1724. string sql = @" select a.ID,a.SDNCode,a.Sequence,a.SOCode,a.SOSequence,a.CusCode,a.CusName,a.Type,a.ArriveDate,a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity
  1725. ,cast(a.Amount as decimal(38,{0})) as Amount, CAST(a.SDNQuantity AS DECIMAL(38,{0})) as SDNQuantity ,a.Status,a.ExtensionID,a.CreatePerson,a.CreateDateTime ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  1726. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  1727. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  1728. a.EATTRIBUTE9,a.EATTRIBUTE10
  1729. from ICSSDN a
  1730. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  1731. left join (
  1732. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  1733. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='4'
  1734. where isnull(ee.EATTRIBUTE1,'')=''
  1735. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  1736. )c
  1737. on a.SDNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  1738. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  1739. --left join ICSDepartment dep ON dep.DepCode=a.[Detp]
  1740. where a.Type='2' and
  1741. a.Status<>'3' ";
  1742. sql = string.Format(sql, Figure);
  1743. #endregion
  1744. if (!string.IsNullOrWhiteSpace(queryJson))
  1745. {
  1746. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  1747. {
  1748. sql += " and a.SDNCode like '%" + queryParam["POCode"].ToString() + "%' ";
  1749. }
  1750. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  1751. {
  1752. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  1753. }
  1754. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  1755. {
  1756. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  1757. }
  1758. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  1759. {
  1760. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  1761. }
  1762. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  1763. {
  1764. string POStatus = queryParam["POStatus"].ToString();
  1765. if (POStatus == "0")
  1766. {
  1767. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  1768. }
  1769. else if (POStatus == "1")
  1770. {
  1771. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  1772. }
  1773. else
  1774. {
  1775. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  1776. }
  1777. }
  1778. }
  1779. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  1780. {
  1781. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  1782. }
  1783. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  1784. {
  1785. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  1786. }
  1787. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1788. }
  1789. /// <summary>
  1790. /// 点击销售退货生成条码(销售退货)
  1791. /// </summary>
  1792. public DataTable GetSubGridJsonXiaoShouByCreate(string SDNCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  1793. {
  1794. DataTable dt = new DataTable();
  1795. object Figure = GetDecimalDigits();
  1796. List<DbParameter> parameter = new List<DbParameter>();
  1797. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn020', " + Quantity + ",1,3,'')";
  1798. object Num = SqlHelper.ExecuteScalar(SeachNum);
  1799. string sql = @" select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,CAST( a.Amount as DECIMAL(38,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  1800. CAST( ( " + Num + @" -ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,
  1801. isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays, case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  1802. ,d.ProjectCode,d.BatchCode,d.Version,d.Brand,d.cFree1,d.cFree2,d.cFree3,d.cFree4,d.cFree5,d.cFree6,d.cFree7,d.cFree8,d.cFree9,d.cFree10,
  1803. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  1804. from ICSSDN a
  1805. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  1806. left join (
  1807. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  1808. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='4'
  1809. where isnull(a.EATTRIBUTE1,'')=''
  1810. group by b.TransCode,b.TransSequence
  1811. ) c on a.SDNCode=c.TransCode and a.Sequence=c.TransSequence
  1812. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  1813. WHERE 1 =1
  1814. and a.Type='2' and a.SDNCode='" + SDNCode + "' and a.Sequence='" + Sequence + "'";
  1815. sql += " and a.WorkPoint='" + WorkPoint + "'";
  1816. sql = string.Format(sql, Figure);
  1817. return Repository().FindTableBySql(sql.ToString());
  1818. }
  1819. /// <summary>
  1820. /// 销售退货生成条码
  1821. /// </summary>
  1822. /// <param name="POCode"></param>
  1823. /// <param name="PORow"></param>
  1824. /// <param name="keyValue"></param>
  1825. /// 已改
  1826. /// <returns></returns>
  1827. public int SubmitFormXiaoShou(string SDNCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  1828. {
  1829. var queryParam = keyValue.ToJObject();
  1830. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1831. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  1832. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  1833. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  1834. decimal LOTQTY = minPackQty;
  1835. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1836. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  1837. string Pre = "SR" + SDNCode + (Convert.ToInt32(Sequence)).ToString("D4");
  1838. string sql = string.Empty;
  1839. //string VendorLot = queryParam["VendorLot"].ToString();
  1840. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1841. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1842. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  1843. string InvCode = queryParam["ClassCode"].ToString();
  1844. string sqls = string.Empty;
  1845. string Colspan = "";
  1846. string str1 = "";
  1847. string LotNo = string.Empty;
  1848. List<string> ExtensionIDList = new List<string>();
  1849. #region 装箱的功能
  1850. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  1851. string VenCode = queryParam["VenCode"].ToString();
  1852. int PackCount = 0;//每箱放的数量
  1853. int Pack_YuShu = 0;//需要平摊的数量
  1854. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  1855. List<PackModel> List_Pack = new List<PackModel>();
  1856. int ZQty = 0;
  1857. if (createPackCount > 0)
  1858. {
  1859. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  1860. if (Pack_YuShu == 0)
  1861. {
  1862. PackCount = (createPageCount / createPackCount);
  1863. }
  1864. else
  1865. {
  1866. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  1867. }
  1868. for (int jj = 0; jj < createPackCount; jj++)
  1869. {
  1870. object CARID = Guid.NewGuid();
  1871. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  1872. sql += @" INSERT INTO dbo.ICSContainer
  1873. ( ID,ContainerCode ,
  1874. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  1875. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  1876. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  1877. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  1878. PackModel PP = new PackModel();
  1879. PP.ID = CARID.ToString();
  1880. PP.PackCode = Carton;
  1881. if (jj < Pack_YuShu)
  1882. {
  1883. PP.FristBarIndex = ZQty;
  1884. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  1885. }
  1886. else
  1887. {
  1888. PP.FristBarIndex = ZQty;
  1889. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  1890. }
  1891. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  1892. List_Pack.Add(PP);
  1893. }
  1894. }
  1895. #endregion
  1896. for (int i = 0; i < createPageCount; i++)
  1897. {
  1898. if (i + 1 == createPageCount)
  1899. {
  1900. if (minPackQty * createPageCount > thisCreateQty)
  1901. {
  1902. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  1903. }
  1904. }
  1905. 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();
  1906. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  1907. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  1908. bool flag = true;
  1909. foreach (var item in ExtensionIDList)
  1910. {
  1911. if (item == Colspan + WorkPoint)
  1912. {
  1913. flag = false;
  1914. }
  1915. }
  1916. if (ExtensionID == null && flag == true)
  1917. {
  1918. str1 = Guid.NewGuid().ToString();
  1919. 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)
  1920. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  1921. 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(),
  1922. MUSER, MUSERNAME, WorkPoints);
  1923. }
  1924. else if (ExtensionID != null)
  1925. {
  1926. str1 = ExtensionID.ToString();
  1927. }
  1928. ExtensionIDList.Add(Colspan + WorkPoint);
  1929. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  1930. if (AMEnable == "true")
  1931. {
  1932. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  1933. }
  1934. else
  1935. {
  1936. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  1937. }
  1938. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  1939. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}')",
  1940. LotNo, SDNCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  1941. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  1942. //{
  1943. sql += string.Format(@"
  1944. insert into ICSInventoryLot
  1945. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  1946. select
  1947. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','4','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  1948. from ICSSDN where Type='2' and SDNCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  1949. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, SDNCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  1950. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  1951. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  1952. sql += "\r\n";
  1953. //}
  1954. //装箱的功能
  1955. if (List_Pack.Count > 0)
  1956. {
  1957. PackModel mm = new PackModel();
  1958. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  1959. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  1960. ( ID ,ContainerID ,LotNo ,MUSER ,MUSERName ,MTIME ,WorkPoint )
  1961. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  1962. }
  1963. }
  1964. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  1965. return count;
  1966. }
  1967. /// <summary>
  1968. /// 销售退货生成条码
  1969. /// </summary>
  1970. /// <param name="POCode"></param>
  1971. /// <param name="PORow"></param>
  1972. /// <param name="keyValue"></param>
  1973. /// 已改
  1974. /// <returns></returns>
  1975. public int SubmitFormXiaoShouNew(string SDNCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  1976. {
  1977. var queryParam = keyValue.ToJObject();
  1978. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1979. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  1980. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  1981. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  1982. List<decimal> lotQtys = new List<decimal>();
  1983. foreach (var jLotno in jLotnos)
  1984. {
  1985. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  1986. lotQtys.Add(qty);
  1987. }
  1988. int createPageCount = lotQtys.Count();
  1989. string Pre = "SR" + SDNCode + (Convert.ToInt32(Sequence)).ToString("D4");
  1990. string sql = string.Empty;
  1991. //string VendorLot = queryParam["VendorLot"].ToString();
  1992. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1993. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1994. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  1995. string InvCode = queryParam["ClassCode"].ToString();
  1996. string sqls = string.Empty;
  1997. string Colspan = "";
  1998. string str1 = "";
  1999. string LotNo = string.Empty;
  2000. List<string> ExtensionIDList = new List<string>();
  2001. #region 装箱的功能
  2002. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  2003. string VenCode = queryParam["VenCode"].ToString();
  2004. int PackCount = 0;//每箱放的数量
  2005. int Pack_YuShu = 0;//需要平摊的数量
  2006. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  2007. List<PackModel> List_Pack = new List<PackModel>();
  2008. int ZQty = 0;
  2009. if (createPackCount > 0)
  2010. {
  2011. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  2012. if (Pack_YuShu == 0)
  2013. {
  2014. PackCount = (createPageCount / createPackCount);
  2015. }
  2016. else
  2017. {
  2018. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  2019. }
  2020. for (int jj = 0; jj < createPackCount; jj++)
  2021. {
  2022. object CARID = Guid.NewGuid();
  2023. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  2024. sql += @" INSERT INTO dbo.ICSContainer
  2025. ( ID,ContainerCode ,
  2026. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  2027. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  2028. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  2029. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  2030. PackModel PP = new PackModel();
  2031. PP.ID = CARID.ToString();
  2032. PP.PackCode = Carton;
  2033. if (jj < Pack_YuShu)
  2034. {
  2035. PP.FristBarIndex = ZQty;
  2036. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  2037. }
  2038. else
  2039. {
  2040. PP.FristBarIndex = ZQty;
  2041. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  2042. }
  2043. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  2044. List_Pack.Add(PP);
  2045. }
  2046. }
  2047. #endregion
  2048. for (int i = 0; i < createPageCount; i++)
  2049. {
  2050. var LOTQTY = lotQtys[i];
  2051. 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();
  2052. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  2053. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  2054. bool flag = true;
  2055. foreach (var item in ExtensionIDList)
  2056. {
  2057. if (item == Colspan + WorkPoint)
  2058. {
  2059. flag = false;
  2060. }
  2061. }
  2062. if (ExtensionID == null && flag == true)
  2063. {
  2064. str1 = Guid.NewGuid().ToString();
  2065. 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)
  2066. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  2067. 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(),
  2068. MUSER, MUSERNAME, WorkPoints);
  2069. }
  2070. else if (ExtensionID != null)
  2071. {
  2072. str1 = ExtensionID.ToString();
  2073. }
  2074. ExtensionIDList.Add(Colspan + WorkPoint);
  2075. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  2076. if (AMEnable == "true")
  2077. {
  2078. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  2079. }
  2080. else
  2081. {
  2082. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  2083. }
  2084. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  2085. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}')",
  2086. LotNo, SDNCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  2087. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  2088. //{
  2089. sql += string.Format(@"
  2090. insert into ICSInventoryLot
  2091. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  2092. select
  2093. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','4','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  2094. from ICSSDN where Type='2' and SDNCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  2095. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, SDNCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  2096. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  2097. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  2098. sql += "\r\n";
  2099. //}
  2100. //装箱的功能
  2101. if (List_Pack.Count > 0)
  2102. {
  2103. PackModel mm = new PackModel();
  2104. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  2105. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  2106. ( ID ,ContainerID ,LotNo ,MUSER ,MUSERName ,MTIME ,WorkPoint )
  2107. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  2108. }
  2109. }
  2110. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  2111. return count;
  2112. }
  2113. public DataTable GetGridJsonQiTa(string queryJson, ref Pagination jqgridparam)
  2114. {
  2115. DataTable dt = new DataTable();
  2116. var queryParam = queryJson.ToJObject();
  2117. List<DbParameter> parameter = new List<DbParameter>();
  2118. object Figure = GetDecimalDigits();
  2119. #region [SQL]
  2120. string sql = @" select a.ID,a.InCode,a.Sequence,a.WHCode,a.InvCode, b.InvName,b.InvStd,b.InvDesc,b.InvUnit,
  2121. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity,CAST(a.Amount AS DECIMAL(38,{0})) as Amount, CAST(a.InQuantity AS DECIMAL(38,{0})) as InQuantity,a.CreatePerson,a.CreateDateTime,CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  2122. ,isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays
  2123. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  2124. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  2125. a.EATTRIBUTE9,a.EATTRIBUTE10
  2126. from ICSOtherIn a
  2127. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2128. left join (
  2129. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  2130. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='5'
  2131. where isnull(ee.EATTRIBUTE1,'')=''
  2132. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  2133. )c
  2134. on a.InCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  2135. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  2136. where a.Status='1' and ISNULL(a.Type,'1')='1' ";
  2137. sql = string.Format(sql, Figure);
  2138. #endregion
  2139. if (!string.IsNullOrWhiteSpace(queryJson))
  2140. {
  2141. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  2142. {
  2143. sql += " and a.InCode like '%" + queryParam["POCode"].ToString() + "%' ";
  2144. }
  2145. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  2146. {
  2147. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  2148. }
  2149. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  2150. {
  2151. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  2152. }
  2153. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  2154. {
  2155. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  2156. }
  2157. if (!string.IsNullOrWhiteSpace(queryParam["InvStd"].ToString()))
  2158. {
  2159. sql += " and b.InvStd like '%" + queryParam["InvStd"].ToString() + "%' ";
  2160. }
  2161. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  2162. {
  2163. sql += " and a.CreateDateTime >= '" + queryParam["FromTime"].ToString() + "' ";
  2164. }
  2165. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  2166. {
  2167. sql += " and a.CreateDateTime <= '" + queryParam["ToTime"].ToString() + "' ";
  2168. }
  2169. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  2170. {
  2171. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  2172. }
  2173. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  2174. {
  2175. string POStatus = queryParam["POStatus"].ToString();
  2176. if (POStatus == "0")
  2177. {
  2178. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  2179. }
  2180. else if (POStatus == "1")
  2181. {
  2182. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  2183. }
  2184. else
  2185. {
  2186. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  2187. }
  2188. }
  2189. }
  2190. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  2191. {
  2192. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  2193. }
  2194. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  2195. {
  2196. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  2197. }
  2198. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2199. }
  2200. /// <summary>
  2201. /// 点击销售退货生成条码(其他入库)
  2202. /// </summary>
  2203. public DataTable GetSubGridJsonQiTaByCreate(string InCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  2204. {
  2205. DataTable dt = new DataTable();
  2206. object Figure = GetDecimalDigits();
  2207. List<DbParameter> parameter = new List<DbParameter>();
  2208. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn021', " + Quantity + ",1,4,'')";
  2209. object Num = SqlHelper.ExecuteScalar(SeachNum);
  2210. string sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,CAST( a.Amount as DECIMAL(38,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  2211. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,
  2212. isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays , case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  2213. ,d.ProjectCode,d.BatchCode,d.Version,d.Brand,d.cFree1,d.cFree2,d.cFree3,d.cFree4,d.cFree5,d.cFree6,d.cFree7,d.cFree8,d.cFree9,d.cFree10,
  2214. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  2215. from ICSOtherIn a
  2216. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2217. left join (
  2218. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  2219. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='5'
  2220. where isnull(a.EATTRIBUTE1,'')=''
  2221. group by b.TransCode,b.TransSequence
  2222. ) c on a.InCode=c.TransCode and a.Sequence=c.TransSequence
  2223. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  2224. WHERE 1 =1
  2225. and a.InCode='" + InCode + "' and a.Sequence='" + Sequence + "' and ISNULL(a.EATTRIBUTE2,'1')='1'";
  2226. sql += " and a.WorkPoint='" + WorkPoint + "'";
  2227. sql = string.Format(sql, Figure);
  2228. return Repository().FindTableBySql(sql.ToString());
  2229. }
  2230. /// <summary>
  2231. /// 其他入库生成条码
  2232. /// </summary>
  2233. /// <param name="POCode"></param>
  2234. /// <param name="PORow"></param>
  2235. /// <param name="keyValue"></param>
  2236. /// 已改
  2237. /// <returns></returns>
  2238. public int SubmitFormQiTa(string InCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  2239. {
  2240. var queryParam = keyValue.ToJObject();
  2241. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  2242. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  2243. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  2244. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  2245. decimal LOTQTY = minPackQty;
  2246. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2247. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  2248. string Pre = "QT" + InCode + (Convert.ToInt32(Sequence)).ToString("D4");
  2249. string sql = string.Empty;
  2250. //string VendorLot = queryParam["VendorLot"].ToString();
  2251. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  2252. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  2253. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  2254. string InvCode = queryParam["ClassCode"].ToString();
  2255. string sqls = string.Empty;
  2256. string Colspan = "";
  2257. string str1 = "";
  2258. string LotNo = string.Empty;
  2259. List<string> ExtensionIDList = new List<string>();
  2260. #region 装箱的功能
  2261. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  2262. string VenCode = queryParam["VenCode"].ToString();
  2263. int PackCount = 0;//每箱放的数量
  2264. int Pack_YuShu = 0;//需要平摊的数量
  2265. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  2266. List<PackModel> List_Pack = new List<PackModel>();
  2267. int ZQty = 0;
  2268. if (createPackCount > 0)
  2269. {
  2270. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  2271. if (Pack_YuShu == 0)
  2272. {
  2273. PackCount = (createPageCount / createPackCount);
  2274. }
  2275. else
  2276. {
  2277. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  2278. }
  2279. for (int jj = 0; jj < createPackCount; jj++)
  2280. {
  2281. object CARID = Guid.NewGuid();
  2282. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  2283. sql += @" INSERT INTO dbo.ICSContainer
  2284. ( ID,ContainerCode ,
  2285. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  2286. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  2287. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  2288. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  2289. PackModel PP = new PackModel();
  2290. PP.ID = CARID.ToString();
  2291. PP.PackCode = Carton;
  2292. if (jj < Pack_YuShu)
  2293. {
  2294. PP.FristBarIndex = ZQty;
  2295. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  2296. }
  2297. else
  2298. {
  2299. PP.FristBarIndex = ZQty;
  2300. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  2301. }
  2302. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  2303. List_Pack.Add(PP);
  2304. }
  2305. }
  2306. #endregion
  2307. for (int i = 0; i < createPageCount; i++)
  2308. {
  2309. if (i + 1 == createPageCount)
  2310. {
  2311. if (minPackQty * createPageCount > thisCreateQty)
  2312. {
  2313. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  2314. }
  2315. }
  2316. 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();
  2317. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  2318. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  2319. bool flag = true;
  2320. foreach (var item in ExtensionIDList)
  2321. {
  2322. if (item == Colspan + WorkPoint)
  2323. {
  2324. flag = false;
  2325. }
  2326. }
  2327. if (ExtensionID == null && flag == true)
  2328. {
  2329. str1 = Guid.NewGuid().ToString();
  2330. 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)
  2331. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  2332. 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(),
  2333. MUSER, MUSERNAME, WorkPoints);
  2334. }
  2335. else if (ExtensionID != null)
  2336. {
  2337. str1 = ExtensionID.ToString();
  2338. }
  2339. ExtensionIDList.Add(Colspan + WorkPoint);
  2340. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  2341. if (AMEnable == "true")
  2342. {
  2343. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  2344. }
  2345. else
  2346. {
  2347. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  2348. }
  2349. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  2350. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  2351. LotNo, InCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  2352. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  2353. //{
  2354. sql += string.Format(@"
  2355. insert into ICSInventoryLot
  2356. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  2357. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  2358. select
  2359. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','5','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  2360. from ICSOtherIn where InCode='{6}' and Sequence='{7}' and WorkPoint='{5}' and ISNULL(EATTRIBUTE2,'1')='1'",
  2361. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, InCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  2362. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  2363. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  2364. sql += "\r\n";
  2365. //装箱的功能
  2366. if (List_Pack.Count > 0)
  2367. {
  2368. PackModel mm = new PackModel();
  2369. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  2370. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  2371. ( ID ,ContainerID ,LotNo ,MUSER ,MUSERName ,MTIME ,WorkPoint )
  2372. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  2373. }
  2374. //}
  2375. }
  2376. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  2377. return count;
  2378. }
  2379. public int SubmitFormQiTaNew(string InCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  2380. {
  2381. var queryParam = keyValue.ToJObject();
  2382. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  2383. //int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  2384. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  2385. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  2386. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  2387. List<decimal> lotQtys = new List<decimal>();
  2388. foreach (var jLotno in jLotnos)
  2389. {
  2390. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  2391. lotQtys.Add(qty);
  2392. }
  2393. int createPageCount = lotQtys.Count();
  2394. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2395. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  2396. string Pre = "QT" + InCode + (Convert.ToInt32(Sequence)).ToString("D4");
  2397. string sql = string.Empty;
  2398. //string VendorLot = queryParam["VendorLot"].ToString();
  2399. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  2400. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  2401. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  2402. string InvCode = queryParam["ClassCode"].ToString();
  2403. string sqls = string.Empty;
  2404. string Colspan = "";
  2405. string str1 = "";
  2406. string LotNo = string.Empty;
  2407. List<string> ExtensionIDList = new List<string>();
  2408. #region 装箱的功能
  2409. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  2410. string VenCode = queryParam["VenCode"].ToString();
  2411. int PackCount = 0;//每箱放的数量
  2412. int Pack_YuShu = 0;//需要平摊的数量
  2413. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  2414. List<PackModel> List_Pack = new List<PackModel>();
  2415. int ZQty = 0;
  2416. if (createPackCount > 0)
  2417. {
  2418. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  2419. if (Pack_YuShu == 0)
  2420. {
  2421. PackCount = (createPageCount / createPackCount);
  2422. }
  2423. else
  2424. {
  2425. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  2426. }
  2427. for (int jj = 0; jj < createPackCount; jj++)
  2428. {
  2429. object CARID = Guid.NewGuid();
  2430. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  2431. sql += @" INSERT INTO dbo.ICSContainer
  2432. ( ID,ContainerCode ,
  2433. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  2434. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  2435. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  2436. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  2437. PackModel PP = new PackModel();
  2438. PP.ID = CARID.ToString();
  2439. PP.PackCode = Carton;
  2440. if (jj < Pack_YuShu)
  2441. {
  2442. PP.FristBarIndex = ZQty;
  2443. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  2444. }
  2445. else
  2446. {
  2447. PP.FristBarIndex = ZQty;
  2448. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  2449. }
  2450. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  2451. List_Pack.Add(PP);
  2452. }
  2453. }
  2454. #endregion
  2455. for (int i = 0; i < createPageCount; i++)
  2456. {
  2457. var LOTQTY = lotQtys[i];
  2458. 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();
  2459. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  2460. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  2461. bool flag = true;
  2462. foreach (var item in ExtensionIDList)
  2463. {
  2464. if (item == Colspan + WorkPoint)
  2465. {
  2466. flag = false;
  2467. }
  2468. }
  2469. if (ExtensionID == null && flag == true)
  2470. {
  2471. str1 = Guid.NewGuid().ToString();
  2472. 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)
  2473. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  2474. 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(),
  2475. MUSER, MUSERNAME, WorkPoints);
  2476. }
  2477. else if (ExtensionID != null)
  2478. {
  2479. str1 = ExtensionID.ToString();
  2480. }
  2481. ExtensionIDList.Add(Colspan + WorkPoint);
  2482. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  2483. if (AMEnable == "true")
  2484. {
  2485. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  2486. }
  2487. else
  2488. {
  2489. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  2490. }
  2491. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  2492. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  2493. LotNo, InCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  2494. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  2495. //{
  2496. sql += string.Format(@"
  2497. insert into ICSInventoryLot
  2498. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  2499. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  2500. select
  2501. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','5','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  2502. from ICSOtherIn where InCode='{6}' and Sequence='{7}' and WorkPoint='{5}' and ISNULL(EATTRIBUTE2,'1')='1'",
  2503. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, InCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  2504. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  2505. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  2506. sql += "\r\n";
  2507. //装箱的功能
  2508. if (List_Pack.Count > 0)
  2509. {
  2510. PackModel mm = new PackModel();
  2511. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  2512. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  2513. ( ID ,ContainerID ,LotNo ,MUSER ,MUSERName ,MTIME ,WorkPoint )
  2514. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  2515. }
  2516. //}
  2517. }
  2518. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  2519. return count;
  2520. }
  2521. //归还
  2522. public DataTable GetGridJsonGuiHuan(string queryJson, ref Pagination jqgridparam)
  2523. {
  2524. DataTable dt = new DataTable();
  2525. var queryParam = queryJson.ToJObject();
  2526. List<DbParameter> parameter = new List<DbParameter>();
  2527. object Figure = GetDecimalDigits();
  2528. #region [SQL]
  2529. string sql = @"select a.ID,a.ReturnCode,a.Sequence,a.WHCode,a.InvCode, b.InvName,b.InvStd,b.InvDesc,b.InvUnit,
  2530. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount,
  2531. CAST(a.ReturnQuantity AS DECIMAL(38,{0})) as ReturnQuantity,a.CreatePerson,a.CreateDateTime,
  2532. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  2533. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  2534. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  2535. a.EATTRIBUTE9,a.EATTRIBUTE10
  2536. from ICSReturn a
  2537. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2538. left join (
  2539. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  2540. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='6'
  2541. where isnull(ee.EATTRIBUTE1,'')=''
  2542. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  2543. ) c on a.ReturnCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  2544. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  2545. where a.Status='2'";
  2546. sql = string.Format(sql, Figure);
  2547. #endregion
  2548. if (!string.IsNullOrWhiteSpace(queryJson))
  2549. {
  2550. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  2551. {
  2552. sql += " and a.ReturnCode like '%" + queryParam["POCode"].ToString() + "%' ";
  2553. }
  2554. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  2555. {
  2556. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  2557. }
  2558. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  2559. {
  2560. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  2561. }
  2562. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  2563. {
  2564. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  2565. }
  2566. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  2567. {
  2568. string POStatus = queryParam["POStatus"].ToString();
  2569. if (POStatus == "0")
  2570. {
  2571. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  2572. }
  2573. else if (POStatus == "1")
  2574. {
  2575. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  2576. }
  2577. else
  2578. {
  2579. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  2580. }
  2581. }
  2582. }
  2583. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  2584. {
  2585. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  2586. }
  2587. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  2588. {
  2589. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  2590. }
  2591. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2592. }
  2593. //审核到货单(采购订单需与审核到货单一起同步)
  2594. public DataTable GetGridJsonSHDH(string queryJson, ref Pagination jqgridparam)
  2595. {
  2596. DataTable dt = new DataTable();
  2597. var queryParam = queryJson.ToJObject();
  2598. List<DbParameter> parameter = new List<DbParameter>();
  2599. object Figure = GetDecimalDigits();
  2600. #region [SQL]
  2601. string sql = @"select distinct a.ID, d.POCode,d.Sequence as POSequence,a.DNCode,a.Sequence,a.VenCode,e.VenName,a.InvCode, b.InvName,b.InvStd,b.InvDesc,b.InvUnit,
  2602. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount,
  2603. CAST(a.RCVQuantity AS DECIMAL(38,{0})) as RCVQuantity,CAST((a.Quantity-ISnull(a.RCVQuantity,0)) AS DECIMAL(38,{0})) as NRCVQuantity,
  2604. CAST(a.UnitPrice AS DECIMAL(38,{0})) as UnitPrice,a.Currency,a.CreatePerson,a.CreateDateTime,CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY ,
  2605. Case when isnull(b.EffectiveEnable,0)='1' then '是' else '否' end as EffectiveEnable
  2606. --,isnull(b.EffectiveEnable,0) as EffectiveEnable
  2607. , CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays ,Case when isnull(b.BatchEnable,0)='1' then '是' else '否' end as BatchEnable
  2608. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  2609. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  2610. a.EATTRIBUTE9,a.EATTRIBUTE10,a.EATTRIBUTE30
  2611. ,CASE WHEN ISNULL(G.F_Define1,'')='' THEN '0' ELSE '1' END AS IsSpecialInv
  2612. from ICSDeliveryNotice a
  2613. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2614. left join (
  2615. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  2616. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='7'
  2617. where isnull(ee.EATTRIBUTE1,'')=''
  2618. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  2619. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  2620. left join ICSPurchaseOrder d on a.POID=d.POID and a.PODetailID=d.PODetailID and a.WorkPoint=d.WorkPoint
  2621. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  2622. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  2623. LEFT JOIN Sys_SRM_ItemsDetail g on g.F_Define1=a.InvCode
  2624. LEFT JOIN Sys_SRM_Items h on h.F_Id=g.F_ItemId and h.F_EnCode='InventoryLotWareHouseFixed'
  2625. where a.DNType='1' and a.Status='2' and a.ASNCode is null
  2626. ";
  2627. sql = string.Format(sql, Figure);
  2628. #endregion
  2629. if (!string.IsNullOrWhiteSpace(queryJson))
  2630. {
  2631. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  2632. {
  2633. sql += " and a.DNCode like '%" + queryParam["POCode"].ToString() + "%' ";
  2634. }
  2635. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  2636. {
  2637. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  2638. }
  2639. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  2640. {
  2641. sql += " and e.VenName like '%" + queryParam["VenName"].ToString() + "%' ";
  2642. }
  2643. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  2644. {
  2645. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  2646. }
  2647. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  2648. {
  2649. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  2650. }
  2651. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  2652. {
  2653. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  2654. }
  2655. if (!string.IsNullOrWhiteSpace(queryParam["InvStd"].ToString()))
  2656. {
  2657. sql += " and b.InvStd like '%" + queryParam["InvStd"].ToString() + "%' ";
  2658. }
  2659. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  2660. {
  2661. string POStatus = queryParam["POStatus"].ToString();
  2662. if (POStatus == "0")
  2663. {
  2664. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  2665. }
  2666. else if (POStatus == "1")
  2667. {
  2668. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  2669. }
  2670. else
  2671. {
  2672. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  2673. }
  2674. }
  2675. if (!string.IsNullOrWhiteSpace(queryParam["WHStatus"].ToString()))
  2676. {
  2677. string WHStatus = queryParam["WHStatus"].ToString();
  2678. if (WHStatus == "0")
  2679. {
  2680. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  2681. }
  2682. else if (WHStatus == "1")
  2683. {
  2684. sql += " and a.Quantity-ISNULL(a.RCVQuantity,0)>0";
  2685. }
  2686. else
  2687. {
  2688. sql += " and a.Quantity-ISNULL(a.RCVQuantity,0)=0";
  2689. }
  2690. }
  2691. if (!string.IsNullOrWhiteSpace(queryParam["U9Status"].ToString()))
  2692. {
  2693. string U9Status = queryParam["U9Status"].ToString();
  2694. if (U9Status != "0")
  2695. {
  2696. sql += " and a.EATTRIBUTE5='"+ queryParam["U9Status"].ToString() + "'";
  2697. }
  2698. }
  2699. }
  2700. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  2701. {
  2702. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  2703. }
  2704. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  2705. {
  2706. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  2707. }
  2708. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2709. }
  2710. //审核委外到货单
  2711. public DataTable GetGridJsonWWSHDH(string queryJson, ref Pagination jqgridparam)
  2712. {
  2713. DataTable dt = new DataTable();
  2714. var queryParam = queryJson.ToJObject();
  2715. List<DbParameter> parameter = new List<DbParameter>();
  2716. object Figure = GetDecimalDigits();
  2717. #region [SQL]
  2718. string sql = @"select distinct a.ID, d.OOCode,d.Sequence as OOSequence,a.ODNCode,a.Sequence,a.VenCode,e.VenName,a.InvCode, b.InvName,b.InvStd,b.InvDesc,b.InvUnit,
  2719. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity ,
  2720. CAST(a.Amount AS DECIMAL(38,{0})) as Amount,
  2721. CAST(a.RCVQuantity AS DECIMAL(38,{0})) as RCVQuantity,
  2722. CAST((a.Quantity-ISnull(a.RCVQuantity,0)) AS DECIMAL(38,{0})) as NRCVQuantity,
  2723. CAST(a.UnitPrice AS DECIMAL(38,{0})) as UnitPrice,a.Currency,a.CreatePerson,a.CreateDateTime,
  2724. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY ,d.OODetailID ,case when isnull(b.EffectiveEnable,0)='1' then '是' else '否' end as EffectiveEnable
  2725. , CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays ,Case when isnull(b.BatchEnable,0)='1' then '是' else '否' end as BatchEnable
  2726. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  2727. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10 ,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  2728. a.EATTRIBUTE9,a.EATTRIBUTE10
  2729. from ICSODeliveryNotice a
  2730. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2731. left join (
  2732. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  2733. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='8'
  2734. where isnull(ee.EATTRIBUTE1,'')=''
  2735. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  2736. ) c on a.ODNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  2737. left join ICSOutsourcingOrder d on a.OOID=d.OOID and a.OODetailID=d.OODetailID and a.WorkPoint=d.WorkPoint
  2738. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  2739. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  2740. where a.ODNType='1' and a.Status='2' and a.OASNCode is null";
  2741. sql = string.Format(sql, Figure);
  2742. #endregion
  2743. if (!string.IsNullOrWhiteSpace(queryJson))
  2744. {
  2745. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  2746. {
  2747. sql += " and a.ODNCode like '%" + queryParam["POCode"].ToString() + "%' ";
  2748. }
  2749. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  2750. {
  2751. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  2752. }
  2753. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  2754. {
  2755. sql += " and e.VenName like '%" + queryParam["VenName"].ToString() + "%' ";
  2756. }
  2757. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  2758. {
  2759. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  2760. }
  2761. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  2762. {
  2763. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  2764. }
  2765. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  2766. {
  2767. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  2768. }
  2769. if (!string.IsNullOrWhiteSpace(queryParam["InvStd"].ToString()))
  2770. {
  2771. sql += " and b.InvStd like '%" + queryParam["InvStd"].ToString() + "%' ";
  2772. }
  2773. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  2774. {
  2775. string POStatus = queryParam["POStatus"].ToString();
  2776. if (POStatus == "0")
  2777. {
  2778. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  2779. }
  2780. else if (POStatus == "1")
  2781. {
  2782. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  2783. }
  2784. else
  2785. {
  2786. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  2787. }
  2788. }
  2789. if (!string.IsNullOrWhiteSpace(queryParam["WHStatus"].ToString()))
  2790. {
  2791. string WHStatus = queryParam["WHStatus"].ToString();
  2792. if (WHStatus == "0")
  2793. {
  2794. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  2795. }
  2796. else if (WHStatus == "1")
  2797. {
  2798. sql += " and a.Quantity-ISNULL(a.RCVQuantity,0)>0";
  2799. }
  2800. else
  2801. {
  2802. sql += " and a.Quantity-ISNULL(a.RCVQuantity,0)=0";
  2803. }
  2804. }
  2805. }
  2806. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  2807. {
  2808. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  2809. }
  2810. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  2811. {
  2812. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  2813. }
  2814. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2815. }
  2816. //开立得成品入库单
  2817. public DataTable GetGridJsonKLCPRK(string queryJson, ref Pagination jqgridparam)
  2818. {
  2819. DataTable dt = new DataTable();
  2820. var queryParam = queryJson.ToJObject();
  2821. List<DbParameter> parameter = new List<DbParameter>();
  2822. object Figure = GetDecimalDigits();
  2823. #region [SQL]
  2824. string sql = @"
  2825. select a.ID,a.RCVCode,a.Sequence,a.SourceCode as MOCode,a.WHCode,a.InvCode, b.InvName,b.InvStd,b.InvDesc,b.InvUnit,
  2826. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity ,
  2827. CAST(a.Amount AS DECIMAL(38,{0})) as Amount,
  2828. CAST(a.RCVQuantity AS DECIMAL(38,{0})) as RCVQuantity ,a.CreatePerson,a.CreateDateTime,
  2829. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  2830. ,case when isnull(b.EffectiveEnable,0)='1' then '是' else '否' end as EffectiveEnable,b.EffectiveDays
  2831. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  2832. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  2833. a.EATTRIBUTE9,a.EATTRIBUTE10
  2834. from ICSManufactureReceive a
  2835. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2836. left join (
  2837. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  2838. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='9'
  2839. where isnull(ee.EATTRIBUTE1,'')=''
  2840. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  2841. ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  2842. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  2843. --left join icsmo g on a.SourceCode=g.MOCode and a.WorkPoint=g.WorkPoint
  2844. where a.Status='1' and a.Type='1'";
  2845. sql = string.Format(sql, Figure);
  2846. #endregion
  2847. if (!string.IsNullOrWhiteSpace(queryJson))
  2848. {
  2849. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  2850. {
  2851. sql += " and a.RCVCode like '%" + queryParam["POCode"].ToString() + "%' ";
  2852. }
  2853. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  2854. {
  2855. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  2856. }
  2857. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  2858. {
  2859. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  2860. }
  2861. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  2862. {
  2863. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  2864. }
  2865. if (!string.IsNullOrWhiteSpace(queryParam["SCode"].ToString()))
  2866. {
  2867. sql += " and a.SourceCode like '%" + queryParam["SCode"].ToString() + "%' ";
  2868. }
  2869. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  2870. {
  2871. string POStatus = queryParam["POStatus"].ToString();
  2872. if (POStatus == "0")
  2873. {
  2874. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  2875. }
  2876. else if (POStatus == "1")
  2877. {
  2878. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  2879. }
  2880. else
  2881. {
  2882. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  2883. }
  2884. }
  2885. }
  2886. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  2887. {
  2888. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  2889. }
  2890. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  2891. {
  2892. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  2893. }
  2894. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2895. }
  2896. /// <summary>
  2897. /// 点击审核委外到货单生成条码(审核委外到货单)
  2898. /// </summary>
  2899. public DataTable GetSubGridJsonWWSHDHByCreate(string ODNCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  2900. {
  2901. DataTable dt = new DataTable();
  2902. object Figure = GetDecimalDigits();
  2903. List<DbParameter> parameter = new List<DbParameter>();
  2904. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn005', " + Quantity + ",1,1,'')";
  2905. object Num = SqlHelper.ExecuteScalar(SeachNum);
  2906. //锐腾添加退补逻辑
  2907. string sql = @"select e.Enable, a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit,
  2908. CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,CAST( a.Amount as DECIMAL(38,{0})) as Amount,
  2909. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  2910. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)+ISNULL(f.Quantity,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  2911. CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays , case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  2912. ,d.ProjectCode,d.BatchCode,d.Version,d.Brand,d.cFree1,d.cFree2,d.cFree3,d.cFree4,d.cFree5,d.cFree6,d.cFree7,d.cFree8,d.cFree9,d.cFree10,
  2913. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  2914. from ICSODeliveryNotice a
  2915. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2916. left join (select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  2917. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='8'
  2918. where isnull(a.EATTRIBUTE1,'')=''
  2919. group by b.TransCode,b.TransSequence
  2920. ) c on a.ODNCode=c.TransCode and a.Sequence=c.TransSequence
  2921. left join ICSConfiguration e on e.Code='CompleteVerification002' and a.WorkPoint =e.WorkPoint
  2922. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  2923. left join (select a.ODNCode,a.Sequence,a.WorkPoint, ISNULL(f.Quantity,0)+ISNULL(j.Quantity,0) as Quantity
  2924. from ICSODeliveryNotice a
  2925. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2926. left join ICSODeliveryNotice f ON a.ODNDetailID=Isnull(f.EATTRIBUTE4,'') and a.WorkPoint=f.WorkPoint and f.ODNType='2' and f.EATTRIBUTE3='退'
  2927. left join (SELECT OODetailID,WorkPoint,sum(Quantity) Quantity FROM ICSODeliveryNotice WHERE ODNType='3' GROUP BY OODetailID,WorkPoint )j ON a.ODNDetailID=j.OODetailID and a.WorkPoint=j.WorkPoint) f ON a.ODNCode=f.ODNCode and a.WorkPoint=f.WorkPoint
  2928. WHERE 1 =1
  2929. and a.ODNCode='" + ODNCode + "' and a.Sequence='" + Sequence + "'";
  2930. sql += " and a.WorkPoint='" + WorkPoint + "'";
  2931. sql = string.Format(sql, Figure);
  2932. return Repository().FindTableBySql(sql.ToString());
  2933. }
  2934. /// <summary>
  2935. /// 点击开立成品入库生成条码(开立成品入库单)
  2936. /// </summary>
  2937. /// //--
  2938. public DataTable GetSubGridJsonKLCPRKByCreate(string RCVCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  2939. {
  2940. DataTable dt = new DataTable();
  2941. object Figure = GetDecimalDigits();
  2942. List<DbParameter> parameter = new List<DbParameter>();
  2943. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn013', " + Quantity + ",1,2,'')";
  2944. object Num = SqlHelper.ExecuteScalar(SeachNum);
  2945. string sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit,
  2946. CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  2947. CAST( a.Amount as DECIMAL(38,{0})) as Amount,
  2948. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  2949. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  2950. CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays , case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  2951. ,d.ProjectCode,d.BatchCode,d.Version,d.Brand,d.cFree1,d.cFree2,d.cFree3,d.cFree4,d.cFree5,d.cFree6,d.cFree7,d.cFree8,d.cFree9,d.cFree10,
  2952. '' as EATTRIBUTE2,'' as EATTRIBUTE3,'' as EATTRIBUTE4,'' as EATTRIBUTE5,'' as EATTRIBUTE6,'' as EATTRIBUTE7,'' as EATTRIBUTE8,'' as EATTRIBUTE9,'' as EATTRIBUTE10
  2953. from ICSManufactureReceive a
  2954. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2955. left join (select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  2956. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='9'
  2957. where isnull(a.EATTRIBUTE1,'')=''
  2958. group by b.TransCode,b.TransSequence
  2959. ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence
  2960. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  2961. WHERE 1 =1
  2962. and a.RCVCode='" + RCVCode + "' and a.Sequence='" + Sequence + "'";
  2963. sql += " and a.WorkPoint='" + WorkPoint + "'";
  2964. sql = string.Format(sql, Figure);
  2965. return Repository().FindTableBySql(sql.ToString());
  2966. }
  2967. /// <summary>
  2968. /// 点击审核到货单生成条码(审核到货单)
  2969. /// </summary>
  2970. public DataTable GetSubGridJsonSHDHByCreate(string DNCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  2971. {
  2972. DataTable dt = new DataTable();
  2973. object Figure = GetDecimalDigits();
  2974. List<DbParameter> parameter = new List<DbParameter>();
  2975. /***
  2976. * 退退退退
  2977. * 退退
  2978. ***/
  2979. string checksql = $@"select a.ID from ICSDeliveryNotice a
  2980. inner join ICSDeliveryNotice b ON a.DNDetailID=Isnull(b.EATTRIBUTE8,'') and a.WorkPoint=b.WorkPoint and b.DNType='2' and b.EATTRIBUTE7='退'
  2981. where a.DNType='1' and a.DNCode='{DNCode}' and a.Sequence='{Sequence}' and a.WorkPoint='{WorkPoint}' ";
  2982. var checkdt = SqlHelper.CmdExecuteDataTable(checksql);
  2983. string sql = string.Empty;
  2984. if (checkdt.Rows.Count > 0)
  2985. {
  2986. sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit,
  2987. CAST( " + Quantity + @"*Convert(float,(ISNULL(a.EATTRIBUTE11,1)))+ISNULL(f.Quantity,0)+ISNULL(j.Quantity,0) AS DECIMAL(38,{0})) as Quantity,
  2988. CAST( a.Amount as DECIMAL(38,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  2989. CAST( ( " + Quantity + @"*Convert(float,(ISNULL(a.EATTRIBUTE11,1)))-ISNULL(c.LOTQTY,0)+ISNULL(f.Quantity,0)+ISNULL(j.Quantity,0)) as DECIMAL(38,6)) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  2990. CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays , case when CAST( (" + Quantity + @"*Convert(float,(ISNULL(a.EATTRIBUTE11,1)))+ISNULL(f.Quantity,0)+ISNULL(j.Quantity,0)-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Quantity + @"*Convert(float,(ISNULL(a.EATTRIBUTE11,1)))+ISNULL(f.Quantity,0)+ISNULL(j.Quantity,0)-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  2991. ,d.ProjectCode,d.BatchCode,d.Version,d.Brand,d.cFree1,d.cFree2,d.cFree3,d.cFree4,d.cFree5,d.cFree6,d.cFree7,d.cFree8,d.cFree9,d.cFree10,
  2992. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  2993. from ICSDeliveryNotice a
  2994. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2995. left join (select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  2996. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='7'
  2997. where isnull(a.EATTRIBUTE1,'')=''
  2998. group by b.TransCode,b.TransSequence
  2999. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence
  3000. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  3001. left join ICSDeliveryNotice f ON a.DNDetailID=Isnull(f.EATTRIBUTE8,'') and a.WorkPoint=f.WorkPoint and f.DNType='2' and f.EATTRIBUTE7='退'
  3002. left join (SELECT PODetailID,WorkPoint,sum(Quantity) as Quantity FROM ICSDeliveryNotice WHERE DNType='3' GROUP BY PODetailID,WorkPoint) j ON a.DNDetailID=j.PODetailID and a.WorkPoint=j.WorkPoint
  3003. WHERE 1 =1
  3004. and a.DNCode='" + DNCode + "' and a.Sequence='" + Sequence + "'";
  3005. }
  3006. else
  3007. {
  3008. sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit,
  3009. CAST( " + Quantity + @"*Convert(float,(ISNULL(a.EATTRIBUTE11,1)))+ISNULL(j.Quantity,0) AS DECIMAL(38,{0})) as Quantity,
  3010. CAST( a.Amount as DECIMAL(38,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  3011. CAST( ( " + Quantity + @"*Convert(float,(ISNULL(a.EATTRIBUTE11,1)))-ISNULL(c.LOTQTY,0)+ISNULL(j.Quantity,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  3012. CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays , case when CAST( (" + Quantity + @"*Convert(float,(ISNULL(a.EATTRIBUTE11,1)))-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Quantity + @"*Convert(float,(ISNULL(a.EATTRIBUTE11,1)))-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  3013. ,d.ProjectCode,d.BatchCode,d.Version,d.Brand,d.cFree1,d.cFree2,d.cFree3,d.cFree4,d.cFree5,d.cFree6,d.cFree7,d.cFree8,d.cFree9,d.cFree10,
  3014. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  3015. from ICSDeliveryNotice a
  3016. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  3017. left join(select a.DNCode,a.Sequence,a.WorkPoint,
  3018. case when b.OverInType='1' then a.Quantity*(1+b.OverInValue) when b.OverInType='2' then a.Quantity+b.OverInValue when b.OverInType='3' then 999999 else a.Quantity end as Quantity
  3019. from ICSDeliveryNotice a
  3020. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint) e on e.DNCode=a.DNCode and e.Sequence=a.Sequence
  3021. left join (select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  3022. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='7'
  3023. where isnull(a.EATTRIBUTE1,'')=''
  3024. group by b.TransCode,b.TransSequence
  3025. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence
  3026. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  3027. left join (SELECT PODetailID,WorkPoint,sum(Quantity) as Quantity FROM ICSDeliveryNotice WHERE DNType='3' GROUP BY PODetailID,WorkPoint) j ON a.DNDetailID=j.PODetailID and a.WorkPoint=j.WorkPoint
  3028. WHERE 1 =1
  3029. and a.DNCode='" + DNCode + "' and a.Sequence='" + Sequence + "'";
  3030. }
  3031. sql += " and a.WorkPoint='" + WorkPoint + "'";
  3032. sql = string.Format(sql, Figure);
  3033. return Repository().FindTableBySql(sql.ToString());
  3034. }
  3035. /// <summary>
  3036. /// 点击审核到货单生成条码(非规则生成条码,按流水号默认带出批号)
  3037. /// </summary>
  3038. public DataTable GetSubGridJsonSHDHByCreateNew(string DNCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  3039. {
  3040. string BatchCode = "";
  3041. DataTable dt = new DataTable();
  3042. object Figure = GetDecimalDigits();
  3043. List<DbParameter> parameter = new List<DbParameter>();
  3044. string INVType = "";
  3045. #region 判断物料是否是无条码物料
  3046. string chksql = @" select B.F_Define4 from Sys_SRM_Items A
  3047. INNER JOIN Sys_SRM_ItemsDetail B ON B.F_ItemId=A.F_Id
  3048. WHERE A.F_EnCode='InventoryLotWareHouseFixed'
  3049. AND B.F_Define1='" + InvCode + "'";
  3050. DataTable chkdt = SqlHelper.CmdExecuteDataTable(chksql);
  3051. #endregion
  3052. if (chkdt.Rows.Count == 0)
  3053. {
  3054. #region 根据料号获取最新的批号
  3055. string Timestr = DateTime.Now.Year.ToString().Substring(2) + DateTime.Now.Month.ToString("D2") + DateTime.Now.Day.ToString("D2");
  3056. string lotsql = @" select TOP 1 B.BatchCode from ICSInventoryLot A
  3057. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID
  3058. WHERE A.InvCode='" + InvCode + "' AND A.WorkPoint='" + WorkPoint + @"'
  3059. AND B.BatchCode like '"+ Timestr + @"%'
  3060. ORDER BY B.MTIME DESC";
  3061. DataTable lotdt = SqlHelper.CmdExecuteDataTable(lotsql);
  3062. if (lotdt.Rows.Count == 0)
  3063. {
  3064. BatchCode = Timestr + "0000001";
  3065. }
  3066. else
  3067. {
  3068. string BatchSerial = (Convert.ToInt32(lotdt.Rows[0]["BatchCode"].ToString().Substring(8)) + 1).ToString().PadLeft(7, '0');
  3069. BatchCode = Timestr + BatchSerial;
  3070. }
  3071. #endregion
  3072. }
  3073. else
  3074. {
  3075. //维护在自定义档案(料品条码库位固定)中的物料,取自定义档案中的字段4作为批号
  3076. BatchCode = chkdt.Rows[0]["F_Define4"].ToString();
  3077. INVType = "无条码物料";
  3078. }
  3079. /***
  3080. * 退退退退
  3081. * 退退
  3082. ***/
  3083. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn002', " + Quantity + ",1,1,'')";
  3084. object Num = SqlHelper.ExecuteScalar(SeachNum);
  3085. string checksql = $@"select a.ID from ICSDeliveryNotice a
  3086. inner join ICSDeliveryNotice b ON a.DNDetailID=Isnull(b.EATTRIBUTE8,'') and a.WorkPoint=b.WorkPoint and b.DNType='2' and b.EATTRIBUTE7='退'
  3087. where a.DNType='1' and a.DNCode='{DNCode}' and a.Sequence='{Sequence}' and a.WorkPoint='{WorkPoint}' ";
  3088. var checkdt = SqlHelper.CmdExecuteDataTable(checksql);
  3089. string sql = string.Empty;
  3090. if (checkdt.Rows.Count > 0)
  3091. {
  3092. sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit,
  3093. CAST( " + Num + @"+ISNULL(f.Quantity,0)+ISNULL(j.Quantity,0) AS DECIMAL(38,{0})) as Quantity,
  3094. CAST( a.Amount as DECIMAL(38,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  3095. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)+ISNULL(f.Quantity,0)+ISNULL(j.Quantity,0)) as DECIMAL(38,6)) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  3096. CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays , case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  3097. ,d.ProjectCode,'" + BatchCode + @"' AS BatchCode,d.Version,d.Brand,d.cFree1,d.cFree2,d.cFree3,d.cFree4,d.cFree5,d.cFree6,d.cFree7,d.cFree8,d.cFree9,d.cFree10,
  3098. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10,'" + INVType + @"' AS INVType
  3099. from ICSDeliveryNotice a
  3100. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  3101. left join(select a.DNCode,a.Sequence,a.WorkPoint,
  3102. case when b.OverInType='1' then a.Quantity*(1+b.OverInValue) when b.OverInType='2' then a.Quantity+b.OverInValue when b.OverInType='3' then 999999 else a.Quantity end as Quantity
  3103. from ICSDeliveryNotice a
  3104. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint) e on e.DNCode=a.DNCode and e.Sequence=a.Sequence
  3105. left join (select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  3106. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='7'
  3107. where isnull(a.EATTRIBUTE1,'')=''
  3108. group by b.TransCode,b.TransSequence
  3109. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence
  3110. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  3111. left join ICSDeliveryNotice f ON a.DNDetailID=Isnull(f.EATTRIBUTE8,'') and a.WorkPoint=f.WorkPoint and f.DNType='2' and f.EATTRIBUTE7='退'
  3112. left join (SELECT PODetailID,WorkPoint,sum(Quantity) as Quantity FROM ICSDeliveryNotice WHERE DNType='3' GROUP BY PODetailID,WorkPoint) j ON a.DNDetailID=j.PODetailID and a.WorkPoint=j.WorkPoint
  3113. WHERE 1 =1
  3114. and a.DNCode='" + DNCode + "' and a.Sequence='" + Sequence + "'";
  3115. }
  3116. else
  3117. {
  3118. sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit,
  3119. CAST( " + Num + @"+ISNULL(j.Quantity,0) AS DECIMAL(38,{0})) as Quantity,
  3120. CAST( a.Amount as DECIMAL(38,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  3121. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)+ISNULL(j.Quantity,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  3122. CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays , case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  3123. ,d.ProjectCode,'" + BatchCode + @"' AS BatchCode,d.Version,d.Brand,d.cFree1,d.cFree2,d.cFree3,d.cFree4,d.cFree5,d.cFree6,d.cFree7,d.cFree8,d.cFree9,d.cFree10,
  3124. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10,'" + INVType + @"' AS INVType
  3125. from ICSDeliveryNotice a
  3126. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  3127. left join(select a.DNCode,a.Sequence,a.WorkPoint,
  3128. case when b.OverInType='1' then a.Quantity*(1+b.OverInValue) when b.OverInType='2' then a.Quantity+b.OverInValue when b.OverInType='3' then 999999 else a.Quantity end as Quantity
  3129. from ICSDeliveryNotice a
  3130. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint) e on e.DNCode=a.DNCode and e.Sequence=a.Sequence
  3131. left join (select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  3132. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='7'
  3133. where isnull(a.EATTRIBUTE1,'')=''
  3134. group by b.TransCode,b.TransSequence
  3135. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence
  3136. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  3137. left join (SELECT PODetailID,WorkPoint,sum(Quantity) as Quantity FROM ICSDeliveryNotice WHERE DNType='3' GROUP BY PODetailID,WorkPoint) j ON a.DNDetailID=j.PODetailID and a.WorkPoint=j.WorkPoint
  3138. WHERE 1 =1
  3139. and a.DNCode='" + DNCode + "' and a.Sequence='" + Sequence + "'";
  3140. }
  3141. sql += " and a.WorkPoint='" + WorkPoint + "'";
  3142. sql = string.Format(sql, Figure);
  3143. return Repository().FindTableBySql(sql.ToString());
  3144. }
  3145. /// <summary>
  3146. /// 点击归还生成条码(归还)
  3147. /// </summary>
  3148. public DataTable GetSubGridJsonGuiHuanByCreate(string ReturnCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  3149. {
  3150. DataTable dt = new DataTable();
  3151. object Figure = GetDecimalDigits();
  3152. List<DbParameter> parameter = new List<DbParameter>();
  3153. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn023', " + Quantity + ",1,4,'')";
  3154. object Num = SqlHelper.ExecuteScalar(SeachNum);
  3155. string sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit,
  3156. CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  3157. CAST( a.Amount as DECIMAL(38,{0})) as Amount,
  3158. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  3159. CAST( ( " + Num + @" -ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  3160. CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays , case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  3161. ,d.ProjectCode,d.BatchCode,d.Version,d.Brand,d.cFree1,d.cFree2,d.cFree3,d.cFree4,d.cFree5,d.cFree6,d.cFree7,d.cFree8,d.cFree9,d.cFree10,
  3162. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  3163. from ICSReturn a
  3164. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  3165. left join (select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  3166. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='6'
  3167. where isnull(a.EATTRIBUTE1,'')=''
  3168. group by b.TransCode,b.TransSequence
  3169. ) c on a.ReturnCode=c.TransCode and a.Sequence=c.TransSequence
  3170. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  3171. WHERE 1 =1
  3172. and a.ReturnCode='" + ReturnCode + "' and a.Sequence='" + Sequence + "'";
  3173. sql += " and a.WorkPoint='" + WorkPoint + "'";
  3174. sql = string.Format(sql, Figure);
  3175. return Repository().FindTableBySql(sql.ToString());
  3176. }
  3177. /// <summary>
  3178. /// 归还单生成条码
  3179. /// </summary>
  3180. /// <param name="POCode"></param>
  3181. /// <param name="PORow"></param>
  3182. /// <param name="keyValue"></param>
  3183. /// 已改
  3184. /// <returns></returns>
  3185. public int SubmitFormGuiHuan(string ReturnCode, string Sequence, string keyValue, string WorkPoint)
  3186. {
  3187. var queryParam = keyValue.ToJObject();
  3188. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  3189. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  3190. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  3191. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  3192. decimal LOTQTY = minPackQty;
  3193. string Pre = "GH" + ReturnCode + (Convert.ToInt32(Sequence)).ToString("D4");
  3194. string sql = string.Empty;
  3195. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  3196. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  3197. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  3198. string sqls = string.Empty;
  3199. string Colspan = "";
  3200. string str1 = "";
  3201. List<string> ExtensionIDList = new List<string>();
  3202. #region 装箱的功能
  3203. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  3204. string VenCode = queryParam["VenCode"].ToString();
  3205. int PackCount = 0;//每箱放的数量
  3206. int Pack_YuShu = 0;//需要平摊的数量
  3207. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  3208. List<PackModel> List_Pack = new List<PackModel>();
  3209. int ZQty = 0;
  3210. if (createPackCount > 0)
  3211. {
  3212. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  3213. if (Pack_YuShu == 0)
  3214. {
  3215. PackCount = (createPageCount / createPackCount);
  3216. }
  3217. else
  3218. {
  3219. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  3220. }
  3221. for (int jj = 0; jj < createPackCount; jj++)
  3222. {
  3223. object CARID = Guid.NewGuid();
  3224. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  3225. sql += @" INSERT INTO dbo.ICSContainer
  3226. ( ID,ContainerCode ,
  3227. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  3228. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  3229. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  3230. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  3231. PackModel PP = new PackModel();
  3232. PP.ID = CARID.ToString();
  3233. PP.PackCode = Carton;
  3234. if (jj < Pack_YuShu)
  3235. {
  3236. PP.FristBarIndex = ZQty;
  3237. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  3238. }
  3239. else
  3240. {
  3241. PP.FristBarIndex = ZQty;
  3242. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  3243. }
  3244. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  3245. List_Pack.Add(PP);
  3246. }
  3247. }
  3248. #endregion
  3249. for (int i = 0; i < createPageCount; i++)
  3250. {
  3251. if (i + 1 == createPageCount)
  3252. {
  3253. if (minPackQty * createPageCount > thisCreateQty)
  3254. {
  3255. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  3256. }
  3257. }
  3258. 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();
  3259. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  3260. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  3261. bool flag = true;
  3262. foreach (var item in ExtensionIDList)
  3263. {
  3264. if (item == Colspan + WorkPoint)
  3265. {
  3266. flag = false;
  3267. }
  3268. }
  3269. if (ExtensionID == null && flag == true)
  3270. {
  3271. str1 = Guid.NewGuid().ToString();
  3272. 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)
  3273. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  3274. 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(),
  3275. MUSER, MUSERNAME, WorkPoints);
  3276. }
  3277. else if (ExtensionID != null)
  3278. {
  3279. str1 = ExtensionID.ToString();
  3280. }
  3281. ExtensionIDList.Add(Colspan + WorkPoint);
  3282. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  3283. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  3284. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  3285. LotNo, ReturnCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  3286. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  3287. //{
  3288. sql += string.Format(@"
  3289. insert into ICSInventoryLot
  3290. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  3291. select
  3292. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','6','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  3293. from ICSReturn where ReturnCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  3294. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, ReturnCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  3295. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  3296. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  3297. sql += "\r\n";
  3298. //装箱的功能
  3299. if (List_Pack.Count > 0)
  3300. {
  3301. PackModel mm = new PackModel();
  3302. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  3303. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  3304. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  3305. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  3306. }
  3307. //}
  3308. }
  3309. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  3310. return count;
  3311. }
  3312. /// <summary>
  3313. /// 审核到货单生成条码
  3314. /// </summary>
  3315. /// <param name="POCode"></param>
  3316. /// <param name="PORow"></param>
  3317. /// <param name="keyValue"></param>
  3318. /// 2023 1117 传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则 lacy.xu
  3319. /// <returns></returns>
  3320. public int SubmitFormSHDH(string DNCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  3321. {
  3322. var queryParam = keyValue.ToJObject();
  3323. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  3324. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  3325. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  3326. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  3327. decimal LOTQTY = minPackQty;
  3328. string Pre = "DN" + DNCode + (Convert.ToInt32(Sequence)).ToString("D4");
  3329. string sql = string.Empty;
  3330. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  3331. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  3332. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  3333. string InvCode = queryParam["ClassCode"].ToString();
  3334. string sqls = string.Empty;
  3335. string Colspan = "";
  3336. string str1 = "";
  3337. string LotNo = string.Empty;
  3338. List<string> ExtensionIDList = new List<string>();
  3339. #region 装箱的功能
  3340. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  3341. string VenCode = queryParam["VenCode"].ToString();
  3342. int PackCount = 0;//每箱放的数量
  3343. int Pack_YuShu = 0;//需要平摊的数量
  3344. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  3345. List<PackModel> List_Pack = new List<PackModel>();
  3346. int ZQty = 0;
  3347. if (createPackCount > 0)
  3348. {
  3349. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  3350. if (Pack_YuShu == 0)
  3351. {
  3352. PackCount = (createPageCount / createPackCount);
  3353. }
  3354. else
  3355. {
  3356. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  3357. }
  3358. for (int jj = 0; jj < createPackCount; jj++)
  3359. {
  3360. object CARID = Guid.NewGuid();
  3361. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  3362. sql += @" INSERT INTO dbo.ICSContainer
  3363. ( ID,ContainerCode ,
  3364. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  3365. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  3366. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  3367. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  3368. PackModel PP = new PackModel();
  3369. PP.ID = CARID.ToString();
  3370. PP.PackCode = Carton;
  3371. if (jj < Pack_YuShu)
  3372. {
  3373. PP.FristBarIndex = ZQty;
  3374. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  3375. }
  3376. else
  3377. {
  3378. PP.FristBarIndex = ZQty;
  3379. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  3380. }
  3381. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  3382. List_Pack.Add(PP);
  3383. }
  3384. }
  3385. #endregion
  3386. for (int i = 0; i < createPageCount; i++)
  3387. {
  3388. if (i + 1 == createPageCount)
  3389. {
  3390. if (minPackQty * createPageCount > thisCreateQty)
  3391. {
  3392. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  3393. }
  3394. }
  3395. 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();
  3396. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  3397. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  3398. bool flag = true;
  3399. foreach (var item in ExtensionIDList)
  3400. {
  3401. if (item == Colspan + WorkPoint)
  3402. {
  3403. flag = false;
  3404. }
  3405. }
  3406. if (ExtensionID == null && flag == true)
  3407. {
  3408. str1 = Guid.NewGuid().ToString();
  3409. 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)
  3410. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  3411. 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(),
  3412. MUSER, MUSERNAME, WorkPoints);
  3413. }
  3414. else if (ExtensionID != null)
  3415. {
  3416. str1 = ExtensionID.ToString();
  3417. }
  3418. ExtensionIDList.Add(Colspan + WorkPoint);
  3419. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  3420. if (AMEnable == "true")
  3421. {
  3422. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  3423. }
  3424. else
  3425. {
  3426. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  3427. }
  3428. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  3429. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  3430. LotNo, DNCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  3431. sql += string.Format(@"
  3432. insert into ICSInventoryLot
  3433. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  3434. select
  3435. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','7','{3}','{4}', getdate(),'{5}','{9}'
  3436. ,'{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  3437. from ICSDeliveryNotice where DNCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  3438. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, DNCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  3439. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  3440. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  3441. sql += "\r\n";
  3442. //装箱的功能
  3443. if (List_Pack.Count > 0)
  3444. {
  3445. PackModel mm = new PackModel();
  3446. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  3447. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  3448. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  3449. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  3450. }
  3451. }
  3452. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  3453. return count;
  3454. }
  3455. /// <summary>
  3456. /// 普通到货单生成条码(非规则,支持一次生成多个数量不同的条码并对应不同的批号)
  3457. /// </summary>
  3458. /// <param name="TransferNO"></param>
  3459. /// <param name="Sequence"></param>
  3460. /// <param name="keyValue"></param>
  3461. /// <param name="WorkPoint"></param>
  3462. /// <returns></returns>
  3463. public int SubmitFormSHDHNew(string DNCode, string Sequence, string keyValue, string WorkPoint)
  3464. {
  3465. try
  3466. {
  3467. var queryParam = keyValue.ToJObject();
  3468. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  3469. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  3470. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  3471. bool InvSpecial = Convert.ToBoolean(queryParam["InvSpecial"]);
  3472. int CreateLotCount = Convert.ToInt32(queryParam["LotCount"]);
  3473. if (InvSpecial == true)//特殊无条码料不根据填的条码个数自动生成条码
  3474. {
  3475. CreateLotCount = 0;
  3476. }
  3477. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  3478. List<decimal> lotQtys = new List<decimal>();
  3479. List<string> batchList = new List<string>();
  3480. List<decimal> weightList = new List<decimal>();
  3481. List<string> memobatchList = new List<string>();
  3482. decimal TotalInputQty = 0;
  3483. decimal LastLotQty = 0;
  3484. foreach (var jLotno in jLotnos)
  3485. {
  3486. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  3487. decimal weight = 0;
  3488. var weightStr = jLotno["weight"]?.ToString()?.Trim();
  3489. decimal w;
  3490. if (!string.IsNullOrEmpty(weightStr) && decimal.TryParse(weightStr, out w))
  3491. {
  3492. weight = w;
  3493. }
  3494. string batchCode = jLotno["batchcode"].ToString();
  3495. string memobatch = jLotno["memobatchcode"]?.ToString()?.Trim() ?? string.Empty;
  3496. lotQtys.Add(qty);
  3497. batchList.Add(batchCode);
  3498. weightList.Add(weight);
  3499. memobatchList.Add(memobatch);
  3500. TotalInputQty += qty;
  3501. LastLotQty = qty;
  3502. }
  3503. if (CreateLotCount - jLotnos.Count <= 0)//填写的生成条码个数作为本次生成条码的总个数,减去已经手动添加条码,余数才是需要自动生成条码的个数。
  3504. {
  3505. CreateLotCount = 0;
  3506. }
  3507. else
  3508. {
  3509. CreateLotCount = CreateLotCount - jLotnos.Count;
  3510. }
  3511. if (CreateLotCount != 0)//判断输入的条码个数乘以最后一个手动输入的条码数量加上手动输入的所有条码数量是否超出本次生成数量。
  3512. {
  3513. decimal autoLotQty = CreateLotCount * LastLotQty;
  3514. if (autoLotQty + TotalInputQty > thisCreateQty)
  3515. {
  3516. throw new Exception("自动生成的条码数量:" + autoLotQty + "加上手动添加的条码数量:" + TotalInputQty + "之和超出了本次生成数量:" + thisCreateQty + ",请重新计算并输入数量!");
  3517. }
  3518. }
  3519. int createPageCount = lotQtys.Count();
  3520. string Pre = "DN" + DNCode + (Convert.ToInt32(Sequence)).ToString("D4");
  3521. string sql = string.Empty;
  3522. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  3523. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  3524. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  3525. string Identification = Guid.NewGuid().ToString();
  3526. string sqls = string.Empty;
  3527. string Colspan = "";
  3528. string str1 = "";
  3529. List<string> ExtensionIDList = new List<string>();
  3530. #region 装箱的功能
  3531. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  3532. string VenCode = queryParam["VenCode"].ToString();
  3533. int PackCount = 0;//每箱放的数量
  3534. int Pack_YuShu = 0;//需要平摊的数量
  3535. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  3536. List<PackModel> List_Pack = new List<PackModel>();
  3537. int ZQty = 0;
  3538. if (createPackCount > 0)
  3539. {
  3540. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  3541. if (Pack_YuShu == 0)
  3542. {
  3543. PackCount = (createPageCount / createPackCount);
  3544. }
  3545. else
  3546. {
  3547. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  3548. }
  3549. for (int jj = 0; jj < createPackCount; jj++)
  3550. {
  3551. object CARID = Guid.NewGuid();
  3552. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  3553. sql += @" INSERT INTO dbo.ICSContainer
  3554. ( ID,ContainerCode ,
  3555. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  3556. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  3557. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  3558. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  3559. PackModel PP = new PackModel();
  3560. PP.ID = CARID.ToString();
  3561. PP.PackCode = Carton;
  3562. if (jj < Pack_YuShu)
  3563. {
  3564. PP.FristBarIndex = ZQty;
  3565. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  3566. }
  3567. else
  3568. {
  3569. PP.FristBarIndex = ZQty;
  3570. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  3571. }
  3572. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  3573. List_Pack.Add(PP);
  3574. }
  3575. }
  3576. #endregion
  3577. for (int i = 0; i < createPageCount; i++)
  3578. {
  3579. var LOTQTY = lotQtys[i];
  3580. var BatchCode = batchList[i];
  3581. var Weight = weightList[i];
  3582. var MemoBatch = memobatchList[i];
  3583. Colspan = queryParam["ProjectCode"].ToString() + "~" + BatchCode + "~" + 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();
  3584. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  3585. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  3586. bool flag = true;
  3587. foreach (var item in ExtensionIDList)
  3588. {
  3589. if (item == Colspan + WorkPoint)
  3590. {
  3591. flag = false;
  3592. }
  3593. }
  3594. if (ExtensionID == null && flag == true)
  3595. {
  3596. str1 = Guid.NewGuid().ToString();
  3597. 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)
  3598. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  3599. str1, Colspan, queryParam["ProjectCode"].ToString(), BatchCode, 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(),
  3600. MUSER, MUSERNAME, WorkPoints);
  3601. }
  3602. else if (ExtensionID != null)
  3603. {
  3604. str1 = ExtensionID.ToString();
  3605. }
  3606. ExtensionIDList.Add(Colspan + WorkPoint);
  3607. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  3608. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  3609. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  3610. LotNo, DNCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  3611. sql += string.Format(@"
  3612. insert into ICSInventoryLot
  3613. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10,EATTRIBUTE11,EATTRIBUTE12)
  3614. select
  3615. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','7','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}'
  3616. from ICSDeliveryNotice where DNCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  3617. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, DNCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  3618. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  3619. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString(), Weight, MemoBatch);
  3620. sql += "\r\n";
  3621. //装箱的功能
  3622. if (List_Pack.Count > 0)
  3623. {
  3624. PackModel mm = new PackModel();
  3625. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  3626. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  3627. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  3628. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  3629. }
  3630. if (i == createPageCount - 1)
  3631. {
  3632. string LastBatch = BatchCode;
  3633. for (int j = 0; j < CreateLotCount; j++)
  3634. {
  3635. //自动生成条码取最后一个手动条码的批号开始自增
  3636. string AutoBatchCode = LastBatch.Substring(0, LastBatch.Length - 7) + (Convert.ToInt32(LastBatch.Substring(LastBatch.Length - 7))+1).ToString().PadLeft(7,'0');
  3637. Colspan = queryParam["ProjectCode"].ToString() + "~" + AutoBatchCode + "~" + 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();
  3638. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  3639. ExtensionID = SqlHelper.ExecuteScalar(sqls);
  3640. flag = true;
  3641. foreach (var item in ExtensionIDList)
  3642. {
  3643. if (item == Colspan + WorkPoint)
  3644. {
  3645. flag = false;
  3646. }
  3647. }
  3648. if (ExtensionID == null && flag == true)
  3649. {
  3650. str1 = Guid.NewGuid().ToString();
  3651. 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)
  3652. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  3653. str1, Colspan, queryParam["ProjectCode"].ToString(), AutoBatchCode, 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(),
  3654. MUSER, MUSERNAME, WorkPoints);
  3655. }
  3656. else if (ExtensionID != null)
  3657. {
  3658. str1 = ExtensionID.ToString();
  3659. }
  3660. ExtensionIDList.Add(Colspan + WorkPoint);
  3661. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  3662. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  3663. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  3664. LotNo, DNCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  3665. sql += string.Format(@"
  3666. insert into ICSInventoryLot
  3667. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10,EATTRIBUTE11,EATTRIBUTE12)
  3668. select
  3669. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','7','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}'
  3670. from ICSDeliveryNotice where DNCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  3671. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, DNCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  3672. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  3673. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString(), Weight, MemoBatch);
  3674. sql += "\r\n";
  3675. LastBatch = AutoBatchCode;
  3676. }
  3677. }
  3678. }
  3679. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  3680. return count;
  3681. }
  3682. catch (Exception ex)
  3683. {
  3684. throw new Exception(ex.Message);
  3685. }
  3686. }
  3687. /// <summary>
  3688. /// 普通到货单生成条码(非规则,支持一次生成多个数量不同的条码并对应不同的批号)
  3689. /// </summary>
  3690. /// <param name="TransferNO"></param>
  3691. /// <param name="Sequence"></param>
  3692. /// <param name="keyValue"></param>
  3693. /// <param name="WorkPoint"></param>
  3694. /// <returns></returns>
  3695. public int SubmitFormSHDHNewbak(string DNCode, string Sequence, string keyValue, string WorkPoint)
  3696. {
  3697. var queryParam = keyValue.ToJObject();
  3698. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  3699. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  3700. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  3701. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  3702. List<decimal> lotQtys = new List<decimal>();
  3703. List<string> batchList = new List<string>();
  3704. List<decimal> weightList = new List<decimal>();
  3705. List<string> memobatchList = new List<string>();
  3706. foreach (var jLotno in jLotnos)
  3707. {
  3708. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  3709. decimal weight = 0;
  3710. var weightStr = jLotno["weight"]?.ToString()?.Trim();
  3711. decimal w;
  3712. if (!string.IsNullOrEmpty(weightStr) && decimal.TryParse(weightStr, out w))
  3713. {
  3714. weight = w;
  3715. }
  3716. string batchCode = jLotno["batchcode"].ToString();
  3717. string memobatch = jLotno["memobatchcode"]?.ToString()?.Trim() ?? string.Empty;
  3718. lotQtys.Add(qty);
  3719. batchList.Add(batchCode);
  3720. weightList.Add(weight);
  3721. memobatchList.Add(memobatch);
  3722. }
  3723. int createPageCount = lotQtys.Count();
  3724. string Pre = "DN" + DNCode + (Convert.ToInt32(Sequence)).ToString("D4");
  3725. string sql = string.Empty;
  3726. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  3727. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  3728. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  3729. string Identification = Guid.NewGuid().ToString();
  3730. string sqls = string.Empty;
  3731. string Colspan = "";
  3732. string str1 = "";
  3733. List<string> ExtensionIDList = new List<string>();
  3734. #region 装箱的功能
  3735. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  3736. string VenCode = queryParam["VenCode"].ToString();
  3737. int PackCount = 0;//每箱放的数量
  3738. int Pack_YuShu = 0;//需要平摊的数量
  3739. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  3740. List<PackModel> List_Pack = new List<PackModel>();
  3741. int ZQty = 0;
  3742. if (createPackCount > 0)
  3743. {
  3744. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  3745. if (Pack_YuShu == 0)
  3746. {
  3747. PackCount = (createPageCount / createPackCount);
  3748. }
  3749. else
  3750. {
  3751. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  3752. }
  3753. for (int jj = 0; jj < createPackCount; jj++)
  3754. {
  3755. object CARID = Guid.NewGuid();
  3756. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  3757. sql += @" INSERT INTO dbo.ICSContainer
  3758. ( ID,ContainerCode ,
  3759. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  3760. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  3761. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  3762. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  3763. PackModel PP = new PackModel();
  3764. PP.ID = CARID.ToString();
  3765. PP.PackCode = Carton;
  3766. if (jj < Pack_YuShu)
  3767. {
  3768. PP.FristBarIndex = ZQty;
  3769. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  3770. }
  3771. else
  3772. {
  3773. PP.FristBarIndex = ZQty;
  3774. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  3775. }
  3776. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  3777. List_Pack.Add(PP);
  3778. }
  3779. }
  3780. #endregion
  3781. for (int i = 0; i < createPageCount; i++)
  3782. {
  3783. var LOTQTY = lotQtys[i];
  3784. var BatchCode = batchList[i];
  3785. var Weight = weightList[i];
  3786. var MemoBatch = memobatchList[i];
  3787. Colspan = queryParam["ProjectCode"].ToString() + "~" + BatchCode + "~" + 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();
  3788. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  3789. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  3790. bool flag = true;
  3791. foreach (var item in ExtensionIDList)
  3792. {
  3793. if (item == Colspan + WorkPoint)
  3794. {
  3795. flag = false;
  3796. }
  3797. }
  3798. if (ExtensionID == null && flag == true)
  3799. {
  3800. str1 = Guid.NewGuid().ToString();
  3801. 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)
  3802. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  3803. str1, Colspan, queryParam["ProjectCode"].ToString(), BatchCode, 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(),
  3804. MUSER, MUSERNAME, WorkPoints);
  3805. }
  3806. else if (ExtensionID != null)
  3807. {
  3808. str1 = ExtensionID.ToString();
  3809. }
  3810. ExtensionIDList.Add(Colspan + WorkPoint);
  3811. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  3812. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  3813. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  3814. LotNo, DNCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  3815. sql += string.Format(@"
  3816. insert into ICSInventoryLot
  3817. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10,EATTRIBUTE11,EATTRIBUTE12)
  3818. select
  3819. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','7','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}'
  3820. from ICSDeliveryNotice where DNCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  3821. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, DNCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  3822. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  3823. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString(), Weight, MemoBatch);
  3824. sql += "\r\n";
  3825. //装箱的功能
  3826. if (List_Pack.Count > 0)
  3827. {
  3828. PackModel mm = new PackModel();
  3829. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  3830. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  3831. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  3832. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  3833. }
  3834. }
  3835. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  3836. return count;
  3837. }
  3838. /// <summary>
  3839. /// 审核委外到货单生成条码
  3840. /// </summary>
  3841. /// <param name="POCode"></param>
  3842. /// <param name="PORow"></param>
  3843. /// <param name="keyValue"></param>
  3844. /// 已改
  3845. /// <returns></returns>
  3846. /// 2023 1117 传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则 lacy.xu
  3847. public int SubmitFormWWSHDH(string ODNCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  3848. {
  3849. var queryParam = keyValue.ToJObject();
  3850. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  3851. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  3852. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  3853. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  3854. decimal LOTQTY = minPackQty;
  3855. string Pre = "ODN" + ODNCode + (Convert.ToInt32(Sequence)).ToString("D4");
  3856. string sql = string.Empty;
  3857. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  3858. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  3859. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  3860. string InvCode = queryParam["ClassCode"].ToString();
  3861. string sqls = string.Empty;
  3862. string Colspan = "";
  3863. string str1 = "";
  3864. string LotNo = string.Empty;
  3865. List<string> ExtensionIDList = new List<string>();
  3866. #region 装箱的功能
  3867. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  3868. string VenCode = queryParam["VenCode"].ToString();
  3869. int PackCount = 0;//每箱放的数量
  3870. int Pack_YuShu = 0;//需要平摊的数量
  3871. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  3872. List<PackModel> List_Pack = new List<PackModel>();
  3873. int ZQty = 0;
  3874. if (createPackCount > 0)
  3875. {
  3876. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  3877. if (Pack_YuShu == 0)
  3878. {
  3879. PackCount = (createPageCount / createPackCount);
  3880. }
  3881. else
  3882. {
  3883. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  3884. }
  3885. for (int jj = 0; jj < createPackCount; jj++)
  3886. {
  3887. object CARID = Guid.NewGuid();
  3888. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  3889. sql += @" INSERT INTO dbo.ICSContainer
  3890. ( ID,ContainerCode ,
  3891. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  3892. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  3893. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  3894. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  3895. PackModel PP = new PackModel();
  3896. PP.ID = CARID.ToString();
  3897. PP.PackCode = Carton;
  3898. if (jj < Pack_YuShu)
  3899. {
  3900. PP.FristBarIndex = ZQty;
  3901. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  3902. }
  3903. else
  3904. {
  3905. PP.FristBarIndex = ZQty;
  3906. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  3907. }
  3908. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  3909. List_Pack.Add(PP);
  3910. }
  3911. }
  3912. #endregion
  3913. for (int i = 0; i < createPageCount; i++)
  3914. {
  3915. if (i + 1 == createPageCount)
  3916. {
  3917. if (minPackQty * createPageCount > thisCreateQty)
  3918. {
  3919. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  3920. }
  3921. }
  3922. 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();
  3923. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  3924. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  3925. bool flag = true;
  3926. foreach (var item in ExtensionIDList)
  3927. {
  3928. if (item == Colspan + WorkPoint)
  3929. {
  3930. flag = false;
  3931. }
  3932. }
  3933. if (ExtensionID == null && flag == true)
  3934. {
  3935. str1 = Guid.NewGuid().ToString();
  3936. 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)
  3937. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  3938. 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(),
  3939. MUSER, MUSERNAME, WorkPoints);
  3940. }
  3941. else if (ExtensionID != null)
  3942. {
  3943. str1 = ExtensionID.ToString();
  3944. }
  3945. ExtensionIDList.Add(Colspan + WorkPoint);
  3946. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  3947. if (AMEnable == "true")
  3948. {
  3949. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  3950. }
  3951. else
  3952. {
  3953. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  3954. }
  3955. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  3956. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  3957. LotNo, ODNCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  3958. sql += string.Format(@"
  3959. insert into ICSInventoryLot
  3960. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  3961. select
  3962. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','8','{3}','{4}', getdate(),'{5}','{9}'
  3963. ,'{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  3964. from ICSODeliveryNotice where ODNCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  3965. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, ODNCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  3966. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  3967. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  3968. sql += "\r\n";
  3969. //装箱的功能
  3970. if (List_Pack.Count > 0)
  3971. {
  3972. PackModel mm = new PackModel();
  3973. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  3974. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  3975. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  3976. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  3977. }
  3978. }
  3979. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  3980. return count;
  3981. }
  3982. /// <summary>
  3983. /// 开立成品入库单
  3984. /// </summary>
  3985. /// <param name="POCode"></param>
  3986. /// <param name="PORow"></param>
  3987. /// <param name="keyValue"></param>
  3988. /// 已改
  3989. /// <returns></returns>
  3990. public int SubmitFormKLCPRK(string RCVCode, string Sequence, string keyValue, string WorkPoint)
  3991. {
  3992. var queryParam = keyValue.ToJObject();
  3993. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  3994. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  3995. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  3996. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  3997. decimal LOTQTY = minPackQty;
  3998. string Pre = "KCP" + RCVCode + (Convert.ToInt32(Sequence)).ToString("D4");
  3999. string sql = string.Empty;
  4000. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  4001. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  4002. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  4003. string sqls = string.Empty;
  4004. string Colspan = "";
  4005. string str1 = "";
  4006. List<string> ExtensionIDList = new List<string>();
  4007. #region 装箱的功能
  4008. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  4009. string VenCode = queryParam["VenCode"].ToString();
  4010. int PackCount = 0;//每箱放的数量
  4011. int Pack_YuShu = 0;//需要平摊的数量
  4012. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  4013. List<PackModel> List_Pack = new List<PackModel>();
  4014. int ZQty = 0;
  4015. if (createPackCount > 0)
  4016. {
  4017. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  4018. if (Pack_YuShu == 0)
  4019. {
  4020. PackCount = (createPageCount / createPackCount);
  4021. }
  4022. else
  4023. {
  4024. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  4025. }
  4026. for (int jj = 0; jj < createPackCount; jj++)
  4027. {
  4028. object CARID = Guid.NewGuid();
  4029. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  4030. sql += @" INSERT INTO dbo.ICSContainer
  4031. ( ID,ContainerCode ,
  4032. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  4033. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  4034. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  4035. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  4036. PackModel PP = new PackModel();
  4037. PP.ID = CARID.ToString();
  4038. PP.PackCode = Carton;
  4039. if (jj < Pack_YuShu)
  4040. {
  4041. PP.FristBarIndex = ZQty;
  4042. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  4043. }
  4044. else
  4045. {
  4046. PP.FristBarIndex = ZQty;
  4047. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  4048. }
  4049. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  4050. List_Pack.Add(PP);
  4051. }
  4052. }
  4053. #endregion
  4054. for (int i = 0; i < createPageCount; i++)
  4055. {
  4056. if (i + 1 == createPageCount)
  4057. {
  4058. if (minPackQty * createPageCount > thisCreateQty)
  4059. {
  4060. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  4061. }
  4062. }
  4063. 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();
  4064. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  4065. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  4066. bool flag = true;
  4067. foreach (var item in ExtensionIDList)
  4068. {
  4069. if (item == Colspan + WorkPoint)
  4070. {
  4071. flag = false;
  4072. }
  4073. }
  4074. if (ExtensionID == null && flag == true)
  4075. {
  4076. str1 = Guid.NewGuid().ToString();
  4077. 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)
  4078. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  4079. 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(),
  4080. MUSER, MUSERNAME, WorkPoints);
  4081. }
  4082. else if (ExtensionID != null)
  4083. {
  4084. str1 = ExtensionID.ToString();
  4085. }
  4086. ExtensionIDList.Add(Colspan + WorkPoint);
  4087. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  4088. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  4089. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  4090. LotNo, RCVCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  4091. sql += string.Format(@"
  4092. insert into ICSInventoryLot
  4093. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  4094. select
  4095. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','9','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  4096. from ICSManufactureReceive where RCVCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  4097. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, RCVCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  4098. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  4099. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  4100. sql += "\r\n";
  4101. //装箱的功能
  4102. if (List_Pack.Count > 0)
  4103. {
  4104. PackModel mm = new PackModel();
  4105. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  4106. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  4107. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  4108. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  4109. }
  4110. }
  4111. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  4112. return count;
  4113. }
  4114. //委外拒收单
  4115. public DataTable GetGridJsonWWJSD(string queryJson, ref Pagination jqgridparam)
  4116. {
  4117. DataTable dt = new DataTable();
  4118. var queryParam = queryJson.ToJObject();
  4119. List<DbParameter> parameter = new List<DbParameter>();
  4120. object Figure = GetDecimalDigits();
  4121. #region [SQL]
  4122. string sql = @"select a.ID, a.ODNCode OOCode,a.Sequence OOSequence,a.VenCode,e.VenName,a.InvCode, b.InvName,b.InvStd,b.InvDesc,b.InvUnit,
  4123. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount,CAST(a.RCVQuantity AS DECIMAL(38,{0})) as RCVQuantity,
  4124. CAST(a.UnitPrice AS DECIMAL(38,{0})) as UnitPrice,a.Currency,a.CreatePerson,a.CreateDateTime,CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  4125. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  4126. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10 ,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  4127. a.EATTRIBUTE9,a.EATTRIBUTE10
  4128. from ICSODeliveryNotice a
  4129. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  4130. left join (
  4131. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  4132. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='11'
  4133. where isnull(ee.EATTRIBUTE1,'')=''
  4134. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  4135. ) c on a.ODNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  4136. --inner join ICSOutsourcingOrder d on a.OOID=d.OOID and a.OODetailID=d.OODetailID and a.WorkPoint=d.WorkPoint
  4137. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  4138. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  4139. where a.ODNType='3' and a.Status='2' and a.EATTRIBUTE1 is NOT null
  4140. ";
  4141. sql = string.Format(sql, Figure);
  4142. #endregion
  4143. if (!string.IsNullOrWhiteSpace(queryJson))
  4144. {
  4145. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  4146. {
  4147. sql += " and a.ODNCode like '%" + queryParam["POCode"].ToString() + "%' ";
  4148. }
  4149. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  4150. {
  4151. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  4152. }
  4153. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  4154. {
  4155. sql += " and e.VenName like '%" + queryParam["VenName"].ToString() + "%' ";
  4156. }
  4157. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  4158. {
  4159. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  4160. }
  4161. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  4162. {
  4163. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  4164. }
  4165. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  4166. {
  4167. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  4168. }
  4169. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  4170. {
  4171. string POStatus = queryParam["POStatus"].ToString();
  4172. if (POStatus == "0")
  4173. {
  4174. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  4175. }
  4176. else if (POStatus == "1")
  4177. {
  4178. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  4179. }
  4180. else
  4181. {
  4182. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  4183. }
  4184. }
  4185. }
  4186. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  4187. {
  4188. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  4189. }
  4190. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  4191. {
  4192. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  4193. }
  4194. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  4195. }
  4196. //拒收单
  4197. public DataTable GetGridJsonJSD(string queryJson, ref Pagination jqgridparam)
  4198. {
  4199. DataTable dt = new DataTable();
  4200. var queryParam = queryJson.ToJObject();
  4201. List<DbParameter> parameter = new List<DbParameter>();
  4202. object Figure = GetDecimalDigits();
  4203. #region [SQL]
  4204. string sql = @"select a.ID,a.DNCode ,a.Sequence ,a.VenCode,e.VenName,a.InvCode, b.InvName,b.InvStd,b.InvDesc,b.InvUnit,
  4205. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount,CAST(a.RCVQuantity AS DECIMAL(38,{0})) as RCVQuantity,
  4206. CAST( a.UnitPrice AS DECIMAL(38,{0})) as UnitPrice,a.Currency,a.CreatePerson,a.CreateDateTime,
  4207. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  4208. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  4209. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  4210. a.EATTRIBUTE9,a.EATTRIBUTE10
  4211. from ICSDeliveryNotice a
  4212. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  4213. left join (
  4214. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  4215. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='10'
  4216. where isnull(ee.EATTRIBUTE1,'')=''
  4217. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  4218. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  4219. --inner join ICSPurchaseOrder d on a.POID=d.POID and a.PODetailID=d.PODetailID and a.WorkPoint=d.WorkPoint
  4220. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  4221. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  4222. where a.DNType='3' and a.Status='2' and a.EATTRIBUTE1 is NOT null
  4223. ";
  4224. sql = string.Format(sql, Figure);
  4225. #endregion
  4226. if (!string.IsNullOrWhiteSpace(queryJson))
  4227. {
  4228. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  4229. {
  4230. sql += " and a.DNCode like '%" + queryParam["POCode"].ToString() + "%' ";
  4231. }
  4232. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  4233. {
  4234. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  4235. }
  4236. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  4237. {
  4238. sql += " and e.VenName like '%" + queryParam["VenName"].ToString() + "%' ";
  4239. }
  4240. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  4241. {
  4242. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  4243. }
  4244. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  4245. {
  4246. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  4247. }
  4248. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  4249. {
  4250. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  4251. }
  4252. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  4253. {
  4254. string POStatus = queryParam["POStatus"].ToString();
  4255. if (POStatus == "0")
  4256. {
  4257. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  4258. }
  4259. else if (POStatus == "1")
  4260. {
  4261. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  4262. }
  4263. else
  4264. {
  4265. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  4266. }
  4267. }
  4268. }
  4269. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  4270. {
  4271. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  4272. }
  4273. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  4274. {
  4275. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  4276. }
  4277. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  4278. }
  4279. //领料申请退料
  4280. public DataTable GetGridJsonLLSQTL(string queryJson, ref Pagination jqgridparam)
  4281. {
  4282. DataTable dt = new DataTable();
  4283. var queryParam = queryJson.ToJObject();
  4284. List<DbParameter> parameter = new List<DbParameter>();
  4285. object Figure = GetDecimalDigits();
  4286. #region [SQL]
  4287. string sql = @"select a.ID,a.ApplyNegCode,a.Sequence,a.SourceDetailID,a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,bb.SourceCode,bb.SourceSequence,
  4288. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount,
  4289. CAST(a.IssueNegQuantity AS DECIMAL(38,{0})) as IssueNegQuantity ,a.ExtensionID,a.MUSERName,a.MTIME ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  4290. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  4291. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  4292. a.EATTRIBUTE9,a.EATTRIBUTE10
  4293. from ICSMOApplyNegDetail a
  4294. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  4295. left JOIN ICSMOApply bb ON a.SourceDetailID=bb.ApplyDetailID AND a.WorkPoint=bb.WorkPoint
  4296. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  4297. left join (
  4298. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  4299. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='12'
  4300. where isnull(ee.EATTRIBUTE1,'')=''
  4301. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  4302. )c
  4303. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  4304. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  4305. WHERE d.Type='2' and d.Status='2' ";
  4306. sql = string.Format(sql, Figure);
  4307. #endregion
  4308. if (!string.IsNullOrWhiteSpace(queryJson))
  4309. {
  4310. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  4311. {
  4312. sql += " and a.ApplyNegCode like '%" + queryParam["POCode"].ToString() + "%' ";
  4313. }
  4314. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  4315. {
  4316. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  4317. }
  4318. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  4319. {
  4320. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  4321. }
  4322. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  4323. {
  4324. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  4325. }
  4326. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  4327. {
  4328. sql += " and a.MTIME >= '" + queryParam["FromTime"].ToString() + "' ";
  4329. }
  4330. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  4331. {
  4332. sql += " and a.MTIME <= '" + queryParam["ToTime"].ToString() + "' ";
  4333. }
  4334. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  4335. {
  4336. string POStatus = queryParam["POStatus"].ToString();
  4337. if (POStatus == "0")
  4338. {
  4339. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  4340. }
  4341. else if (POStatus == "1")
  4342. {
  4343. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  4344. }
  4345. else
  4346. {
  4347. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  4348. }
  4349. }
  4350. }
  4351. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  4352. {
  4353. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  4354. }
  4355. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  4356. {
  4357. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  4358. }
  4359. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  4360. }
  4361. /// <summary>
  4362. /// 拒收生成条码
  4363. /// </summary>
  4364. /// <param name="POCode"></param>
  4365. /// <param name="PORow"></param>
  4366. /// <param name="keyValue"></param>
  4367. /// <returns></returns>
  4368. public int SubmitFormJSD(string DNCode, string Sequence, string keyValue, string WorkPoint)
  4369. {
  4370. var queryParam = keyValue.ToJObject();
  4371. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  4372. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  4373. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  4374. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  4375. decimal LOTQTY = minPackQty;
  4376. string Pre = "JS" + DNCode + (Convert.ToInt32(Sequence)).ToString("D4");
  4377. string sql = string.Empty;
  4378. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  4379. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  4380. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  4381. string sqls = string.Empty;
  4382. string Colspan = "";
  4383. string str1 = "";
  4384. List<string> ExtensionIDList = new List<string>();
  4385. #region 装箱的功能
  4386. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  4387. string VenCode = queryParam["VenCode"].ToString();
  4388. int PackCount = 0;//每箱放的数量
  4389. int Pack_YuShu = 0;//需要平摊的数量
  4390. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  4391. List<PackModel> List_Pack = new List<PackModel>();
  4392. int ZQty = 0;
  4393. if (createPackCount > 0)
  4394. {
  4395. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  4396. if (Pack_YuShu == 0)
  4397. {
  4398. PackCount = (createPageCount / createPackCount);
  4399. }
  4400. else
  4401. {
  4402. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  4403. }
  4404. for (int jj = 0; jj < createPackCount; jj++)
  4405. {
  4406. object CARID = Guid.NewGuid();
  4407. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  4408. sql += @" INSERT INTO dbo.ICSContainer
  4409. ( ID,ContainerCode ,
  4410. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  4411. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  4412. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  4413. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  4414. PackModel PP = new PackModel();
  4415. PP.ID = CARID.ToString();
  4416. PP.PackCode = Carton;
  4417. if (jj < Pack_YuShu)
  4418. {
  4419. PP.FristBarIndex = ZQty;
  4420. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  4421. }
  4422. else
  4423. {
  4424. PP.FristBarIndex = ZQty;
  4425. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  4426. }
  4427. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  4428. List_Pack.Add(PP);
  4429. }
  4430. }
  4431. #endregion
  4432. for (int i = 0; i < createPageCount; i++)
  4433. {
  4434. if (i + 1 == createPageCount)
  4435. {
  4436. if (minPackQty * createPageCount > thisCreateQty)
  4437. {
  4438. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  4439. }
  4440. }
  4441. 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();
  4442. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  4443. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  4444. bool flag = true;
  4445. foreach (var item in ExtensionIDList)
  4446. {
  4447. if (item == Colspan + WorkPoint)
  4448. {
  4449. flag = false;
  4450. }
  4451. }
  4452. if (ExtensionID == null && flag == true)
  4453. {
  4454. str1 = Guid.NewGuid().ToString();
  4455. 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)
  4456. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  4457. 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(),
  4458. MUSER, MUSERNAME, WorkPoints);
  4459. }
  4460. else if (ExtensionID != null)
  4461. {
  4462. str1 = ExtensionID.ToString();
  4463. }
  4464. ExtensionIDList.Add(Colspan + WorkPoint);
  4465. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  4466. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  4467. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  4468. LotNo, DNCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  4469. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  4470. //{
  4471. sql += string.Format(@"
  4472. insert into ICSInventoryLot
  4473. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  4474. select
  4475. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','10','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  4476. from ICSDeliveryNotice where DNCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  4477. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, DNCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  4478. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  4479. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  4480. sql += "\r\n";
  4481. //装箱的功能
  4482. if (List_Pack.Count > 0)
  4483. {
  4484. PackModel mm = new PackModel();
  4485. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  4486. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  4487. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  4488. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  4489. }
  4490. //}
  4491. }
  4492. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  4493. return count;
  4494. }
  4495. /// <summary>
  4496. /// 委外拒收生成条码
  4497. /// </summary>
  4498. /// <param name="POCode"></param>
  4499. /// <param name="PORow"></param>
  4500. /// <param name="keyValue"></param>
  4501. /// <returns></returns>
  4502. public int SubmitFormWWJSD(string ODNCode, string Sequence, string keyValue, string WorkPoint)
  4503. {
  4504. var queryParam = keyValue.ToJObject();
  4505. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  4506. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  4507. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  4508. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  4509. decimal LOTQTY = minPackQty;
  4510. string Pre = "OJS" + ODNCode + (Convert.ToInt32(Sequence)).ToString("D4");
  4511. string sql = string.Empty;
  4512. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  4513. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  4514. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  4515. string sqls = string.Empty;
  4516. string Colspan = "";
  4517. string str1 = "";
  4518. List<string> ExtensionIDList = new List<string>();
  4519. #region 装箱的功能
  4520. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  4521. string VenCode = queryParam["VenCode"].ToString();
  4522. int PackCount = 0;//每箱放的数量
  4523. int Pack_YuShu = 0;//需要平摊的数量
  4524. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  4525. List<PackModel> List_Pack = new List<PackModel>();
  4526. int ZQty = 0;
  4527. if (createPackCount > 0)
  4528. {
  4529. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  4530. if (Pack_YuShu == 0)
  4531. {
  4532. PackCount = (createPageCount / createPackCount);
  4533. }
  4534. else
  4535. {
  4536. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  4537. }
  4538. for (int jj = 0; jj < createPackCount; jj++)
  4539. {
  4540. object CARID = Guid.NewGuid();
  4541. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  4542. sql += @" INSERT INTO dbo.ICSContainer
  4543. ( ID,ContainerCode ,
  4544. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  4545. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  4546. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  4547. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  4548. PackModel PP = new PackModel();
  4549. PP.ID = CARID.ToString();
  4550. PP.PackCode = Carton;
  4551. if (jj < Pack_YuShu)
  4552. {
  4553. PP.FristBarIndex = ZQty;
  4554. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  4555. }
  4556. else
  4557. {
  4558. PP.FristBarIndex = ZQty;
  4559. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  4560. }
  4561. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  4562. List_Pack.Add(PP);
  4563. }
  4564. }
  4565. #endregion
  4566. for (int i = 0; i < createPageCount; i++)
  4567. {
  4568. if (i + 1 == createPageCount)
  4569. {
  4570. if (minPackQty * createPageCount > thisCreateQty)
  4571. {
  4572. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  4573. }
  4574. }
  4575. 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();
  4576. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  4577. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  4578. bool flag = true;
  4579. foreach (var item in ExtensionIDList)
  4580. {
  4581. if (item == Colspan + WorkPoint)
  4582. {
  4583. flag = false;
  4584. }
  4585. }
  4586. if (ExtensionID == null && flag == true)
  4587. {
  4588. str1 = Guid.NewGuid().ToString();
  4589. 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)
  4590. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  4591. 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(),
  4592. MUSER, MUSERNAME, WorkPoints);
  4593. }
  4594. else if (ExtensionID != null)
  4595. {
  4596. str1 = ExtensionID.ToString();
  4597. }
  4598. ExtensionIDList.Add(Colspan + WorkPoint);
  4599. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  4600. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  4601. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  4602. LotNo, ODNCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  4603. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  4604. //{
  4605. sql += string.Format(@"
  4606. insert into ICSInventoryLot
  4607. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  4608. select
  4609. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','11','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  4610. from ICSODeliveryNotice where ODNCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  4611. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, ODNCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  4612. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  4613. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  4614. sql += "\r\n";
  4615. //装箱的功能
  4616. if (List_Pack.Count > 0)
  4617. {
  4618. PackModel mm = new PackModel();
  4619. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  4620. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  4621. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  4622. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  4623. }
  4624. //}
  4625. }
  4626. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  4627. return count;
  4628. }
  4629. /// <summary>
  4630. /// 点击审核到货单生成条码(审核到货单)
  4631. /// </summary>
  4632. public DataTable GetSubGridJsonJSDByCreate(string DNCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  4633. {
  4634. DataTable dt = new DataTable();
  4635. object Figure = GetDecimalDigits();
  4636. List<DbParameter> parameter = new List<DbParameter>();
  4637. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn003', " + Quantity + ",1,1,'')";
  4638. object Num = SqlHelper.ExecuteScalar(SeachNum);
  4639. string sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  4640. CAST( a.Amount as DECIMAL(38,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  4641. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  4642. CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays , case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  4643. ,d.ProjectCode,d.BatchCode,d.Version,d.Brand,d.cFree1,d.cFree2,d.cFree3,d.cFree4,d.cFree5,d.cFree6,d.cFree7,d.cFree8,d.cFree9,d.cFree10,
  4644. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  4645. from ICSDeliveryNotice a
  4646. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  4647. left join (select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  4648. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='10'
  4649. where isnull(a.EATTRIBUTE1,'')=''
  4650. group by b.TransCode,b.TransSequence
  4651. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence
  4652. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  4653. WHERE a.DNType='3'
  4654. and a.DNCode='" + DNCode + "' and a.Sequence='" + Sequence + "'";
  4655. sql += " and a.WorkPoint='" + WorkPoint + "'";
  4656. sql = string.Format(sql, Figure);
  4657. return Repository().FindTableBySql(sql.ToString());
  4658. }
  4659. /// <summary>
  4660. /// 点击审核委外到货单生成条码(审核委外到货单)
  4661. /// </summary>
  4662. public DataTable GetSubGridJsonWWJSDByCreate(string ODNCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  4663. {
  4664. DataTable dt = new DataTable();
  4665. object Figure = GetDecimalDigits();
  4666. List<DbParameter> parameter = new List<DbParameter>();
  4667. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn006', " + Quantity + ",1,1,'')";
  4668. object Num = SqlHelper.ExecuteScalar(SeachNum);
  4669. string sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit,
  4670. CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  4671. CAST( a.Amount as DECIMAL(38,{0})) as Amount,
  4672. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  4673. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  4674. CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays , case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  4675. ,d.ProjectCode,d.BatchCode,d.Version,d.Brand,d.cFree1,d.cFree2,d.cFree3,d.cFree4,d.cFree5,d.cFree6,d.cFree7,d.cFree8,d.cFree9,d.cFree10,
  4676. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  4677. from ICSODeliveryNotice a
  4678. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  4679. left join (select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  4680. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='11'
  4681. where isnull(a.EATTRIBUTE1,'')=''
  4682. group by b.TransCode,b.TransSequence
  4683. ) c on a.ODNCode=c.TransCode and a.Sequence=c.TransSequence
  4684. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  4685. WHERE a.ODNType='3'
  4686. and a.ODNCode='" + ODNCode + "' and a.Sequence='" + Sequence + "'";
  4687. sql += " and a.WorkPoint='" + WorkPoint + "'";
  4688. sql = string.Format(sql, Figure);
  4689. return Repository().FindTableBySql(sql.ToString());
  4690. }
  4691. //获取委外退料源头条码
  4692. public DataTable GetWeiWaiTLSrcLot(string OApplyNegCode, string Sequence, string WorkPoint)
  4693. {
  4694. DataTable dt = new DataTable();
  4695. List<DbParameter> parameter = new List<DbParameter>();
  4696. string sql = @"select C.LotNo from ICSOApplyNegDetail A
  4697. INNER JOIN ICSOIssue B ON B.PickID=A.SourceDetailID AND B.InvCode=A.InvCode
  4698. INNER JOIN ICSWareHouseLotInfoLog C
  4699. ON C.TransCode=B.SourceCode AND SUBSTRING(C.TransSequence,0,CharIndex('~',C.TransSequence))=B.SourceSequence
  4700. AND C.WorkPoint=B.WorkPoint
  4701. AND C.TransType=3 AND C.BusinessCode=5
  4702. where A.OApplyNegCode='" + OApplyNegCode + "' and A.Sequence='" + Sequence + "' and A.WorkPoint='" + WorkPoint + @"'
  4703. order by C.MTIME desc";
  4704. return Repository().FindTableBySql(sql.ToString());
  4705. }
  4706. //获取领料申请源头条码
  4707. public DataTable GetLLSQSrcLot(string ApplyNegCode, string Sequence, string WorkPoint)
  4708. {
  4709. DataTable dt = new DataTable();
  4710. List<DbParameter> parameter = new List<DbParameter>();
  4711. string sql = @"select C.LotNo from ICSMOApplyNegDetail A
  4712. INNER JOIN ICSMOApply B ON B.EATTRIBUTE30=A.SourceDetailID AND B.InvCode=A.InvCode
  4713. INNER JOIN ICSWareHouseLotInfoLog C ON C.TransCode=B.ApplyCode AND C.TransSequence=B.Sequence
  4714. AND C.TransType=3 AND C.BusinessCode=14
  4715. where A.ApplyNegCode='" + ApplyNegCode + "' and A.Sequence='" + Sequence + "' and A.WorkPoint='" + WorkPoint + @"'
  4716. order by C.MTIME desc";
  4717. return Repository().FindTableBySql(sql.ToString());
  4718. }
  4719. //获取条码备用字段568(派纳特殊需求---销售退货直接取单据备用字段信息)
  4720. public DataTable GetSSDDocEATTRIBUTEInfo(string SSDCode, string Sequence, string WorkPoint)
  4721. {
  4722. string sql = @"select A.CreateDateTime AS ProductDate,B.BatchCode AS BatchCode,A.EATTRIBUTE3,A.EATTRIBUTE5,A.EATTRIBUTE6,A.EATTRIBUTE8 from ICSSSD A
  4723. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID
  4724. where A.SSDCode='" + SSDCode + "' and A.Sequence='" + Sequence + "' and A.WorkPoint='" + WorkPoint + "'";
  4725. return Repository().FindTableBySql(sql.ToString());
  4726. }
  4727. //获取业务源头条码备用字段456(派纳特殊需求)
  4728. public DataTable GetSrcLotNoInfoPN(string LotNo, string WorkPoint)
  4729. {
  4730. try
  4731. {
  4732. string sql = "SELECT '' AS EATTRIBUTE3,'' AS EATTRIBUTE5,'' AS EATTRIBUTE6,'' AS EATTRIBUTE8 ";
  4733. DataTable dt = new DataTable();
  4734. List<DbParameter> parameter = new List<DbParameter>();
  4735. string lotsql = @" select A.Type,B.TransCode,B.TransSequence from ICSInventoryLot A
  4736. INNER JOIN ICSInventoryLotDetail B ON B.LotNo=A.LotNo AND B.WorkPoint=A.WorkPoint
  4737. WHERE A.LotNo='" + LotNo + "' AND A.WorkPoint='" + WorkPoint + "'";
  4738. dt = SqlHelper.GetDataTableBySql(lotsql);
  4739. if (dt.Rows.Count > 0)
  4740. {
  4741. if (dt.Rows[0]["Type"].ToString() == "101" || dt.Rows[0]["Type"].ToString() == "102")//分批合批或形态转换后条码 需要找到最初的原条码确认单据后再取备用字段
  4742. {
  4743. string OriginalLot = LotNo.Split('-')[0];
  4744. lotsql = @" select A.Type,B.TransCode,B.TransSequence from ICSInventoryLot A
  4745. INNER JOIN ICSInventoryLotDetail B ON B.LotNo=A.LotNo AND B.WorkPoint=A.WorkPoint
  4746. WHERE A.LotNo='" + OriginalLot + "' AND A.WorkPoint='" + WorkPoint + "'";
  4747. dt = SqlHelper.GetDataTableBySql(lotsql);
  4748. if (dt.Rows.Count == 0)
  4749. {
  4750. return Repository().FindTableBySql(sql.ToString());
  4751. }
  4752. else
  4753. {
  4754. LotNo = OriginalLot;
  4755. }
  4756. }
  4757. if (dt.Rows[0]["Type"].ToString() == "0" || dt.Rows[0]["Type"].ToString() == "2"
  4758. || dt.Rows[0]["Type"].ToString() == "12" || dt.Rows[0]["Type"].ToString() == "24")//期初条码 成品条码 生产退料条码 销售退货条码 取条码备用字段
  4759. {
  4760. sql = @"SELECT B.BatchCode AS BatchCode,A.ProductDate AS ProductDate,A.EATTRIBUTE3 as EATTRIBUTE3,A.EATTRIBUTE5 AS EATTRIBUTE5
  4761. ,A.EATTRIBUTE6 AS EATTRIBUTE6,A.EATTRIBUTE8 AS EATTRIBUTE8
  4762. from ICSInventoryLot A
  4763. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID
  4764. where A.LotNo = '" + LotNo + "' and A.WorkPoint = '" + WorkPoint + "'";
  4765. }
  4766. else if (dt.Rows[0]["Type"].ToString() == "22")//采购入库(标准收货单)条码 取单据备用字段
  4767. {
  4768. sql = @"select C.ProductDate AS ProductDate,D.BatchCode AS BatchCode,B.EATTRIBUTE3,B.EATTRIBUTE5,B.EATTRIBUTE6,B.EATTRIBUTE8 from ICSInventoryLotDetail A
  4769. LEFT JOIN ICSPurchaseReceive B ON B.RCVCode=A.TransCode AND B.Sequence=A.TransSequence AND B.WorkPoint=A.WorkPoint
  4770. LEFT JOIN ICSInventoryLot C ON C.LotNo=A.LotNo AND C.WorkPoint=A.WorkPoint
  4771. LEFT JOIN ICSExtension D ON D.ID=C.ExtensionID
  4772. WHERE A.LotNo='" + LotNo + "' AND B.WorkPoint='" + WorkPoint + "'";
  4773. }
  4774. else if (dt.Rows[0]["Type"].ToString() == "23")//委外入库(委外收货单)条码 取单据备用字段
  4775. {
  4776. sql = @"select C.ProductDate AS ProductDate,D.BatchCode AS BatchCode,B.EATTRIBUTE3,B.EATTRIBUTE5,B.EATTRIBUTE6,B.EATTRIBUTE8 from ICSInventoryLotDetail A
  4777. LEFT JOIN ICSOutsourcingReceive B ON B.RCVCode=A.TransCode AND B.Sequence=A.TransSequence AND B.WorkPoint=A.WorkPoint
  4778. LEFT JOIN ICSInventoryLot C ON C.LotNo=A.LotNo AND C.WorkPoint=A.WorkPoint
  4779. LEFT JOIN ICSExtension D ON D.ID=C.ExtensionID
  4780. WHERE A.LotNo='" + LotNo + "' AND B.WorkPoint='" + WorkPoint + "'";
  4781. }
  4782. else if (dt.Rows[0]["Type"].ToString() == "3")//成品入库(完工申报单)条码 取单据备用字段
  4783. {
  4784. sql = @"select C.ProductDate AS ProductDate,D.BatchCode AS BatchCode,B.EATTRIBUTE3,B.EATTRIBUTE5,B.EATTRIBUTE6,B.EATTRIBUTE8 from ICSInventoryLotDetail A
  4785. LEFT JOIN ICSMO B ON B.MOCode=A.TransCode AND B.Sequence=A.TransSequence AND B.WorkPoint=A.WorkPoint
  4786. LEFT JOIN ICSInventoryLot C ON C.LotNo=A.LotNo AND C.WorkPoint=A.WorkPoint
  4787. LEFT JOIN ICSExtension D ON D.ID=C.ExtensionID
  4788. WHERE A.LotNo='" + LotNo + "' AND B.WorkPoint='" + WorkPoint + "'";
  4789. }
  4790. else if (dt.Rows[0]["Type"].ToString() == "5")//杂收条码 取单据备用字段
  4791. {
  4792. sql = @"select C.ProductDate AS ProductDate,D.BatchCode AS BatchCode,B.EATTRIBUTE3,B.EATTRIBUTE5,B.EATTRIBUTE6,B.EATTRIBUTE8 from ICSInventoryLotDetail A
  4793. LEFT JOIN ICSOtherIn B ON B.InCode=A.TransCode AND B.Sequence=A.TransSequence AND B.WorkPoint=A.WorkPoint
  4794. LEFT JOIN ICSInventoryLot C ON C.LotNo=A.LotNo AND C.WorkPoint=A.WorkPoint
  4795. LEFT JOIN ICSExtension D ON D.ID=C.ExtensionID
  4796. WHERE A.LotNo='" + LotNo + "' AND B.WorkPoint='" + WorkPoint + "'";
  4797. }
  4798. }
  4799. return Repository().FindTableBySql(sql.ToString());
  4800. }
  4801. catch (Exception ex)
  4802. {
  4803. throw new Exception(ex.Message);
  4804. }
  4805. }
  4806. public DataTable GetSubGridJsonLLSQDByCreate(string ApplyNegCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  4807. {
  4808. DataTable dt = new DataTable();
  4809. object Figure = GetDecimalDigits();
  4810. List<DbParameter> parameter = new List<DbParameter>();
  4811. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn018', " + Quantity + ",1,2,'')";
  4812. object Num = SqlHelper.ExecuteScalar(SeachNum);
  4813. string sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit,
  4814. CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  4815. CAST( a.Amount as DECIMAL(38,{0})) as Amount,
  4816. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  4817. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  4818. CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays , case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  4819. ,e.ProjectCode,e.BatchCode,e.Version,e.Brand,e.cFree1,e.cFree2,e.cFree3,e.cFree4,e.cFree5,e.cFree6,e.cFree7,e.cFree8,e.cFree9,e.cFree10,
  4820. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  4821. from ICSMOApplyNegDetail a
  4822. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  4823. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  4824. left join (
  4825. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  4826. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='12'
  4827. where isnull(a.EATTRIBUTE1,'')=''
  4828. group by b.TransCode,b.TransSequence
  4829. ) c on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence
  4830. left join ICSExtension e on a.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  4831. WHERE d.Type='2' and d.Status='2'
  4832. and a.ApplyNegCode='" + ApplyNegCode + "' and a.Sequence='" + Sequence + "'";
  4833. sql += " and a.WorkPoint='" + WorkPoint + "'";
  4834. sql = string.Format(sql, Figure);
  4835. return Repository().FindTableBySql(sql.ToString());
  4836. }
  4837. //领料申请退料生成条码
  4838. public int SubmitFormLLSQTL(string ApplyNegCode, string Sequence, string keyValue, string WorkPoint)
  4839. {
  4840. var queryParam = keyValue.ToJObject();
  4841. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  4842. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  4843. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  4844. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  4845. decimal LOTQTY = minPackQty;
  4846. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  4847. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  4848. string Pre = "MA" + ApplyNegCode + (Convert.ToInt32(Sequence)).ToString("D4");
  4849. string sql = string.Empty;
  4850. //string VendorLot = queryParam["VendorLot"].ToString();
  4851. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  4852. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  4853. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  4854. string sqls = string.Empty;
  4855. string Colspan = "";
  4856. string str1 = "";
  4857. List<string> ExtensionIDList = new List<string>();
  4858. #region 装箱的功能
  4859. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  4860. string VenCode = queryParam["VenCode"].ToString();
  4861. int PackCount = 0;//每箱放的数量
  4862. int Pack_YuShu = 0;//需要平摊的数量
  4863. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  4864. List<PackModel> List_Pack = new List<PackModel>();
  4865. int ZQty = 0;
  4866. if (createPackCount > 0)
  4867. {
  4868. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  4869. if (Pack_YuShu == 0)
  4870. {
  4871. PackCount = (createPageCount / createPackCount);
  4872. }
  4873. else
  4874. {
  4875. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  4876. }
  4877. for (int jj = 0; jj < createPackCount; jj++)
  4878. {
  4879. object CARID = Guid.NewGuid();
  4880. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  4881. sql += @" INSERT INTO dbo.ICSContainer
  4882. ( ID,ContainerCode ,
  4883. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  4884. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  4885. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  4886. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  4887. PackModel PP = new PackModel();
  4888. PP.ID = CARID.ToString();
  4889. PP.PackCode = Carton;
  4890. if (jj < Pack_YuShu)
  4891. {
  4892. PP.FristBarIndex = ZQty;
  4893. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  4894. }
  4895. else
  4896. {
  4897. PP.FristBarIndex = ZQty;
  4898. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  4899. }
  4900. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  4901. List_Pack.Add(PP);
  4902. }
  4903. }
  4904. #endregion
  4905. for (int i = 0; i < createPageCount; i++)
  4906. {
  4907. if (i + 1 == createPageCount)
  4908. {
  4909. if (minPackQty * createPageCount > thisCreateQty)
  4910. {
  4911. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  4912. }
  4913. }
  4914. 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();
  4915. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  4916. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  4917. bool flag = true;
  4918. foreach (var item in ExtensionIDList)
  4919. {
  4920. if (item == Colspan + WorkPoint)
  4921. {
  4922. flag = false;
  4923. }
  4924. }
  4925. if (ExtensionID == null && flag == true)
  4926. {
  4927. str1 = Guid.NewGuid().ToString();
  4928. 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)
  4929. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  4930. 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(),
  4931. MUSER, MUSERNAME, WorkPoints);
  4932. }
  4933. else if (ExtensionID != null)
  4934. {
  4935. str1 = ExtensionID.ToString();
  4936. }
  4937. ExtensionIDList.Add(Colspan + WorkPoint);
  4938. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  4939. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  4940. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  4941. LotNo, ApplyNegCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  4942. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  4943. //{
  4944. sql += string.Format(@"insert into ICSInventoryLot
  4945. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  4946. select
  4947. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','12','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  4948. from ICSMOApplyNegDetail where ApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  4949. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, ApplyNegCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  4950. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  4951. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  4952. sql += "\r\n";
  4953. //装箱的功能
  4954. if (List_Pack.Count > 0)
  4955. {
  4956. PackModel mm = new PackModel();
  4957. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  4958. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  4959. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  4960. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  4961. }
  4962. //}
  4963. }
  4964. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  4965. return count;
  4966. }
  4967. public int SubmitFormLLSQTLNew(string ApplyNegCode, string Sequence, string keyValue, string WorkPoint)
  4968. {
  4969. var queryParam = keyValue.ToJObject();
  4970. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  4971. decimal minPackQty = 1;
  4972. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  4973. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  4974. List<decimal> lotQtys = new List<decimal>();
  4975. foreach (var jLotno in jLotnos)
  4976. {
  4977. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  4978. lotQtys.Add(qty);
  4979. }
  4980. int createPageCount = lotQtys.Count();
  4981. string Pre = "MA" + ApplyNegCode + (Convert.ToInt32(Sequence)).ToString("D4");
  4982. string sql = string.Empty;
  4983. //string VendorLot = queryParam["VendorLot"].ToString();
  4984. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  4985. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  4986. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  4987. string sqls = string.Empty;
  4988. string Colspan = "";
  4989. string str1 = "";
  4990. List<string> ExtensionIDList = new List<string>();
  4991. #region 装箱的功能
  4992. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  4993. string VenCode = queryParam["VenCode"].ToString();
  4994. int PackCount = 0;//每箱放的数量
  4995. int Pack_YuShu = 0;//需要平摊的数量
  4996. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  4997. List<PackModel> List_Pack = new List<PackModel>();
  4998. int ZQty = 0;
  4999. if (createPackCount > 0)
  5000. {
  5001. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  5002. if (Pack_YuShu == 0)
  5003. {
  5004. PackCount = (createPageCount / createPackCount);
  5005. }
  5006. else
  5007. {
  5008. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  5009. }
  5010. for (int jj = 0; jj < createPackCount; jj++)
  5011. {
  5012. object CARID = Guid.NewGuid();
  5013. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  5014. sql += @" INSERT INTO dbo.ICSContainer
  5015. ( ID,ContainerCode ,
  5016. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  5017. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  5018. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  5019. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  5020. PackModel PP = new PackModel();
  5021. PP.ID = CARID.ToString();
  5022. PP.PackCode = Carton;
  5023. if (jj < Pack_YuShu)
  5024. {
  5025. PP.FristBarIndex = ZQty;
  5026. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  5027. }
  5028. else
  5029. {
  5030. PP.FristBarIndex = ZQty;
  5031. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  5032. }
  5033. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  5034. List_Pack.Add(PP);
  5035. }
  5036. }
  5037. #endregion
  5038. for (int i = 0; i < lotQtys.Count(); i++)
  5039. {
  5040. decimal LOTQTY = lotQtys[i];
  5041. 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();
  5042. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  5043. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  5044. bool flag = true;
  5045. foreach (var item in ExtensionIDList)
  5046. {
  5047. if (item == Colspan + WorkPoint)
  5048. {
  5049. flag = false;
  5050. }
  5051. }
  5052. if (ExtensionID == null && flag == true)
  5053. {
  5054. str1 = Guid.NewGuid().ToString();
  5055. 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)
  5056. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  5057. 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(),
  5058. MUSER, MUSERNAME, WorkPoints);
  5059. }
  5060. else if (ExtensionID != null)
  5061. {
  5062. str1 = ExtensionID.ToString();
  5063. }
  5064. ExtensionIDList.Add(Colspan + WorkPoint);
  5065. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  5066. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  5067. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  5068. LotNo, ApplyNegCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  5069. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  5070. //{
  5071. sql += string.Format(@"insert into ICSInventoryLot
  5072. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  5073. select
  5074. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','12','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  5075. from ICSMOApplyNegDetail where ApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  5076. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, ApplyNegCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  5077. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  5078. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  5079. sql += "\r\n";
  5080. //装箱的功能
  5081. if (List_Pack.Count > 0)
  5082. {
  5083. PackModel mm = new PackModel();
  5084. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  5085. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  5086. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  5087. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  5088. }
  5089. //}
  5090. }
  5091. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  5092. return count;
  5093. }
  5094. //材料出库退料
  5095. public DataTable GetGridJsonCLCK(string queryJson, ref Pagination jqgridparam)
  5096. {
  5097. DataTable dt = new DataTable();
  5098. var queryParam = queryJson.ToJObject();
  5099. List<DbParameter> parameter = new List<DbParameter>();
  5100. object Figure = GetDecimalDigits();
  5101. #region [SQL]
  5102. string sql = @"
  5103. select a.ID,a.ApplyNegCode,a.Sequence,g.IssueCode as SCode,a.SourceDetailID,a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  5104. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity , case when isnull(b.EffectiveEnable,0)='1' then '是' else '否' end as EffectiveEnable
  5105. , CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,6)) as EffectiveDays ,
  5106. CAST(a.Amount AS DECIMAL(38,{0})) as Amount,CAST(a.IssueNegQuantity AS DECIMAL(38,{0})) as IssueNegQuantity ,a.ExtensionID,a.MUSERName,a.MTIME ,
  5107. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  5108. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5109. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10
  5110. from ICSMOApplyNegDetail a
  5111. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  5112. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5113. left join (
  5114. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5115. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='13'
  5116. where isnull(ee.EATTRIBUTE1,'')=''
  5117. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5118. )c
  5119. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  5120. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5121. left join ICSMOIssue g on a.SourceDetailID=g.IssueDetailID and a.WorkPoint=g.WorkPoint
  5122. WHERE d.Type='3' and d.Status='2' ";
  5123. sql = string.Format(sql, Figure);
  5124. #endregion
  5125. if (!string.IsNullOrWhiteSpace(queryJson))
  5126. {
  5127. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  5128. {
  5129. sql += " and a.ApplyNegCode like '%" + queryParam["POCode"].ToString() + "%' ";
  5130. }
  5131. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  5132. {
  5133. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  5134. }
  5135. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  5136. {
  5137. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  5138. }
  5139. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  5140. {
  5141. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  5142. }
  5143. if (!string.IsNullOrWhiteSpace(queryParam["SCode"].ToString()))
  5144. {
  5145. sql += " and g.IssueCode like '%" + queryParam["SCode"].ToString() + "%' ";
  5146. }
  5147. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  5148. {
  5149. string POStatus = queryParam["POStatus"].ToString();
  5150. if (POStatus == "0")
  5151. {
  5152. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  5153. }
  5154. else if (POStatus == "1")
  5155. {
  5156. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  5157. }
  5158. else
  5159. {
  5160. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  5161. }
  5162. }
  5163. }
  5164. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  5165. {
  5166. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  5167. }
  5168. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  5169. {
  5170. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  5171. }
  5172. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  5173. }
  5174. //材料出库退料
  5175. public DataTable GetSubGridJsonCLCKByCreate(string ApplyNegCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  5176. {
  5177. DataTable dt = new DataTable();
  5178. object Figure = GetDecimalDigits();
  5179. List<DbParameter> parameter = new List<DbParameter>();
  5180. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn019', " + Quantity + ",1,2,'')";
  5181. object Num = SqlHelper.ExecuteScalar(SeachNum);
  5182. string sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  5183. CAST( a.Amount as DECIMAL(38,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  5184. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  5185. CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays , case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  5186. ,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,
  5187. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  5188. from ICSMOApplyNegDetail a
  5189. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  5190. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5191. left join (
  5192. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  5193. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='13'
  5194. where isnull(a.EATTRIBUTE1,'')=''
  5195. group by b.TransCode,b.TransSequence
  5196. ) c on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence
  5197. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5198. WHERE d.Type='3' and d.Status='2'
  5199. and a.ApplyNegCode='" + ApplyNegCode + "' and a.Sequence='" + Sequence + "'";
  5200. sql += " and a.WorkPoint='" + WorkPoint + "'";
  5201. sql = string.Format(sql, Figure);
  5202. return Repository().FindTableBySql(sql.ToString());
  5203. }
  5204. //材料出库退料生成条码
  5205. public int SubmitFormCLCKT(string ApplyNegCode, string Sequence, string keyValue, string WorkPoint)
  5206. {
  5207. var queryParam = keyValue.ToJObject();
  5208. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  5209. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  5210. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  5211. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  5212. decimal LOTQTY = minPackQty;
  5213. string Pre = "MD" + ApplyNegCode + (Convert.ToInt32(Sequence)).ToString("D4");
  5214. string sql = string.Empty;
  5215. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  5216. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  5217. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  5218. string sqls = string.Empty;
  5219. string Colspan = "";
  5220. string str1 = "";
  5221. List<string> ExtensionIDList = new List<string>();
  5222. //增加判断逻辑 未审核的单据不允许生成条码 25.3.26
  5223. string checkSql = $"SELECT * from ICSMOApplyNeg WHERE Type=3 and ApplyNegCode='{ApplyNegCode}' AND Status='2'";
  5224. var checkdt = SqlHelper.CmdExecuteDataTable(checkSql);
  5225. if (checkdt.Rows.Count <= 0)
  5226. {
  5227. return 0;
  5228. }
  5229. #region 装箱的功能
  5230. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  5231. string VenCode = queryParam["VenCode"].ToString();
  5232. int PackCount = 0;//每箱放的数量
  5233. int Pack_YuShu = 0;//需要平摊的数量
  5234. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  5235. List<PackModel> List_Pack = new List<PackModel>();
  5236. int ZQty = 0;
  5237. if (createPackCount > 0)
  5238. {
  5239. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  5240. if (Pack_YuShu == 0)
  5241. {
  5242. PackCount = (createPageCount / createPackCount);
  5243. }
  5244. else
  5245. {
  5246. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  5247. }
  5248. for (int jj = 0; jj < createPackCount; jj++)
  5249. {
  5250. object CARID = Guid.NewGuid();
  5251. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  5252. sql += @" INSERT INTO dbo.ICSContainer
  5253. ( ID,ContainerCode ,
  5254. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  5255. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  5256. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  5257. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  5258. PackModel PP = new PackModel();
  5259. PP.ID = CARID.ToString();
  5260. PP.PackCode = Carton;
  5261. if (jj < Pack_YuShu)
  5262. {
  5263. PP.FristBarIndex = ZQty;
  5264. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  5265. }
  5266. else
  5267. {
  5268. PP.FristBarIndex = ZQty;
  5269. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  5270. }
  5271. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  5272. List_Pack.Add(PP);
  5273. }
  5274. }
  5275. #endregion
  5276. for (int i = 0; i < createPageCount; i++)
  5277. {
  5278. if (i + 1 == createPageCount)
  5279. {
  5280. if (minPackQty * createPageCount > thisCreateQty)
  5281. {
  5282. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  5283. }
  5284. }
  5285. 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();
  5286. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  5287. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  5288. bool flag = true;
  5289. foreach (var item in ExtensionIDList)
  5290. {
  5291. if (item == Colspan + WorkPoint)
  5292. {
  5293. flag = false;
  5294. }
  5295. }
  5296. if (ExtensionID == null && flag == true)
  5297. {
  5298. str1 = Guid.NewGuid().ToString();
  5299. 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)
  5300. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  5301. 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(),
  5302. MUSER, MUSERNAME, WorkPoints);
  5303. }
  5304. else if (ExtensionID != null)
  5305. {
  5306. str1 = ExtensionID.ToString();
  5307. }
  5308. ExtensionIDList.Add(Colspan + WorkPoint);
  5309. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  5310. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  5311. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  5312. LotNo, ApplyNegCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  5313. sql += string.Format(@"insert into ICSInventoryLot
  5314. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  5315. select
  5316. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','13','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  5317. from ICSMOApplyNegDetail where ApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  5318. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, ApplyNegCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  5319. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  5320. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  5321. sql += "\r\n";
  5322. //装箱的功能
  5323. if (List_Pack.Count > 0)
  5324. {
  5325. PackModel mm = new PackModel();
  5326. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  5327. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  5328. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  5329. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  5330. }
  5331. }
  5332. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  5333. return count;
  5334. }
  5335. public DataTable GetGridJsonWWLLTL(string queryJson, ref Pagination jqgridparam)
  5336. {
  5337. DataTable dt = new DataTable();
  5338. var queryParam = queryJson.ToJObject();
  5339. List<DbParameter> parameter = new List<DbParameter>();
  5340. object Figure = GetDecimalDigits();
  5341. #region [SQL]
  5342. string sql = @"select a.ID,a.OApplyNegCode,a.Sequence,a.SourceDetailID,a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  5343. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount,CAST(a.IssueNegQuantity AS DECIMAL(38,{0})) as IssueNegQuantity ,
  5344. a.ExtensionID,a.MUSERName,a.MTIME ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  5345. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5346. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  5347. a.EATTRIBUTE9,a.EATTRIBUTE10
  5348. from ICSOApplyNegDetail a
  5349. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  5350. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5351. left join (
  5352. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5353. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='14'
  5354. where isnull(ee.EATTRIBUTE1,'')=''
  5355. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5356. )c
  5357. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  5358. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5359. WHERE d.Type='2'";
  5360. sql = string.Format(sql, Figure);
  5361. #endregion
  5362. if (!string.IsNullOrWhiteSpace(queryJson))
  5363. {
  5364. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  5365. {
  5366. sql += " and a.OApplyNegCode like '%" + queryParam["POCode"].ToString() + "%' ";
  5367. }
  5368. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  5369. {
  5370. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  5371. }
  5372. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  5373. {
  5374. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  5375. }
  5376. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  5377. {
  5378. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  5379. }
  5380. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  5381. {
  5382. string POStatus = queryParam["POStatus"].ToString();
  5383. if (POStatus == "0")
  5384. {
  5385. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  5386. }
  5387. else if (POStatus == "1")
  5388. {
  5389. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  5390. }
  5391. else
  5392. {
  5393. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  5394. }
  5395. }
  5396. }
  5397. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  5398. {
  5399. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  5400. }
  5401. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  5402. {
  5403. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  5404. }
  5405. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  5406. }
  5407. /// <summary>
  5408. /// 点击委外领料退料生成条码
  5409. /// </summary>
  5410. public DataTable GetSubGridJsonWWLLByCreate(string OApplyNegCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  5411. {
  5412. DataTable dt = new DataTable();
  5413. object Figure = GetDecimalDigits();
  5414. List<DbParameter> parameter = new List<DbParameter>();
  5415. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn009', " + Quantity + ",1,1,'')";
  5416. object Num = SqlHelper.ExecuteScalar(SeachNum);
  5417. string sql = @"
  5418. select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,CAST( a.Amount as DECIMAL(38,{0})) as Amount,
  5419. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  5420. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  5421. CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays , case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  5422. ,e.ProjectCode,e.BatchCode,e.Version,e.Brand,e.cFree1,e.cFree2,e.cFree3,e.cFree4,e.cFree5,e.cFree6,e.cFree7,e.cFree8,e.cFree9,e.cFree10,
  5423. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  5424. from ICSOApplyNegDetail a
  5425. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  5426. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5427. left join (
  5428. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  5429. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='14'
  5430. where isnull(a.EATTRIBUTE1,'')=''
  5431. group by b.TransCode,b.TransSequence
  5432. ) c on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence
  5433. left join ICSExtension e on a.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  5434. WHERE d.Type='2'
  5435. and a.OApplyNegCode='" + OApplyNegCode + "' and a.Sequence='" + Sequence + "'";
  5436. sql += " and a.WorkPoint='" + WorkPoint + "'";
  5437. sql = string.Format(sql, Figure);
  5438. return Repository().FindTableBySql(sql.ToString());
  5439. }
  5440. //委外领料申请退料
  5441. public int SubmitFormWWLL(string OApplyNegCode, string Sequence, string keyValue, string WorkPoint)
  5442. {
  5443. var queryParam = keyValue.ToJObject();
  5444. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  5445. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  5446. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  5447. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  5448. decimal LOTQTY = minPackQty;
  5449. string Pre = "OMA" + OApplyNegCode + (Convert.ToInt32(Sequence)).ToString("D4");
  5450. string sql = string.Empty;
  5451. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  5452. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  5453. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  5454. string sqls = string.Empty;
  5455. string Colspan = "";
  5456. string str1 = "";
  5457. List<string> ExtensionIDList = new List<string>();
  5458. #region 装箱的功能
  5459. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  5460. string VenCode = queryParam["VenCode"].ToString();
  5461. int PackCount = 0;//每箱放的数量
  5462. int Pack_YuShu = 0;//需要平摊的数量
  5463. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  5464. List<PackModel> List_Pack = new List<PackModel>();
  5465. int ZQty = 0;
  5466. if (createPackCount > 0)
  5467. {
  5468. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  5469. if (Pack_YuShu == 0)
  5470. {
  5471. PackCount = (createPageCount / createPackCount);
  5472. }
  5473. else
  5474. {
  5475. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  5476. }
  5477. for (int jj = 0; jj < createPackCount; jj++)
  5478. {
  5479. object CARID = Guid.NewGuid();
  5480. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  5481. sql += @" INSERT INTO dbo.ICSContainer
  5482. ( ID,ContainerCode ,
  5483. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  5484. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  5485. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  5486. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  5487. PackModel PP = new PackModel();
  5488. PP.ID = CARID.ToString();
  5489. PP.PackCode = Carton;
  5490. if (jj < Pack_YuShu)
  5491. {
  5492. PP.FristBarIndex = ZQty;
  5493. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  5494. }
  5495. else
  5496. {
  5497. PP.FristBarIndex = ZQty;
  5498. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  5499. }
  5500. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  5501. List_Pack.Add(PP);
  5502. }
  5503. }
  5504. #endregion
  5505. for (int i = 0; i < createPageCount; i++)
  5506. {
  5507. if (i + 1 == createPageCount)
  5508. {
  5509. if (minPackQty * createPageCount > thisCreateQty)
  5510. {
  5511. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  5512. }
  5513. }
  5514. 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();
  5515. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  5516. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  5517. bool flag = true;
  5518. foreach (var item in ExtensionIDList)
  5519. {
  5520. if (item == Colspan + WorkPoint)
  5521. {
  5522. flag = false;
  5523. }
  5524. }
  5525. if (ExtensionID == null && flag == true)
  5526. {
  5527. str1 = Guid.NewGuid().ToString();
  5528. 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)
  5529. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  5530. 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(),
  5531. MUSER, MUSERNAME, WorkPoints);
  5532. }
  5533. else if (ExtensionID != null)
  5534. {
  5535. str1 = ExtensionID.ToString();
  5536. }
  5537. ExtensionIDList.Add(Colspan + WorkPoint);
  5538. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  5539. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  5540. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  5541. LotNo, OApplyNegCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  5542. sql += string.Format(@"insert into ICSInventoryLot
  5543. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  5544. select
  5545. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','14','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  5546. from ICSOApplyNegDetail where OApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  5547. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, OApplyNegCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  5548. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  5549. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  5550. sql += "\r\n";
  5551. //装箱的功能
  5552. if (List_Pack.Count > 0)
  5553. {
  5554. PackModel mm = new PackModel();
  5555. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  5556. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  5557. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  5558. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  5559. }
  5560. }
  5561. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  5562. return count;
  5563. }
  5564. //委外材料出库
  5565. public DataTable GetGridJsonWWCLCK(string queryJson, ref Pagination jqgridparam)
  5566. {
  5567. DataTable dt = new DataTable();
  5568. var queryParam = queryJson.ToJObject();
  5569. List<DbParameter> parameter = new List<DbParameter>();
  5570. object Figure = GetDecimalDigits();
  5571. #region [SQL]
  5572. string sql = @"select a.ID,a.OApplyNegCode,a.Sequence,a.SourceDetailID,a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  5573. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount,CAST(a.IssueNegQuantity AS DECIMAL(38,{0})) as IssueNegQuantity ,
  5574. a.ExtensionID,a.MUSERName,a.MTIME ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  5575. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5576. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  5577. a.EATTRIBUTE9,a.EATTRIBUTE10
  5578. from ICSOApplyNegDetail a
  5579. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  5580. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5581. left join (
  5582. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5583. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='15'
  5584. where isnull(ee.EATTRIBUTE1,'')=''
  5585. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5586. )c
  5587. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  5588. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5589. WHERE d.Type='3'";
  5590. sql = string.Format(sql, Figure);
  5591. #endregion
  5592. if (!string.IsNullOrWhiteSpace(queryJson))
  5593. {
  5594. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  5595. {
  5596. sql += " and a.OApplyNegCode like '%" + queryParam["POCode"].ToString() + "%' ";
  5597. }
  5598. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  5599. {
  5600. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  5601. }
  5602. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  5603. {
  5604. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  5605. }
  5606. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  5607. {
  5608. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  5609. }
  5610. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  5611. {
  5612. string POStatus = queryParam["POStatus"].ToString();
  5613. if (POStatus == "0")
  5614. {
  5615. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  5616. }
  5617. else if (POStatus == "1")
  5618. {
  5619. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  5620. }
  5621. else
  5622. {
  5623. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  5624. }
  5625. }
  5626. }
  5627. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  5628. {
  5629. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  5630. }
  5631. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  5632. {
  5633. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  5634. }
  5635. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  5636. }
  5637. //委外材料出库
  5638. public DataTable GetSubGridJsonWWCLByCreate(string OApplyNegCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  5639. {
  5640. DataTable dt = new DataTable();
  5641. object Figure = GetDecimalDigits();
  5642. List<DbParameter> parameter = new List<DbParameter>();
  5643. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn010', " + Quantity + ",1,1,'')";
  5644. object Num = SqlHelper.ExecuteScalar(SeachNum);
  5645. string sql = @"
  5646. select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,CAST( a.Amount as DECIMAL(38,{0})) as Amount,
  5647. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  5648. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  5649. CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays , case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  5650. ,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,
  5651. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  5652. from ICSOApplyNegDetail a
  5653. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  5654. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5655. left join (
  5656. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  5657. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='15'
  5658. where isnull(a.EATTRIBUTE1,'')=''
  5659. group by b.TransCode,b.TransSequence
  5660. ) c on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence
  5661. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5662. WHERE d.Type='3'
  5663. and a.OApplyNegCode='" + OApplyNegCode + "' and a.Sequence='" + Sequence + "'";
  5664. sql += " and a.WorkPoint='" + WorkPoint + "'";
  5665. sql = string.Format(sql, Figure);
  5666. return Repository().FindTableBySql(sql.ToString());
  5667. }
  5668. //委外材料出库
  5669. public int SubmitFormWWCL(string OApplyNegCode, string Sequence, string keyValue, string WorkPoint)
  5670. {
  5671. var queryParam = keyValue.ToJObject();
  5672. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  5673. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  5674. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  5675. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  5676. decimal LOTQTY = minPackQty;
  5677. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  5678. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  5679. string Pre = "OMD" + OApplyNegCode + (Convert.ToInt32(Sequence)).ToString("D4");
  5680. string sql = string.Empty;
  5681. //string VendorLot = queryParam["VendorLot"].ToString();
  5682. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  5683. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  5684. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  5685. string sqls = string.Empty;
  5686. string Colspan = "";
  5687. string str1 = "";
  5688. List<string> ExtensionIDList = new List<string>();
  5689. #region 装箱的功能
  5690. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  5691. string VenCode = queryParam["VenCode"].ToString();
  5692. int PackCount = 0;//每箱放的数量
  5693. int Pack_YuShu = 0;//需要平摊的数量
  5694. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  5695. List<PackModel> List_Pack = new List<PackModel>();
  5696. int ZQty = 0;
  5697. if (createPackCount > 0)
  5698. {
  5699. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  5700. if (Pack_YuShu == 0)
  5701. {
  5702. PackCount = (createPageCount / createPackCount);
  5703. }
  5704. else
  5705. {
  5706. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  5707. }
  5708. for (int jj = 0; jj < createPackCount; jj++)
  5709. {
  5710. object CARID = Guid.NewGuid();
  5711. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  5712. sql += @" INSERT INTO dbo.ICSContainer
  5713. ( ID,ContainerCode ,
  5714. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  5715. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  5716. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  5717. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  5718. PackModel PP = new PackModel();
  5719. PP.ID = CARID.ToString();
  5720. PP.PackCode = Carton;
  5721. if (jj < Pack_YuShu)
  5722. {
  5723. PP.FristBarIndex = ZQty;
  5724. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  5725. }
  5726. else
  5727. {
  5728. PP.FristBarIndex = ZQty;
  5729. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  5730. }
  5731. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  5732. List_Pack.Add(PP);
  5733. }
  5734. }
  5735. #endregion
  5736. for (int i = 0; i < createPageCount; i++)
  5737. {
  5738. if (i + 1 == createPageCount)
  5739. {
  5740. if (minPackQty * createPageCount > thisCreateQty)
  5741. {
  5742. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  5743. }
  5744. }
  5745. 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();
  5746. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  5747. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  5748. bool flag = true;
  5749. foreach (var item in ExtensionIDList)
  5750. {
  5751. if (item == Colspan + WorkPoint)
  5752. {
  5753. flag = false;
  5754. }
  5755. }
  5756. if (ExtensionID == null && flag == true)
  5757. {
  5758. str1 = Guid.NewGuid().ToString();
  5759. 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)
  5760. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  5761. 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(),
  5762. MUSER, MUSERNAME, WorkPoints);
  5763. }
  5764. else if (ExtensionID != null)
  5765. {
  5766. str1 = ExtensionID.ToString();
  5767. }
  5768. ExtensionIDList.Add(Colspan + WorkPoint);
  5769. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  5770. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  5771. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  5772. LotNo, OApplyNegCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  5773. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  5774. //{
  5775. sql += string.Format(@"insert into ICSInventoryLot
  5776. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  5777. select
  5778. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','15','{3}','{4}', getdate(),'{5}','{9}'
  5779. ,'{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  5780. from ICSOApplyNegDetail where OApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  5781. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, OApplyNegCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  5782. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  5783. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  5784. sql += "\r\n";
  5785. //装箱的功能
  5786. if (List_Pack.Count > 0)
  5787. {
  5788. PackModel mm = new PackModel();
  5789. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  5790. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  5791. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  5792. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  5793. }
  5794. //}
  5795. }
  5796. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  5797. return count;
  5798. }
  5799. public DataTable SelectICSExtensionEnable()
  5800. {
  5801. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  5802. string sql = @"select ColCode from ICSExtensionEnable
  5803. where Enable=0 and WorkPoint='" + WorkPoints + "' order by cast(EATTRIBUTE1 as int)";
  5804. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  5805. return dt;
  5806. }
  5807. public DataTable GetComplete()
  5808. {
  5809. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  5810. string sql = @"select Enable from ICSConfiguration where Code='CompleteVerification001' and WorkPoint='" + WorkPoints + "'";
  5811. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  5812. return dt;
  5813. }
  5814. public DataTable GetWWComplete()
  5815. {
  5816. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  5817. string sql = @"select Enable from ICSConfiguration where Code='CompleteVerification004' and WorkPoint='" + WorkPoints + "'";
  5818. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  5819. return dt;
  5820. }
  5821. //返工工单
  5822. public DataTable GetGridJsonFGGD(string queryJson, ref Pagination jqgridparam)
  5823. {
  5824. DataTable dt = new DataTable();
  5825. var queryParam = queryJson.ToJObject();
  5826. List<DbParameter> parameter = new List<DbParameter>();
  5827. object Figure = GetDecimalDigits();
  5828. #region [SQL]
  5829. string sql = @"select a.ID,d.MOCode,d.Sequence+'~'+ a.Sequence as Sequence,a.PickID,a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  5830. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity ,
  5831. CAST(a.Amount AS DECIMAL(38,{0})) as Amount,CAST(a.IssueQuantity AS DECIMAL(38,{0})) as IssueQuantity ,a.ExtensionID,a.MUSERName,a.MTIME ,
  5832. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  5833. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5834. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  5835. a.EATTRIBUTE9,a.EATTRIBUTE10
  5836. from ICSMOPick a
  5837. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  5838. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5839. left join (
  5840. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5841. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='16'
  5842. where isnull(ee.EATTRIBUTE1,'')=''
  5843. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5844. )c
  5845. on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  5846. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5847. where a.EATTRIBUTE1='1' and d.EATTRIBUTE1='1'";
  5848. sql = string.Format(sql, Figure);
  5849. #endregion
  5850. if (!string.IsNullOrWhiteSpace(queryJson))
  5851. {
  5852. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  5853. {
  5854. sql += " and d.MOCode like '%" + queryParam["POCode"].ToString() + "%' ";
  5855. }
  5856. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  5857. {
  5858. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  5859. }
  5860. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  5861. {
  5862. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  5863. }
  5864. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  5865. {
  5866. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  5867. }
  5868. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  5869. {
  5870. string POStatus = queryParam["POStatus"].ToString();
  5871. if (POStatus == "0")
  5872. {
  5873. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  5874. }
  5875. else if (POStatus == "1")
  5876. {
  5877. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  5878. }
  5879. else
  5880. {
  5881. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  5882. }
  5883. }
  5884. }
  5885. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  5886. {
  5887. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  5888. }
  5889. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  5890. {
  5891. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  5892. }
  5893. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  5894. }
  5895. public DataTable GetSubGridJsonFGGDCreate(string FGGDMOCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  5896. {
  5897. DataTable dt = new DataTable();
  5898. object Figure = GetDecimalDigits();
  5899. List<DbParameter> parameter = new List<DbParameter>();
  5900. // string sql = @"
  5901. //select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, CAST( a.Quantity AS DECIMAL(18,{0})) as Quantity,CAST( a.Amount as DECIMAL(18,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(18,{0})) as CreatedQty,
  5902. //CAST( (a.Quantity-ISNULL(c.LOTQTY,0)) as DECIMAL(18,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(18,{0})) as EffectiveDays
  5903. //,e.ProjectCode,e.BatchCode,e.Version,e.Brand,e.cFree1,e.cFree2,e.cFree3,e.cFree4,e.cFree5,e.cFree6,e.cFree7,e.cFree8,e.cFree9,e.cFree10
  5904. // from ICSMOPick a
  5905. // left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  5906. // left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5907. // left join (
  5908. // select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  5909. // left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='16'
  5910. //where isnull(a.EATTRIBUTE1,'')=''
  5911. // group by b.TransCode,b.TransSequence
  5912. // ) c on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence
  5913. // left join ICSExtension e on d.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  5914. // WHERE 1=1
  5915. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn015', " + Quantity + ",1,2,'')";
  5916. object Num = SqlHelper.ExecuteScalar(SeachNum);
  5917. string sql = @"
  5918. select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,CAST( a.Amount as DECIMAL(38,{0})) as Amount,
  5919. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  5920. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  5921. CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays , case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  5922. ,e.ProjectCode,e.BatchCode,e.Version,e.Brand,e.cFree1,e.cFree2,e.cFree3,e.cFree4,e.cFree5,e.cFree6,e.cFree7,e.cFree8,e.cFree9,e.cFree10,
  5923. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  5924. from ICSMOPick a
  5925. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  5926. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5927. left join (
  5928. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  5929. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='16'
  5930. where isnull(a.EATTRIBUTE1,'')=''
  5931. group by b.TransCode,b.TransSequence
  5932. ) c on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence
  5933. left join ICSExtension e on d.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  5934. WHERE 1=1
  5935. and d.MOCode='" + FGGDMOCode + "' and d.Sequence+'~'+a.Sequence='" + Sequence + "'";
  5936. sql += " and a.WorkPoint='" + WorkPoint + "'";
  5937. sql = string.Format(sql, Figure);
  5938. return Repository().FindTableBySql(sql.ToString());
  5939. }
  5940. //返工工单
  5941. public int SubmitFormFGGD(string FGGDMOCode, string Sequence, string keyValue, string WorkPoint)
  5942. {
  5943. var queryParam = keyValue.ToJObject();
  5944. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  5945. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  5946. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  5947. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  5948. decimal LOTQTY = minPackQty;
  5949. Sequence = Sequence.Replace("~", "");
  5950. string Pre = "FG" + FGGDMOCode + (Convert.ToInt32(Sequence)).ToString("D4");
  5951. string sql = string.Empty;
  5952. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  5953. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  5954. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  5955. string sqls = string.Empty;
  5956. string Colspan = "";
  5957. string str1 = "";
  5958. List<string> ExtensionIDList = new List<string>();
  5959. #region 装箱的功能
  5960. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  5961. string VenCode = queryParam["VenCode"].ToString();
  5962. int PackCount = 0;//每箱放的数量
  5963. int Pack_YuShu = 0;//需要平摊的数量
  5964. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  5965. List<PackModel> List_Pack = new List<PackModel>();
  5966. int ZQty = 0;
  5967. if (createPackCount > 0)
  5968. {
  5969. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  5970. if (Pack_YuShu == 0)
  5971. {
  5972. PackCount = (createPageCount / createPackCount);
  5973. }
  5974. else
  5975. {
  5976. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  5977. }
  5978. for (int jj = 0; jj < createPackCount; jj++)
  5979. {
  5980. object CARID = Guid.NewGuid();
  5981. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  5982. sql += @" INSERT INTO dbo.ICSContainer
  5983. ( ID,ContainerCode ,
  5984. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  5985. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  5986. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  5987. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  5988. PackModel PP = new PackModel();
  5989. PP.ID = CARID.ToString();
  5990. PP.PackCode = Carton;
  5991. if (jj < Pack_YuShu)
  5992. {
  5993. PP.FristBarIndex = ZQty;
  5994. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  5995. }
  5996. else
  5997. {
  5998. PP.FristBarIndex = ZQty;
  5999. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  6000. }
  6001. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  6002. List_Pack.Add(PP);
  6003. }
  6004. }
  6005. #endregion
  6006. for (int i = 0; i < createPageCount; i++)
  6007. {
  6008. if (i + 1 == createPageCount)
  6009. {
  6010. if (minPackQty * createPageCount > thisCreateQty)
  6011. {
  6012. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  6013. }
  6014. }
  6015. 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();
  6016. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  6017. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  6018. bool flag = true;
  6019. foreach (var item in ExtensionIDList)
  6020. {
  6021. if (item == Colspan + WorkPoint)
  6022. {
  6023. flag = false;
  6024. }
  6025. }
  6026. if (ExtensionID == null && flag == true)
  6027. {
  6028. str1 = Guid.NewGuid().ToString();
  6029. 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)
  6030. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  6031. 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(),
  6032. MUSER, MUSERNAME, WorkPoints);
  6033. }
  6034. else if (ExtensionID != null)
  6035. {
  6036. str1 = ExtensionID.ToString();
  6037. }
  6038. ExtensionIDList.Add(Colspan + WorkPoint);
  6039. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  6040. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  6041. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  6042. LotNo, FGGDMOCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  6043. sql += string.Format(@"insert into ICSInventoryLot
  6044. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  6045. select
  6046. newid(),'{0}',a.InvCode,'{1}','{10}','{2}','{8}','16','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  6047. from ICSMOPick a left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint where d.MOCode='{6}' and d.Sequence+'~'+a.Sequence='{7}' and a.WorkPoint='{5}' ",
  6048. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, FGGDMOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  6049. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  6050. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  6051. sql += "\r\n";
  6052. //装箱的功能
  6053. if (List_Pack.Count > 0)
  6054. {
  6055. PackModel mm = new PackModel();
  6056. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  6057. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  6058. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  6059. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  6060. }
  6061. }
  6062. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  6063. return count;
  6064. }
  6065. /// <summary>
  6066. /// 锐腾获取单据信息
  6067. /// </summary>
  6068. /// <param name="FGGDMOCode"></param>
  6069. /// <param name="Sequence"></param>
  6070. /// <param name="WorkPoint"></param>
  6071. /// <returns></returns>
  6072. public DataTable GetSubGridJsonTransferByCreate(string TransferNO, string Sequence, string WorkPoint, string Quantity, string InvCode)
  6073. {
  6074. try
  6075. {
  6076. DataTable dt = new DataTable();
  6077. object Figure = GetDecimalDigits();
  6078. List<DbParameter> parameter = new List<DbParameter>();
  6079. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn025', " + Quantity + ",1,2,'')";
  6080. object Num = SqlHelper.ExecuteScalar(SeachNum);
  6081. string sql = $@"SELECT a.InvCode,a.Quantity, b.InvName, b.ClassCode, b.InvStd, b.InvUnit, CAST ( " + Num + @" AS DECIMAL ( 38,{0} )) AS Amount, CAST ( isnull( c.LOTQTY, 0 ) AS DECIMAL ( 38,{0} ) ) AS CreatedQty, CAST ( ( " + Num + $@"- ISNULL( c.LOTQTY, 0 ) ) AS DECIMAL ( 38,{0} ) ) AS thisCreateQty, isnull( b.EffectiveEnable, 0 ) AS EffectiveEnable, CAST ( isnull( b.EffectiveDays, 0 ) AS DECIMAL ( 38,{0} ) ) AS EffectiveDays, e.ProjectCode, e.BatchCode, e.Version, e.Brand, e.cFree1, e.cFree2, e.cFree3, e.cFree4, e.cFree5, e.cFree6, e.cFree7, e.cFree8, e.cFree9, e.cFree10 ,
  6082. case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  6083. ,
  6084. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  6085. FROM
  6086. ICSTransfer a
  6087. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode AND a.WorkPoint= b.WorkPoint
  6088. LEFT JOIN (
  6089. SELECT
  6090. b.TransCode,
  6091. b.TransSequence,
  6092. SUM ( isnull( Quantity, 0 ) ) LOTQTY
  6093. FROM
  6094. ICSInventoryLot a
  6095. LEFT JOIN ICSInventoryLotDetail b ON a.LotNo= b.LotNo
  6096. AND a.Type= '19'
  6097. WHERE
  6098. isnull( a.EATTRIBUTE1, '' ) = ''
  6099. GROUP BY
  6100. b.TransCode,
  6101. b.TransSequence
  6102. ) c ON a.TransferNO= c.TransCode
  6103. AND a.Sequence= c.TransSequence
  6104. LEFT JOIN ICSExtension e ON a.ExtensionID= e.ID
  6105. AND a.WorkPoint= e.WorkPoint
  6106. WHERE
  6107. 1 = 1
  6108. and a.TransferNO='{1}' and a.Sequence='{2}'
  6109. and a.WorkPoint='{3}'";
  6110. sql = string.Format(sql, Figure, TransferNO, Sequence, WorkPoint);
  6111. return Repository().FindTableBySql(sql.ToString());
  6112. }
  6113. catch (Exception ex)
  6114. {
  6115. throw new Exception(ex.Message.ToString());
  6116. }
  6117. }
  6118. /// <summary>
  6119. /// 锐腾两步调入单生成条码
  6120. /// </summary>
  6121. /// <param name="TransferNO"></param>
  6122. /// <param name="Sequence"></param>
  6123. /// <param name="keyValue"></param>
  6124. /// <param name="WorkPoint"></param>
  6125. /// <returns></returns>
  6126. public int SubmitFormTransfer(string TransferNO, string Sequence, string keyValue, string WorkPoint)
  6127. {
  6128. var queryParam = keyValue.ToJObject();
  6129. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  6130. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  6131. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  6132. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  6133. decimal LOTQTY = minPackQty;
  6134. Sequence = Sequence.Replace("~", "");
  6135. string Pre = "Tra" + TransferNO + (Convert.ToInt32(Sequence)).ToString("D4");
  6136. string sql = string.Empty;
  6137. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  6138. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  6139. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  6140. string sqls = string.Empty;
  6141. string Colspan = "";
  6142. string str1 = "";
  6143. List<string> ExtensionIDList = new List<string>();
  6144. #region 装箱的功能
  6145. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  6146. string VenCode = queryParam["VenCode"].ToString();
  6147. int PackCount = 0;//每箱放的数量
  6148. int Pack_YuShu = 0;//需要平摊的数量
  6149. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  6150. List<PackModel> List_Pack = new List<PackModel>();
  6151. int ZQty = 0;
  6152. if (createPackCount > 0)
  6153. {
  6154. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  6155. if (Pack_YuShu == 0)
  6156. {
  6157. PackCount = (createPageCount / createPackCount);
  6158. }
  6159. else
  6160. {
  6161. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  6162. }
  6163. for (int jj = 0; jj < createPackCount; jj++)
  6164. {
  6165. object CARID = Guid.NewGuid();
  6166. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  6167. sql += @" INSERT INTO dbo.ICSContainer
  6168. ( ID,ContainerCode ,
  6169. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  6170. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  6171. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  6172. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  6173. PackModel PP = new PackModel();
  6174. PP.ID = CARID.ToString();
  6175. PP.PackCode = Carton;
  6176. if (jj < Pack_YuShu)
  6177. {
  6178. PP.FristBarIndex = ZQty;
  6179. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  6180. }
  6181. else
  6182. {
  6183. PP.FristBarIndex = ZQty;
  6184. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  6185. }
  6186. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  6187. List_Pack.Add(PP);
  6188. }
  6189. }
  6190. #endregion
  6191. for (int i = 0; i < createPageCount; i++)
  6192. {
  6193. if (i + 1 == createPageCount)
  6194. {
  6195. if (minPackQty * createPageCount > thisCreateQty)
  6196. {
  6197. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  6198. }
  6199. }
  6200. 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();
  6201. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  6202. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  6203. bool flag = true;
  6204. foreach (var item in ExtensionIDList)
  6205. {
  6206. if (item == Colspan + WorkPoint)
  6207. {
  6208. flag = false;
  6209. }
  6210. }
  6211. if (ExtensionID == null && flag == true)
  6212. {
  6213. str1 = Guid.NewGuid().ToString();
  6214. 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)
  6215. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  6216. 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(),
  6217. MUSER, MUSERNAME, WorkPoints);
  6218. }
  6219. else if (ExtensionID != null)
  6220. {
  6221. str1 = ExtensionID.ToString();
  6222. }
  6223. ExtensionIDList.Add(Colspan + WorkPoint);
  6224. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  6225. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  6226. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  6227. LotNo, TransferNO, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  6228. sql += string.Format(@"insert into ICSInventoryLot
  6229. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  6230. select
  6231. newid(),'{0}',a.InvCode,'{1}','{10}','{2}','{8}','20','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  6232. from ICSTransfer a where a.TransferNO='{6}' and a.Sequence='{7}' and a.WorkPoint='{5}' ",
  6233. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, TransferNO, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  6234. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  6235. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  6236. sql += "\r\n";
  6237. //装箱的功能
  6238. if (List_Pack.Count > 0)
  6239. {
  6240. PackModel mm = new PackModel();
  6241. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  6242. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  6243. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  6244. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  6245. }
  6246. }
  6247. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  6248. return count;
  6249. }
  6250. public object GetDecimalDigits()
  6251. {
  6252. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  6253. try
  6254. {
  6255. string sql = string.Empty;
  6256. sql = @"select Figure from ICSConfiguration where Code='Figure001' and Enable='1' and WorkPoint='" + WorkPoint + "'";
  6257. object Figure = SqlHelper.ExecuteScalar(sql);
  6258. return Figure;
  6259. }
  6260. catch (Exception ex)
  6261. {
  6262. throw new Exception(ex.Message.ToString());
  6263. }
  6264. }
  6265. /// <summary>
  6266. /// 生成条码导出
  6267. /// </summary>
  6268. /// <param name="ProductBrand"></param>
  6269. /// <param name="cCusName"></param>
  6270. /// <param name="DesignAddRate"></param>
  6271. /// <returns></returns>
  6272. public DataTable StatementExportAll(string Type, string ID)
  6273. {
  6274. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  6275. string sql = string.Empty;
  6276. object Figure = GetDecimalDigits();
  6277. string TableCode = string.Empty;
  6278. #region sql语句
  6279. if (Type == "1") //生产退料
  6280. {
  6281. sql = @"select a.ApplyNegCode as 退料单号,a.Sequence as 退料单行号,a.InvCode as 料品编码,b.InvName as 料品名称,b.InvStd as 规格型号,b.InvUnit as 单位, CAST(a.Quantity AS DECIMAL(38,{0})) as 数量
  6282. ,CAST(a.Amount AS DECIMAL(38,{0})) as , CAST(a.IssueNegQuantity AS DECIMAL(38,{0})) as 退 ,a.MUSERName as ,a.MTIME as , CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6283. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6284. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6285. a.EATTRIBUTE9,a.EATTRIBUTE10
  6286. from ICSMOApplyNegDetail a
  6287. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  6288. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6289. left join (
  6290. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6291. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='1'
  6292. where isnull(ee.EATTRIBUTE1,'')=''
  6293. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6294. )c
  6295. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6296. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6297. where d.Type='1' and d.Status='2' and a.ID in (" + ID.TrimEnd(',') + ")";
  6298. TableCode = "ICSMOApplyNegDetail";
  6299. }
  6300. if (Type == "2") //委外退料
  6301. {
  6302. sql = @"select a.OApplyNegCode as 退料单号,a.Sequence as 退料单行号,a.InvCode as 料品编码,b.InvName as 料品名称,b.InvStd as 规格型号,b.InvUnit as 单位, CAST(a.Quantity AS DECIMAL(38,{0})) as 数量
  6303. ,CAST(a.Amount AS DECIMAL(38,{0})) as , CAST(a.IssueNegQuantity AS DECIMAL(38,{0})) as 退 ,a.MUSERName as ,a.MTIME as , CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6304. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6305. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6306. a.EATTRIBUTE9,a.EATTRIBUTE10
  6307. from ICSOApplyNegDetail a
  6308. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  6309. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6310. left join (
  6311. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6312. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='2'
  6313. where isnull(ee.EATTRIBUTE1,'')=''
  6314. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6315. )c
  6316. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6317. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6318. WHERE d.Type='1' and a.ID in (" + ID.TrimEnd(',') + ")";
  6319. TableCode = "ICSOApplyNegDetail";
  6320. }
  6321. if (Type == "3")//工单成品生成条码
  6322. {
  6323. sql = @"select a.MOCode as 工单号,a.Sequence as 工单行号 ,a.InvCode as 料品编码,b.InvName as 料品名称,b.InvStd as 规格型号,b.InvUnit as 单位
  6324. ,CAST( a.Quantity AS DECIMAL(38,{0})) as ,CAST( a.Amount as DECIMAL(38,{0})) as
  6325. ,a.MUSERName as ,a.MTIME as ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6326. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6327. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  6328. a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6329. a.EATTRIBUTE9,a.EATTRIBUTE10
  6330. from ICSMO a
  6331. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6332. left join (
  6333. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6334. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='3'
  6335. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6336. )c
  6337. on a.MOCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6338. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6339. WHERE 1=1 and a.MOStatus<>'3' and a.Quantity-ISNULL(c.LOTQTY,0)<>0 and a.ID in (" + ID.TrimEnd(',') + ")";
  6340. TableCode = "ICSMO";
  6341. }
  6342. if (Type == "4")//销售退货
  6343. {
  6344. sql = @"select a.SDNCode as 单据号,a.Sequence as 行号,a.SOCode as 销售订单号,a.SOSequence as 销售订单行号,a.CusCode as 客户代码 ,a.CusName as 客户名称 ,a.ArriveDate as 发货日期,a.InvCode as 料品编码,b.InvName as 料品名称,b.InvStd as 规格型号,b.InvUnit as 单位,CAST(a.Quantity AS DECIMAL(38,{0})) as 数量
  6345. ,cast(a.Amount as decimal(38,{0})) as , CAST(a.SDNQuantity AS DECIMAL(38,{0})) as ,a.CreatePerson as ,a.CreateDateTime as ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6346. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6347. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6348. a.EATTRIBUTE9,a.EATTRIBUTE10
  6349. from ICSSDN a
  6350. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6351. left join (
  6352. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6353. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='4'
  6354. where isnull(ee.EATTRIBUTE1,'')=''
  6355. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6356. )c
  6357. on a.SDNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6358. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6359. where a.Type='2'and a.ID in (" + ID.TrimEnd(',') + ")";
  6360. TableCode = "ICSSDN";
  6361. }
  6362. if (Type == "5")//其它入库生成条码
  6363. {
  6364. sql = @"select a.InCode as 单据号,a.Sequence as 行号,a.WHCode as 仓库编码,a.InvCode as 料品编码, b.InvName as 料品名称,b.InvStd as 料品型号 ,b.InvDesc as 料品描述,b.InvUnit as 料品单位,
  6365. CAST(a.Quantity AS DECIMAL(38,{0})) as ,CAST(a.Amount AS DECIMAL(38,{0})) as , CAST(a.InQuantity AS DECIMAL(38,{0})) as ,a.CreatePerson as ,a.CreateDateTime as ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6366. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6367. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6368. a.EATTRIBUTE9,a.EATTRIBUTE10
  6369. from ICSOtherIn a
  6370. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6371. left join (
  6372. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6373. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='5'
  6374. where isnull(ee.EATTRIBUTE1,'')=''
  6375. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6376. )c
  6377. on a.InCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6378. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6379. where a.Status='1' and ISNULL(a.EATTRIBUTE2,'1')='1' and a.ID in (" + ID.TrimEnd(',') + ")";
  6380. TableCode = "ICSOtherIn";
  6381. }
  6382. if (Type == "6")//归还单生成条码
  6383. {
  6384. sql = @" select a.ReturnCode as 单据号,a.Sequence as 行号,a.WHCode as 仓库编码,a.InvCode as 料品编码, b.InvName as 料品名称,b.InvStd as 料品型号,b.InvDesc as 料品描述,b.InvUnit as 料品单位
  6385. ,CAST(a.Quantity AS DECIMAL(38,{0})) as ,CAST(a.Amount AS DECIMAL(38,{0})) as , CAST(a.ReturnQuantity AS DECIMAL(38,{0})) as ,a.CreatePerson as ,a.CreateDateTime as ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6386. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6387. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6388. a.EATTRIBUTE9,a.EATTRIBUTE10
  6389. from ICSReturn a
  6390. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6391. left join (
  6392. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6393. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='6'
  6394. where isnull(ee.EATTRIBUTE1,'')=''
  6395. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6396. ) c on a.ReturnCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6397. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6398. where a.Status='2' and a.ID in (" + ID.TrimEnd(',') + ")";
  6399. TableCode = "ICSReturn";
  6400. }
  6401. if (Type == "7")//*审核到货单生成条码
  6402. {
  6403. sql = @"select d.POCode as 采购订单号,d.Sequence as 采购订单行号,a.DNCode as 单据号,a.Sequence as 行号,a.VenCode as 供应商代码,e.VenName as 供应商名称,a.InvCode as 料品编码, b.InvName as 料品名称,b.InvStd as 料品型号,b.InvDesc as 料品描述,b.InvUnit as 料品单位,
  6404. CAST(a.Quantity AS DECIMAL(38,{0})) as ,CAST(a.Amount AS DECIMAL(38,{0})) as ,CAST(a.RCVQuantity AS DECIMAL(38,{0})) as ,a.Currency as ,a.CreatePerson as ,a.CreateDateTime as ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6405. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6406. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6407. a.EATTRIBUTE9,a.EATTRIBUTE10
  6408. from ICSDeliveryNotice a
  6409. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6410. left join (
  6411. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6412. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='7'
  6413. where isnull(ee.EATTRIBUTE1,'')=''
  6414. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6415. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6416. inner join ICSPurchaseOrder d on a.POID=d.POID and a.PODetailID=d.PODetailID and a.WorkPoint=d.WorkPoint
  6417. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  6418. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6419. where a.DNType='1' and a.Status='2' and a.ASNCode is null and a.ID in (" + ID.TrimEnd(',') + ")";
  6420. TableCode = "ICSDeliveryNotice";
  6421. }
  6422. if (Type == "8")//审核委外到货单生成条码
  6423. {
  6424. sql = @"select d.OOCode as 委外采购订单号,d.Sequence as 委外采购订单行号,a.ODNCode as 单据号,a.Sequence as 行号,a.VenCode as 供应商代码,e.VenName as 供应商名称,a.InvCode as 料品编码, b.InvName as ,b.InvStd as 料品型号,b.InvDesc as 料品描述,b.InvUnit as 料品单位,CAST(a.Quantity AS DECIMAL(38,{0})) as 数量 ,CAST(a.Amount AS DECIMAL(38,{0})) as 辅计量数量,CAST(a.RCVQuantity AS DECIMAL(38,{0})) as 入库数量,a.Currency as 币种,a.CreatePerson as 创建人,a.CreateDateTime as 创建时间,
  6425. CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6426. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6427. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10 ,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6428. a.EATTRIBUTE9,a.EATTRIBUTE10
  6429. from ICSODeliveryNotice a
  6430. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6431. left join (
  6432. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6433. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='8'
  6434. where isnull(ee.EATTRIBUTE1,'')=''
  6435. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6436. ) c on a.ODNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6437. inner join ICSOutsourcingOrder d on a.OOID=d.OOID and a.OODetailID=d.OODetailID and a.WorkPoint=d.WorkPoint
  6438. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  6439. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6440. where a.ODNType='1' and a.Status='2' and a.OASNCode is null and a.ID in (" + ID.TrimEnd(',') + ")";
  6441. TableCode = "ICSODeliveryNotice";
  6442. }
  6443. if (Type == "9")//开立得成品入库单 生成条码
  6444. {
  6445. sql = @"select a.RCVCode as 单据号,a.Sequence as 行号,a.WHCode as 仓库号,a.InvCode as 料品编码, b.InvName as 料品名称,b.InvStd as 料品型号,b.InvDesc as 料品描述,b.InvUnit as 料品单位,CAST(a.Quantity AS DECIMAL(38,{0})) as 数量 ,
  6446. CAST(a.Amount AS DECIMAL(38,{0})) as ,CAST(a.RCVQuantity AS DECIMAL(38,{0})) as ,a.CreatePerson as ,a.CreateDateTime as ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6447. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6448. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6449. a.EATTRIBUTE9,a.EATTRIBUTE10
  6450. from ICSManufactureReceive a
  6451. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6452. left join (
  6453. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6454. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='9'
  6455. where isnull(ee.EATTRIBUTE1,'')=''
  6456. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6457. ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6458. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6459. where a.Status='1' and a.Type='1' and a.ID in (" + ID.TrimEnd(',') + ")";
  6460. TableCode = "ICSManufactureReceive";
  6461. }
  6462. if (Type == "10")//采购拒收单
  6463. {
  6464. sql = @"select a.DNCode as 拒收单号 ,a.Sequence as 拒收单行号 ,a.VenCode as 供应商代码,e.VenName as 供应商名称,a.InvCode as 料品编码, b.InvName as 料品名称,b.InvStd as 料品型号,b.InvDesc as 料品描述,b.InvUnit as 料品单位,
  6465. CAST(a.Quantity AS DECIMAL(38,{0})) as ,CAST(a.Amount AS DECIMAL(38,{0})) as ,CAST(a.RCVQuantity AS DECIMAL(38,{0})) as ,a.Currency as ,a.CreatePerson as ,a.CreateDateTime as ,
  6466. CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6467. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6468. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6469. a.EATTRIBUTE9,a.EATTRIBUTE10
  6470. from ICSDeliveryNotice a
  6471. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6472. left join (
  6473. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6474. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='10'
  6475. where isnull(ee.EATTRIBUTE1,'')=''
  6476. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6477. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6478. --inner join ICSPurchaseOrder d on a.POID=d.POID and a.PODetailID=d.PODetailID and a.WorkPoint=d.WorkPoint
  6479. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  6480. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6481. where a.DNType='3' and a.Status='2' and a.EATTRIBUTE1 is NOT null and a.ID in (" + ID.TrimEnd(',') + ")";
  6482. TableCode = "ICSDeliveryNotice";
  6483. }
  6484. if (Type == "11") //委外拒收单生成条码
  6485. {
  6486. sql = @"select a.ODNCode as 委外拒收单号,a.Sequence as 委外拒收单行号,a.VenCode as 供应商代码,e.VenName as 供应商名称,a.InvCode as 料品编码, b.InvName as 料品名称,b.InvStd as 料品型号,b.InvDesc as 料品描述,b.InvUnit as 料品单位,
  6487. CAST(a.Quantity AS DECIMAL(38,{0})) as ,CAST(a.Amount AS DECIMAL(38,{0})) as ,CAST(a.RCVQuantity AS DECIMAL(38,{0})) as ,a.Currency as ,a.CreatePerson as ,a.CreateDateTime as ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6488. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6489. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10 ,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6490. a.EATTRIBUTE9,a.EATTRIBUTE10
  6491. from ICSODeliveryNotice a
  6492. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6493. left join (
  6494. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6495. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='11'
  6496. where isnull(ee.EATTRIBUTE1,'')=''
  6497. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6498. ) c on a.ODNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6499. --inner join ICSOutsourcingOrder d on a.OOID=d.OOID and a.OODetailID=d.OODetailID and a.WorkPoint=d.WorkPoint
  6500. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  6501. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6502. where a.ODNType='3' and a.Status='2' and a.EATTRIBUTE1 is NOT null and a.ID in (" + ID.TrimEnd(',') + ")";
  6503. TableCode = "ICSODeliveryNotice";
  6504. }
  6505. if (Type == "12")//领料申请退料生成条码
  6506. {
  6507. sql = @"select a.ApplyNegCode as 退料单号,a.Sequence as 退料单行号,a.InvCode as 料品编码,b.InvName as 料品编码,b.InvDesc as 料品描述,b.InvStd as 规格型号,b.InvUnit as 单位,
  6508. CAST(a.Quantity AS DECIMAL(38,{0})) as ,CAST(a.Amount AS DECIMAL(38,{0})) as ,CAST(a.IssueNegQuantity AS DECIMAL(38,{0})) as 退 ,a.MUSERName as ,a.MTIME as ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6509. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6510. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6511. a.EATTRIBUTE9,a.EATTRIBUTE10
  6512. from ICSMOApplyNegDetail a
  6513. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  6514. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6515. left join (
  6516. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6517. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='12'
  6518. where isnull(ee.EATTRIBUTE1,'')=''
  6519. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6520. )c
  6521. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6522. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6523. WHERE d.Type='2' and d.Status='2' and a.ID in (" + ID.TrimEnd(',') + ")";
  6524. TableCode = "ICSMOApplyNegDetail";
  6525. }
  6526. if (Type == "13")//材料出库退料
  6527. {
  6528. sql = @" select a.ApplyNegCode as 退料单号,a.Sequence as 退料单行号,a.InvCode as 料品编码,b.InvName as 料品名称,b.InvDesc as 料品描述,b.InvStd as 规格型号,b.InvUnit as 单位,
  6529. CAST(a.Quantity AS DECIMAL(38,{0})) as ,
  6530. CAST(a.Amount AS DECIMAL(38,{0})) as ,CAST(a.IssueNegQuantity AS DECIMAL(38,{0})) as 退 ,a.MUSERName as ,a.MTIME as ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6531. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6532. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10
  6533. from ICSMOApplyNegDetail a
  6534. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  6535. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6536. left join (
  6537. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6538. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='13'
  6539. where isnull(ee.EATTRIBUTE1,'')=''
  6540. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6541. )c
  6542. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6543. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6544. WHERE d.Type='3' and d.Status='2' and a.ID in (" + ID.TrimEnd(',') + ")";
  6545. TableCode = "ICSMOApplyNegDetail";
  6546. }
  6547. if (Type == "14")//委外领料申请退料
  6548. {
  6549. sql = @" select a.OApplyNegCode as 退料单号,a.Sequence as 退料单行号,a.InvCode as 料品编码,b.InvName as 料品名称,b.InvDesc as 料品描述,b.InvStd as 规格型号,b.InvUnit as 单位,
  6550. CAST(a.Quantity AS DECIMAL(38,{0})) as ,CAST(a.Amount AS DECIMAL(38,{0})) as ,CAST(a.IssueNegQuantity AS DECIMAL(38,{0})) as 退 ,a.MUSERName as ,a.MTIME as ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6551. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6552. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6553. a.EATTRIBUTE9,a.EATTRIBUTE10
  6554. from ICSOApplyNegDetail a
  6555. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  6556. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6557. left join (
  6558. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6559. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='14'
  6560. where isnull(ee.EATTRIBUTE1,'')=''
  6561. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6562. )c
  6563. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6564. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6565. WHERE d.Type='2' and a.ID in (" + ID.TrimEnd(',') + ")";
  6566. TableCode = "ICSOApplyNegDetail";
  6567. }
  6568. if (Type == "15")//委外材料出库退料
  6569. {
  6570. sql = @" select a.OApplyNegCode as 退料单号,a.Sequence as 退料单行号,a.InvCode as 料品编码,b.InvName as 料品名称,b.InvDesc as 料品描述,b.InvStd as 规格型号,b.InvUnit as 单位,
  6571. CAST(a.Quantity AS DECIMAL(38,{0})) as ,CAST(a.Amount AS DECIMAL(38,{0})) as ,CAST(a.IssueNegQuantity AS DECIMAL(38,{0})) as 退 ,a.MUSERName as ,a.MTIME as ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6572. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6573. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6574. a.EATTRIBUTE9,a.EATTRIBUTE10
  6575. from ICSOApplyNegDetail a
  6576. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  6577. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6578. left join (
  6579. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6580. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='15'
  6581. where isnull(ee.EATTRIBUTE1,'')=''
  6582. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6583. )c
  6584. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6585. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6586. WHERE d.Type='3' and a.ID in (" + ID.TrimEnd(',') + ")";
  6587. TableCode = "ICSOApplyNegDetail";
  6588. }
  6589. if (Type == "16") //返工工单
  6590. {
  6591. sql = @"select d.MOCode as 工单号,d.Sequence+'~'+ a.Sequence as 工单子件行号,a.InvCode as 料品编码,b.InvName as 料品名称,b.InvDesc as 料品描述,b.InvStd as 规格型号,b.InvUnit as 单位,
  6592. CAST(a.Quantity AS DECIMAL(38,{0})) as ,
  6593. CAST(a.Amount AS DECIMAL(38,{0})) as ,CAST(a.IssueQuantity AS DECIMAL(38,{0})) as ,a.MUSERName as ,a.MTIME as ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6594. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6595. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6596. a.EATTRIBUTE9,a.EATTRIBUTE10
  6597. from ICSMOPick a
  6598. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  6599. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6600. left join (
  6601. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6602. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='16'
  6603. where isnull(ee.EATTRIBUTE1,'')=''
  6604. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6605. )c
  6606. on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6607. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6608. where a.EATTRIBUTE1='1' and d.EATTRIBUTE1='1' and a.ID in (" + ID.TrimEnd(',') + ")";
  6609. TableCode = "ICSMOPick";
  6610. }
  6611. if (Type == "17")//检验不合格条码重新生成
  6612. {
  6613. sql = @"select a.LotNo as 不合格条码, a.InvCode as 料品编码,b.InvName as 料品名称,b.InvDesc as 料品描述,b.InvStd as 规格型号,b.InvUnit as 单位,
  6614. CAST(a.Quantity AS DECIMAL(38,{0})) as ,
  6615. CAST(c.Amount AS DECIMAL(38,{0})) as ,a.MUSERName,a.MUSERName as ,a.MTIME as ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6616. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6617. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  6618. a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6619. a.EATTRIBUTE9,a.EATTRIBUTE10
  6620. from ICSInspection a
  6621. left join dbo.ICSInventoryLot d on a.LotNo=d.LotNo and a.WorkPoint=d.WorkPoint
  6622. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6623. left join (
  6624. select ee.LotNo,ee.EATTRIBUTE1,ee.Amount,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6625. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='17'
  6626. group by ee.LotNo,ee.EATTRIBUTE1,ee.Amount,ee.WorkPoint
  6627. )c
  6628. on c.EATTRIBUTE1=d.LotNo and a.WorkPoint=c.WorkPoint
  6629. left join ICSExtension f on d.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6630. where a.UnqualifiedQuantity>0 and a.Enable='1' and a.ID in (" + ID.TrimEnd(',') + ")";
  6631. TableCode = "ICSInspection";
  6632. }
  6633. #endregion
  6634. sql = sql + " and a.WorkPoint='{1}'";
  6635. sql = string.Format(sql, Figure, WorkPoint);
  6636. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  6637. string sqls = @"SELECT ColCode,ColName,Enable
  6638. from ICSExtensionEnable where WorkPoint='" + WorkPoint + "'";
  6639. DataTable dtExtension = SqlHelper.GetDataTableBySql(sqls);
  6640. foreach (DataRow drE in dtExtension.Rows)
  6641. {
  6642. if (dt.Columns.Contains(drE["ColCode"].ToString()))
  6643. {
  6644. if (!Convert.ToBoolean(drE["Enable"]))
  6645. {
  6646. dt.Columns.Remove(drE["ColCode"].ToString());
  6647. }
  6648. else if (Convert.ToBoolean(drE["Enable"]))
  6649. {
  6650. dt.Columns[drE["ColCode"].ToString()].ColumnName = drE["ColName"].ToString();
  6651. }
  6652. }
  6653. }
  6654. DataTable dtColumn = ColumnEnable(TableCode);
  6655. foreach (DataRow drC in dtColumn.Rows)
  6656. {
  6657. if (dt.Columns.Contains(drC["ColumnCode"].ToString()))
  6658. {
  6659. if (!Convert.ToBoolean(drC["Enable"]))
  6660. {
  6661. dt.Columns.Remove(drC["ColumnCode"].ToString());
  6662. }
  6663. else if (Convert.ToBoolean(drC["Enable"]))
  6664. {
  6665. dt.Columns[drC["ColumnCode"].ToString()].ColumnName = drC["Name"].ToString();
  6666. }
  6667. }
  6668. }
  6669. return dt;
  6670. }
  6671. public DataTable ColumnEnable(string TableCode)
  6672. {
  6673. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  6674. string sql = string.Empty;
  6675. sql = @"select ColumnCode,Name,Enable from ICSColumnEnable where TableCode='{0}' and WorkPoint='{1}'";
  6676. sql = string.Format(sql, TableCode, WorkPoint);
  6677. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  6678. return dt;
  6679. }
  6680. public object GetQiSetNum(string keyValue)
  6681. {
  6682. decimal Num = 0;
  6683. string msg = "";
  6684. string APIURL = ConfigurationManager.ConnectionStrings["ERPAPIURL"].ConnectionString + "Complete/Approve";
  6685. string result = HttpPost(APIURL, keyValue);
  6686. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  6687. string MessAge = Obj["Message"].ToString();
  6688. string Success = Obj["Success"].ToString();
  6689. if (Success.ToUpper() == "FALSE")
  6690. {
  6691. msg = MessAge;
  6692. }
  6693. else
  6694. {
  6695. if (MessAge == "U9")
  6696. {
  6697. decimal Date = Convert.ToDecimal(Obj["Data"].ToString());
  6698. int date = Convert.ToInt32(Date);
  6699. Num = date;
  6700. }
  6701. else
  6702. {
  6703. if (msg == "")
  6704. {
  6705. JArray res = (JArray)JsonConvert.DeserializeObject(Obj["Data"].ToString());
  6706. foreach (var item in res)
  6707. {
  6708. JObject jo = (JObject)item;
  6709. //var aa= jo["min_lotqty"].ToString();
  6710. Num = Convert.ToDecimal(jo["min_lotqty"].ToString());
  6711. }
  6712. }
  6713. }
  6714. }
  6715. var Header = new
  6716. {
  6717. msg = msg,
  6718. Num = Num,
  6719. };
  6720. return Header;
  6721. }
  6722. //接口api解析
  6723. public static string HttpPost(string url, string body)
  6724. {
  6725. try
  6726. {
  6727. Encoding encoding = Encoding.UTF8;
  6728. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  6729. request.Method = "POST";
  6730. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  6731. request.ContentType = "application/json; charset=utf-8";
  6732. byte[] buffer = encoding.GetBytes(body);
  6733. request.ContentLength = buffer.Length;
  6734. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  6735. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  6736. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  6737. {
  6738. return reader.ReadToEnd();
  6739. }
  6740. }
  6741. catch (WebException ex)
  6742. {
  6743. throw new Exception(ex.Message);
  6744. }
  6745. }
  6746. public static T HttpPost<T>(string url, string body)
  6747. {
  6748. try
  6749. {
  6750. Encoding encoding = Encoding.UTF8;
  6751. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  6752. request.Method = "POST";
  6753. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  6754. request.ContentType = "application/json; charset=utf-8";
  6755. request.KeepAlive = false;
  6756. byte[] buffer = encoding.GetBytes(body);
  6757. request.ContentLength = buffer.Length;
  6758. using (var stream = request.GetRequestStream())
  6759. {
  6760. stream.Write(buffer, 0, buffer.Length);
  6761. }
  6762. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  6763. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  6764. {
  6765. var ret = reader.ReadToEnd();
  6766. return JsonConvert.DeserializeObject<T>(ret);
  6767. }
  6768. }
  6769. catch (WebException ex)
  6770. {
  6771. throw new Exception(ex.Message);
  6772. }
  6773. }
  6774. public DataTable GetLoadShow()
  6775. {
  6776. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  6777. string sql = @"
  6778. select * from ICSExtensionEnable where WorkPoint='" + WorkPoints + "' order by cast(EATTRIBUTE1 as int) ";
  6779. return Repository().FindTableBySql(sql.ToString());
  6780. }
  6781. //不合格条码重新生成入库
  6782. public DataTable GetGridJsonBHGTM(string queryJson, ref Pagination jqgridparam)
  6783. {
  6784. DataTable dt = new DataTable();
  6785. var queryParam = queryJson.ToJObject();
  6786. List<DbParameter> parameter = new List<DbParameter>();
  6787. object Figure = GetDecimalDigits();
  6788. #region [SQL]
  6789. string sql = @"select a.ID,a.LotNo, a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  6790. CAST(a.UnqualifiedQuantity AS DECIMAL(38,{0})) as Quantity ,
  6791. CAST(c.Amount AS DECIMAL(38,{0})) as Amount,a.MUSERName,a.MTIME,CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY,d.ExtensionID
  6792. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6793. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6794. a.EATTRIBUTE9,a.EATTRIBUTE10
  6795. from ICSInspection a
  6796. left join dbo.ICSInventoryLot d on a.LotNo=d.LotNo and a.WorkPoint=d.WorkPoint
  6797. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6798. left join (
  6799. select ee.LotNo,ee.EATTRIBUTE1,ee.Amount,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6800. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='17'
  6801. group by ee.LotNo,ee.EATTRIBUTE1,ee.Amount,ee.WorkPoint
  6802. )c
  6803. on c.EATTRIBUTE1=d.LotNo and a.WorkPoint=c.WorkPoint
  6804. left join ICSExtension f on d.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6805. where a.UnqualifiedQuantity>0 and a.Enable='1'";
  6806. sql = string.Format(sql, Figure);
  6807. #endregion
  6808. if (!string.IsNullOrWhiteSpace(queryJson))
  6809. {
  6810. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  6811. {
  6812. sql += " and a.LotNo like '%" + queryParam["POCode"].ToString() + "%' ";
  6813. }
  6814. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  6815. {
  6816. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  6817. }
  6818. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  6819. {
  6820. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  6821. }
  6822. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  6823. {
  6824. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  6825. }
  6826. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  6827. {
  6828. string POStatus = queryParam["POStatus"].ToString();
  6829. if (POStatus == "0")
  6830. {
  6831. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  6832. }
  6833. else if (POStatus == "1")
  6834. {
  6835. sql += " and a.UnqualifiedQuantity-ISNULL(c.LOTQTY,0)=0";
  6836. }
  6837. else
  6838. {
  6839. sql += " and a.UnqualifiedQuantity-ISNULL(c.LOTQTY,0)<>0";
  6840. }
  6841. }
  6842. }
  6843. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  6844. {
  6845. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  6846. }
  6847. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  6848. }
  6849. public DataTable GetSubGridJsonBHGTM(string LotNo, string Type, ref Pagination jqgridparam)
  6850. {
  6851. DataTable dt = new DataTable();
  6852. object Figure = GetDecimalDigits();
  6853. List<DbParameter> parameter = new List<DbParameter>();
  6854. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  6855. string sql = @" select c.TransCode,c.TransSequence ,a.ID,a.LotNo, CAST( a.Quantity AS DECIMAL(38,{0})) as Quantity ,a.MUSERName,a.MTIME
  6856. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6857. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  6858. case when isnull(d.ID,'')='' then '' else '' end as isStorage,
  6859. case when isnull(e.ID,'')='' then '' else '' end as isInspection,
  6860. case when g.InvIQC='1' then '是' else '否' end as isExemption
  6861. from ICSInventoryLot a
  6862. left join (select count(LotNo) LotNoCount,LotNo,WorkPoint from ICSWareHouseLotInfo
  6863. group by LotNo,WorkPoint)b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  6864. left join ICSInventoryLotDetail c on a.LotNo=c.LotNo and a.WorkPoint=c.WorkPoint
  6865. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6866. left join dbo.ICSWareHouseLotInfo d on a.LotNo=d.LotNo and a.WorkPoint=d.WorkPoint
  6867. left join ICSInspection e on a.LotNo=e.LotNo and e.Enable='1' and a.WorkPoint=e.WorkPoint
  6868. left join ICSInventory g on a.InvCode=g.InvCode and a.WorkPoint=g.WorkPoint
  6869. WHERE isnull(a.EATTRIBUTE1,'')='" + LotNo + "' and a.Type='" + Type + "' and a.WorkPoint in ('" + WorkPoint + "')";
  6870. sql = string.Format(sql, Figure);
  6871. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  6872. }
  6873. public int SubmitFormBHGTM(string OldLotNo, string keyValue, string WorkPoint)
  6874. {
  6875. var queryParam = keyValue.ToJObject();
  6876. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  6877. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  6878. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  6879. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  6880. decimal LOTQTY = minPackQty;
  6881. // string Pre = "DN" + DNCode + (Convert.ToInt32(Sequence)).ToString("D4");
  6882. string sql = string.Empty;
  6883. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  6884. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  6885. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  6886. string sqls = string.Empty;
  6887. string Colspan = "";
  6888. string str1 = "";
  6889. List<string> ExtensionIDList = new List<string>();
  6890. for (int i = 0; i < createPageCount; i++)
  6891. {
  6892. if (i + 1 == createPageCount)
  6893. {
  6894. if (minPackQty * createPageCount > thisCreateQty)
  6895. {
  6896. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  6897. }
  6898. }
  6899. string LotNo = GetNewLotNo(OldLotNo);
  6900. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  6901. select '{0}',TransCode,TransSequence,'{1}','{2}',getdate(),'{3}',TransID from ICSInventoryLotDetail where LotNo='{4}'",
  6902. LotNo, MUSER, MUSERNAME, WorkPoints, OldLotNo);
  6903. sql += string.Format(@"
  6904. insert into ICSInventoryLot
  6905. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount,EATTRIBUTE1)
  6906. select
  6907. newid(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,b.UnqualifiedQuantity,a.ExtensionID,'17','{1}','{2}',getdate(),'{3}',a.Amount,'{4}'
  6908. from ICSInventoryLot a
  6909. inner join ICSInspection b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint and b.Enable='1'
  6910. where a.LotNo='{4}' and a.WorkPoint='{3}'",
  6911. LotNo, MUSER, MUSERNAME, WorkPoints, OldLotNo);
  6912. sql += "\r\n";
  6913. }
  6914. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  6915. return count;
  6916. }
  6917. public string GetNewLotNo(string LotNO)
  6918. {
  6919. DataTable dt = new DataTable();
  6920. List<DbParameter> parameter = new List<DbParameter>();
  6921. //string sql = @"select max(LotNo) as NewLotNo from ICSInventoryLot where EATTRIBUTE1='{0}' ";
  6922. string sql = @"SELECT TOP 1 LotNO as NewLotNo FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}'
  6923. ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
  6924. sql = string.Format(sql, LotNO);
  6925. dt = Repository().FindTableBySql(sql.ToString());
  6926. if (dt == null || dt.Rows.Count == 0 || dt.Rows[0]["NewLotNo"].ToString() == "")
  6927. {
  6928. return LotNO + "-1";
  6929. }
  6930. else
  6931. {
  6932. string newLotNO = dt.Rows[0]["NewLotNo"].ToString();
  6933. int COUNT = Convert.ToInt32(newLotNO.Substring(newLotNO.LastIndexOf('-') + 1)) + 1;
  6934. return LotNO + "-" + COUNT.ToString();
  6935. }
  6936. }
  6937. public DataTable SelGDLX()
  6938. {
  6939. string sql = string.Empty;
  6940. DataTable dt = null;
  6941. sql = string.Format(@"select distinct isnull(MOType,'') as Code ,isnull(MOType,'') as Name from dbo.ICSMO where isnull(MOType,'')<>''");
  6942. dt = SqlHelper.GetDataTableBySql(sql);
  6943. return dt;
  6944. }
  6945. public DataTable GetFreeEnble()
  6946. {
  6947. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  6948. string sql = @"
  6949. select * from ICSExtensionEnable where WorkPoint='" + WorkPoints + "' order by cast(EATTRIBUTE1 as int) ";
  6950. return Repository().FindTableBySql(sql.ToString());
  6951. }
  6952. public DataTable GetInvBatchEnable(string InvCode)
  6953. {
  6954. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  6955. string sql = @"select distinct BatchEnable from ICSInventory where InvCode='{0}' and WorkPoint='{1}'";
  6956. sql = string.Format(sql, InvCode, WorkPoints);
  6957. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  6958. return dt;
  6959. }
  6960. //副产品
  6961. public DataTable GetGridJsonFCP(string queryJson, ref Pagination jqgridparam)
  6962. {
  6963. DataTable dt = new DataTable();
  6964. var queryParam = queryJson.ToJObject();
  6965. List<DbParameter> parameter = new List<DbParameter>();
  6966. object Figure = GetDecimalDigits();
  6967. #region [SQL]
  6968. string sql = @"select a.ID,d.MOCode,d.Sequence+'~'+ a.Sequence as Sequence,a.PickID,a.InvCode as ZInvCode,d.InvCode as MInvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  6969. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity ,
  6970. CAST(a.Amount AS DECIMAL(38,{0})) as Amount,CAST(a.IssueQuantity AS DECIMAL(38,{0})) as IssueQuantity ,a.ExtensionID,a.MUSERName,a.MTIME ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  6971. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6972. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6973. a.EATTRIBUTE9,a.EATTRIBUTE10
  6974. from ICSMOPick a
  6975. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  6976. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6977. left join (
  6978. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6979. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='18'
  6980. where isnull(ee.EATTRIBUTE1,'')=''
  6981. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6982. )c
  6983. on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6984. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6985. where a.EATTRIBUTE1='1' ";
  6986. sql = string.Format(sql, Figure);
  6987. #endregion
  6988. if (!string.IsNullOrWhiteSpace(queryJson))
  6989. {
  6990. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  6991. {
  6992. sql += " and d.MOCode like '%" + queryParam["POCode"].ToString() + "%' ";
  6993. }
  6994. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  6995. {
  6996. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  6997. }
  6998. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  6999. {
  7000. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  7001. }
  7002. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  7003. {
  7004. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  7005. }
  7006. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  7007. {
  7008. string POStatus = queryParam["POStatus"].ToString();
  7009. if (POStatus == "0")
  7010. {
  7011. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  7012. }
  7013. else if (POStatus == "1")
  7014. {
  7015. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  7016. }
  7017. else
  7018. {
  7019. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  7020. }
  7021. }
  7022. }
  7023. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  7024. {
  7025. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  7026. }
  7027. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  7028. {
  7029. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  7030. }
  7031. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  7032. }
  7033. /// <summary>
  7034. /// 锐腾调入单生成条码
  7035. /// </summary>
  7036. /// <param name="queryJson"></param>
  7037. /// <param name="jqgridparam"></param>
  7038. /// <returns></returns>
  7039. public DataTable GetGridJsonTransfer(string queryJson, ref Pagination jqgridparam)
  7040. {
  7041. DataTable dt = new DataTable();
  7042. var queryParam = queryJson.ToJObject();
  7043. List<DbParameter> parameter = new List<DbParameter>();
  7044. object Figure = GetDecimalDigits();
  7045. #region [SQL]
  7046. string sql = @" select * from (SELECT a.ID,a.TransferNO,a.Sequence,a.InvCode,A.Quantity,A.Amount,Isnull(a.TransferQuantity,0) TransferQuantity,b.InvName,b.InvStd,b.InvUnit,sum(Isnull(c.Quantity,0)) as LOTQTY,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4 ,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,a.EATTRIBUTE9,a.EATTRIBUTE10
  7047. FROM ICSTransfer a
  7048. LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  7049. LEFT JOIN (SELECT c.TransCode,c.WorkPoint,c.TransSequence,sum(d.Quantity) Quantity FROM ICSInventoryLotDetail c
  7050. LEFT JOIN ICSInventoryLot d ON c.LotNo=d.LotNo AND d.WorkPoint=c.WorkPoint
  7051. WHERE ISNULL(d.EATTRIBUTE1, '')=''
  7052. GROUP BY c.TransCode,c.WorkPoint,c.TransSequence ) c ON a.TransferNO=c.TransCode AND c.WorkPoint=a.WorkPoint AND a.Sequence=c.TransSequence
  7053. left JOIN ICSExtension f ON f.Id=a.ExtensionID AND f.WorkPoint=a.WorkPoint
  7054. WHERE a.Type='2'
  7055. AND Isnull(a.Status,'')<>3
  7056. ";
  7057. sql = string.Format(sql, Figure);
  7058. #endregion
  7059. if (!string.IsNullOrWhiteSpace(queryJson))
  7060. {
  7061. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  7062. {
  7063. sql += " and a.TransferNO like '%" + queryParam["POCode"].ToString() + "%' ";
  7064. }
  7065. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  7066. {
  7067. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  7068. }
  7069. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  7070. {
  7071. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  7072. }
  7073. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  7074. {
  7075. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  7076. }
  7077. }
  7078. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  7079. {
  7080. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  7081. }
  7082. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  7083. {
  7084. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  7085. }
  7086. sql += @" GROUP BY a.Id,a.TransferNO,a.Sequence,a.InvCode,A.Quantity,A.Amount,a.TransferQuantity,b.InvName,b.InvStd,b.InvUnit,f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,a.EATTRIBUTE9,a.EATTRIBUTE10 ) t
  7087. where 1=1 ";
  7088. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  7089. {
  7090. string POStatus = queryParam["POStatus"].ToString();
  7091. if (POStatus == "0")
  7092. {
  7093. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  7094. }
  7095. else if (POStatus == "1")
  7096. {
  7097. sql += " and Quantity-ISNULL(LOTQTY,0)=0";
  7098. }
  7099. else
  7100. {
  7101. sql += " and Quantity-ISNULL(LOTQTY,0)<>0";
  7102. }
  7103. }
  7104. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  7105. }
  7106. /// <summary>
  7107. /// 采购入库生成条码
  7108. /// </summary>
  7109. /// <param name="queryJson"></param>
  7110. /// <param name="jqgridparam"></param>
  7111. /// <returns></returns>
  7112. ///
  7113. public DataTable GetGridJsonPurchaseReceive(string queryJson, ref Pagination jqgridparam)
  7114. {
  7115. DataTable dt = new DataTable();
  7116. var queryParam = queryJson.ToJObject();
  7117. List<DbParameter> parameter = new List<DbParameter>();
  7118. object Figure = GetDecimalDigits();
  7119. #region [SQL]
  7120. string sql = @"select distinct a.ID,a.RCVCode,a.Sequence,a.WHCode,e.WarehouseName as WHName,a.InvCode, b.InvName,b.InvStd,b.InvUnit,d.POCode,d.Sequence as POSequence,
  7121. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity
  7122. ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount
  7123. ,CAST(a.RCVQuantity AS DECIMAL(38,{0})) as RCVQuantity
  7124. ,c.LOTQTY
  7125. ,isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays
  7126. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  7127. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  7128. a.EATTRIBUTE9,a.EATTRIBUTE10,b.EATTRIBUTE1 as ICSInventoryEATTRIBUTE1 ,b.EATTRIBUTE2 as ICSInventoryEATTRIBUTE2,b.EATTRIBUTE3 as ICSInventoryEATTRIBUTE3,b.EATTRIBUTE4 as ICSInventoryEATTRIBUTE4,b.EATTRIBUTE5 as ICSInventoryEATTRIBUTE5,b.EATTRIBUTE6 as ICSInventoryEATTRIBUTE6,b.EATTRIBUTE7 as ICSInventoryEATTRIBUTE7,b.EATTRIBUTE8 as ICSInventoryEATTRIBUTE8,
  7129. b.EATTRIBUTE9 as ICSInventoryEATTRIBUTE9,b.EATTRIBUTE10 as ICSInventoryEATTRIBUTE10,
  7130. isnull(b.EATTRIBUTE2,'') as MPQ
  7131. from ICSPurchaseReceive a
  7132. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  7133. left join (
  7134. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  7135. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='22'
  7136. where isnull(ee.EATTRIBUTE1,'')=''
  7137. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  7138. ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  7139. left join ICSPurchaseOrder d on a.SourceCode = d.POCode and a.SourceSequence = d.Sequence and a.WorkPoint=d.WorkPoint
  7140. left join ICSWarehouse e on a.WHCode=e.WarehouseCode and a.WorkPoint=e.WorkPoint
  7141. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  7142. where a.Type='1' ";
  7143. sql = string.Format(sql, Figure);
  7144. #endregion
  7145. if (!string.IsNullOrWhiteSpace(queryJson))
  7146. {
  7147. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  7148. {
  7149. sql += " and a.RCVCode like '%" + queryParam["POCode"].ToString() + "%' ";
  7150. }
  7151. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  7152. {
  7153. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  7154. }
  7155. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  7156. {
  7157. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  7158. }
  7159. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  7160. {
  7161. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  7162. }
  7163. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  7164. {
  7165. sql += " and a.CreateDateTime >= '" + queryParam["FromTime"].ToString() + "' ";
  7166. }
  7167. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  7168. {
  7169. sql += " and a.CreateDateTime <= '" + queryParam["ToTime"].ToString() + "' ";
  7170. }
  7171. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  7172. {
  7173. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  7174. }
  7175. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  7176. {
  7177. string POStatus = queryParam["POStatus"].ToString();
  7178. if (POStatus == "0")
  7179. {
  7180. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  7181. }
  7182. else if (POStatus == "1")
  7183. {
  7184. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  7185. }
  7186. else
  7187. {
  7188. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  7189. }
  7190. }
  7191. }
  7192. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  7193. {
  7194. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  7195. }
  7196. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  7197. {
  7198. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  7199. }
  7200. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  7201. }
  7202. // public DataTable GetGridJsonPurchaseReceive(string queryJson, ref Pagination jqgridparam)
  7203. // {
  7204. // DataTable dt = new DataTable();
  7205. // var queryParam = queryJson.ToJObject();
  7206. // List<DbParameter> parameter = new List<DbParameter>();
  7207. // object Figure = GetDecimalDigits();
  7208. // #region [SQL]
  7209. // string sql = @" select * from (select distinct a.ID,a.RCVCode,a.Sequence,a.WHCode,e.WarehouseName as WHName,a.InvCode, b.InvName,b.InvStd,b.InvUnit,d.POCode,d.Sequence as POSequence,
  7210. // CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity
  7211. // ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount
  7212. // ,CAST(a.RCVQuantity AS DECIMAL(38,{0})) as RCVQuantity
  7213. // ,c.LOTQTY
  7214. // ,isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays
  7215. // ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  7216. // ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  7217. // a.EATTRIBUTE9,a.EATTRIBUTE10,
  7218. // isnull(b.EATTRIBUTE2,'') as MPQ
  7219. // from ICSPurchaseReceive a
  7220. // left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  7221. // left join (
  7222. // select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  7223. // left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='22'
  7224. // where isnull(ee.EATTRIBUTE1,'')=''
  7225. // group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  7226. // ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  7227. // left join ICSPurchaseOrder d on a.SourceCode = d.POCode and a.SourceSequence = d.Sequence and a.WorkPoint=d.WorkPoint
  7228. // left join ICSWarehouse e on a.WHCode=e.WarehouseCode and a.WorkPoint=e.WorkPoint
  7229. // left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  7230. // where a.Type='1' ";
  7231. // sql = string.Format(sql, Figure);
  7232. // #endregion
  7233. // if (!string.IsNullOrWhiteSpace(queryJson))
  7234. // {
  7235. // if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  7236. // {
  7237. // sql += " and a.RCVCode like '%" + queryParam["POCode"].ToString() + "%' ";
  7238. // }
  7239. // if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  7240. // {
  7241. // sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  7242. // }
  7243. // if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  7244. // {
  7245. // sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  7246. // }
  7247. // if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  7248. // {
  7249. // sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  7250. // }
  7251. // }
  7252. // if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  7253. // {
  7254. // sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  7255. // }
  7256. // if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  7257. // {
  7258. // sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  7259. // }
  7260. // sql += @" GROUP BY a.Id,a.RCVCode,a.Sequence,a.InvCode,A.Quantity,A.Amount,a.RCVQuantity,b.InvName,e.WarehouseName,a.WHCode,b.InvStd,b.InvUnit,b.EffectiveEnable,b.EffectiveDays,d.POCode,d.Sequence,c.LOTQTY,
  7261. //f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.EATTRIBUTE,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,a.EATTRIBUTE9,a.EATTRIBUTE10 ) t
  7262. // where 1=1 ";
  7263. // if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  7264. // {
  7265. // string POStatus = queryParam["POStatus"].ToString();
  7266. // if (POStatus == "0")
  7267. // {
  7268. // //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  7269. // }
  7270. // else if (POStatus == "1")
  7271. // {
  7272. // sql += " and Quantity-ISNULL(LOTQTY,0)=0";
  7273. // }
  7274. // else
  7275. // {
  7276. // sql += " and Quantity-ISNULL(LOTQTY,0)<>0";
  7277. // }
  7278. // }
  7279. // return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  7280. // }
  7281. /// <summary>
  7282. /// 采购入库获取单据信息
  7283. /// </summary>
  7284. /// <param name="FGGDMOCode"></param>
  7285. /// <param name="Sequence"></param>
  7286. /// <param name="WorkPoint"></param>
  7287. /// <returns></returns>
  7288. public DataTable GetSubGridJsonPurchaseReceiveByCreate(string RCVCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  7289. {
  7290. DataTable dt = new DataTable();
  7291. object Figure = GetDecimalDigits();
  7292. List<DbParameter> parameter = new List<DbParameter>();
  7293. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn001', " + Quantity + ",1,1,'')";
  7294. object Num = SqlHelper.ExecuteScalar(SeachNum);
  7295. string sql = $@"SELECT a.InvCode, " + Num + @" as Quantity, b.InvName, b.ClassCode, b.InvStd, b.InvUnit
  7296. , CAST ( a.Amount AS DECIMAL ( 38,6 )) AS Amount
  7297. , CAST ( isnull( c.LOTQTY, 0 ) AS DECIMAL ( 38,6 ) ) AS CreatedQty
  7298. , CAST ( ( " + Num + @"- ISNULL( c.LOTQTY, 0 ) ) AS DECIMAL ( 38,6 ) ) AS thisCreateQty
  7299. , isnull( b.EffectiveEnable, 0 ) AS EffectiveEnable
  7300. , CAST ( isnull( b.EffectiveDays, 0 ) AS DECIMAL ( 38,6 ) ) AS EffectiveDays
  7301. , case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,6)) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,6)) end as MPQ
  7302. , e.ProjectCode, e.BatchCode, e.Version, e.Brand, e.cFree1, e.cFree2, e.cFree3, e.cFree4, e.cFree5, e.cFree6, e.cFree7, e.cFree8, e.cFree9, e.cFree10 ,
  7303. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  7304. FROM ICSPurchaseReceive a
  7305. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode AND a.WorkPoint= b.WorkPoint
  7306. LEFT JOIN ( SELECT b.TransCode,b.TransSequence, SUM ( isnull( Quantity, 0 ) ) LOTQTY
  7307. FROM ICSInventoryLot a
  7308. LEFT JOIN ICSInventoryLotDetail b ON a.LotNo= b.LotNo AND a.Type= '22'
  7309. WHERE isnull( a.EATTRIBUTE1, '' ) = ''
  7310. GROUP BY
  7311. b.TransCode,
  7312. b.TransSequence
  7313. ) c ON a.RCVCode = c.TransCode AND a.Sequence = c.TransSequence
  7314. LEFT JOIN ICSExtension e ON a.ExtensionID= e.ID AND a.WorkPoint= e.WorkPoint
  7315. WHERE 1 = 1
  7316. and a.RCVCode='" + RCVCode + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoint + "'";
  7317. // sql = string.Format(sql, Figure);
  7318. return Repository().FindTableBySql(sql.ToString());
  7319. }
  7320. /// <summary>
  7321. /// 采购入库单生成条码 保存
  7322. /// </summary>
  7323. /// <param name="RCVCode"></param>
  7324. /// <param name="Sequence"></param>
  7325. /// <param name="keyValue"></param>
  7326. /// <param name="WorkPoint"></param>
  7327. /// <returns></returns>
  7328. public int SubmitFormCGRKDSC(string RCVCode, string Sequence, string keyValue, string WorkPoint)
  7329. {
  7330. var queryParam = keyValue.ToJObject();
  7331. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  7332. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  7333. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  7334. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  7335. decimal LOTQTY = minPackQty;
  7336. string Pre = "KCP" + RCVCode + (Convert.ToInt32(Sequence)).ToString("D4");
  7337. string sql = string.Empty;
  7338. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  7339. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  7340. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  7341. string sqls = string.Empty;
  7342. string Colspan = "";
  7343. string str1 = "";
  7344. List<string> ExtensionIDList = new List<string>();
  7345. #region 装箱的功能
  7346. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  7347. string VenCode = queryParam["VenCode"].ToString();
  7348. int PackCount = 0;//每箱放的数量
  7349. int Pack_YuShu = 0;//需要平摊的数量
  7350. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  7351. List<PackModel> List_Pack = new List<PackModel>();
  7352. int ZQty = 0;
  7353. if (createPackCount > 0)
  7354. {
  7355. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  7356. if (Pack_YuShu == 0)
  7357. {
  7358. PackCount = (createPageCount / createPackCount);
  7359. }
  7360. else
  7361. {
  7362. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  7363. }
  7364. for (int jj = 0; jj < createPackCount; jj++)
  7365. {
  7366. object CARID = Guid.NewGuid();
  7367. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  7368. sql += @" INSERT INTO dbo.ICSContainer
  7369. ( ID,ContainerCode ,
  7370. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  7371. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  7372. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  7373. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  7374. PackModel PP = new PackModel();
  7375. PP.ID = CARID.ToString();
  7376. PP.PackCode = Carton;
  7377. if (jj < Pack_YuShu)
  7378. {
  7379. PP.FristBarIndex = ZQty;
  7380. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  7381. }
  7382. else
  7383. {
  7384. PP.FristBarIndex = ZQty;
  7385. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  7386. }
  7387. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  7388. List_Pack.Add(PP);
  7389. }
  7390. }
  7391. #endregion
  7392. for (int i = 0; i < createPageCount; i++)
  7393. {
  7394. if (i + 1 == createPageCount)
  7395. {
  7396. if (minPackQty * createPageCount > thisCreateQty)
  7397. {
  7398. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  7399. }
  7400. }
  7401. 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();
  7402. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  7403. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  7404. bool flag = true;
  7405. foreach (var item in ExtensionIDList)
  7406. {
  7407. if (item == Colspan + WorkPoint)
  7408. {
  7409. flag = false;
  7410. }
  7411. }
  7412. if (ExtensionID == null && flag == true)
  7413. {
  7414. str1 = Guid.NewGuid().ToString();
  7415. 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)
  7416. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  7417. 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(),
  7418. MUSER, MUSERNAME, WorkPoints);
  7419. }
  7420. else if (ExtensionID != null)
  7421. {
  7422. str1 = ExtensionID.ToString();
  7423. }
  7424. ExtensionIDList.Add(Colspan + WorkPoint);
  7425. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  7426. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  7427. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  7428. LotNo, RCVCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  7429. sql += string.Format(@"
  7430. insert into ICSInventoryLot
  7431. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  7432. select
  7433. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','22','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  7434. from ICSPurchaseReceive where RCVCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  7435. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, RCVCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  7436. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  7437. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  7438. sql += "\r\n";
  7439. //装箱的功能
  7440. if (List_Pack.Count > 0)
  7441. {
  7442. PackModel mm = new PackModel();
  7443. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  7444. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  7445. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  7446. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  7447. }
  7448. }
  7449. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  7450. return count;
  7451. }
  7452. /// <summary>
  7453. /// 采购入库单生成条码 保存(新)
  7454. /// </summary>
  7455. /// <param name="RCVCode"></param>
  7456. /// <param name="Sequence"></param>
  7457. /// <param name="keyValue"></param>
  7458. /// <param name="WorkPoint"></param>
  7459. /// <returns></returns>
  7460. public int SubmitFormCGRKDSCNew(string RCVCode, string Sequence, string keyValue, string WorkPoint)
  7461. {
  7462. var queryParam = keyValue.ToJObject();
  7463. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  7464. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  7465. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  7466. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  7467. List<decimal> lotQtys = new List<decimal>();
  7468. foreach (var jLotno in jLotnos)
  7469. {
  7470. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  7471. lotQtys.Add(qty);
  7472. }
  7473. int createPageCount = lotQtys.Count();
  7474. string Pre = "KCP" + RCVCode + (Convert.ToInt32(Sequence)).ToString("D4");
  7475. string sql = string.Empty;
  7476. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  7477. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  7478. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  7479. string sqls = string.Empty;
  7480. string Colspan = "";
  7481. string str1 = "";
  7482. List<string> ExtensionIDList = new List<string>();
  7483. #region 装箱的功能
  7484. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  7485. string VenCode = queryParam["VenCode"].ToString();
  7486. int PackCount = 0;//每箱放的数量
  7487. int Pack_YuShu = 0;//需要平摊的数量
  7488. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  7489. List<PackModel> List_Pack = new List<PackModel>();
  7490. int ZQty = 0;
  7491. if (createPackCount > 0)
  7492. {
  7493. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  7494. if (Pack_YuShu == 0)
  7495. {
  7496. PackCount = (createPageCount / createPackCount);
  7497. }
  7498. else
  7499. {
  7500. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  7501. }
  7502. for (int jj = 0; jj < createPackCount; jj++)
  7503. {
  7504. object CARID = Guid.NewGuid();
  7505. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  7506. sql += @" INSERT INTO dbo.ICSContainer
  7507. ( ID,ContainerCode ,
  7508. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  7509. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  7510. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  7511. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  7512. PackModel PP = new PackModel();
  7513. PP.ID = CARID.ToString();
  7514. PP.PackCode = Carton;
  7515. if (jj < Pack_YuShu)
  7516. {
  7517. PP.FristBarIndex = ZQty;
  7518. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  7519. }
  7520. else
  7521. {
  7522. PP.FristBarIndex = ZQty;
  7523. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  7524. }
  7525. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  7526. List_Pack.Add(PP);
  7527. }
  7528. }
  7529. #endregion
  7530. for (int i = 0; i < createPageCount; i++)
  7531. {
  7532. //if (i + 1 == createPageCount)
  7533. //{
  7534. // if (minPackQty * createPageCount > thisCreateQty)
  7535. // {
  7536. // LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  7537. // }
  7538. //}
  7539. decimal LOTQTY = lotQtys[i];
  7540. 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();
  7541. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  7542. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  7543. bool flag = true;
  7544. foreach (var item in ExtensionIDList)
  7545. {
  7546. if (item == Colspan + WorkPoint)
  7547. {
  7548. flag = false;
  7549. }
  7550. }
  7551. if (ExtensionID == null && flag == true)
  7552. {
  7553. str1 = Guid.NewGuid().ToString();
  7554. 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)
  7555. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  7556. 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(),
  7557. MUSER, MUSERNAME, WorkPoints);
  7558. }
  7559. else if (ExtensionID != null)
  7560. {
  7561. str1 = ExtensionID.ToString();
  7562. }
  7563. ExtensionIDList.Add(Colspan + WorkPoint);
  7564. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  7565. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  7566. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  7567. LotNo, RCVCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  7568. try
  7569. {
  7570. sql += string.Format(@"
  7571. insert into ICSInventoryLot
  7572. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  7573. select
  7574. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','22','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  7575. from ICSPurchaseReceive where RCVCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  7576. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, RCVCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  7577. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  7578. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  7579. sql += "\r\n";
  7580. }
  7581. catch (Exception EX)
  7582. {
  7583. throw EX;
  7584. }
  7585. //装箱的功能
  7586. if (List_Pack.Count > 0)
  7587. {
  7588. PackModel mm = new PackModel();
  7589. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  7590. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  7591. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  7592. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  7593. }
  7594. }
  7595. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  7596. return count;
  7597. }
  7598. /// <summary>
  7599. /// 委外采购入库生成条码
  7600. /// </summary>
  7601. /// <param name="queryJson"></param>
  7602. /// <param name="jqgridparam"></param>
  7603. /// <returns></returns>
  7604. public DataTable GetGridJsonOutPurchaseReceive(string queryJson, ref Pagination jqgridparam)
  7605. {
  7606. DataTable dt = new DataTable();
  7607. var queryParam = queryJson.ToJObject();
  7608. List<DbParameter> parameter = new List<DbParameter>();
  7609. object Figure = GetDecimalDigits();
  7610. #region [SQL]
  7611. string sql = @" select * from (select distinct a.ID,a.RCVCode,a.Sequence,a.WHCode,e.WarehouseName as WHName,a.InvCode, b.InvName,b.InvStd,b.InvUnit,d.POCode,d.Sequence as POSequence,
  7612. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity
  7613. ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount
  7614. ,CAST(a.RCVQuantity AS DECIMAL(38,{0})) as RCVQuantity
  7615. ,c.LOTQTY
  7616. ,isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays
  7617. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  7618. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  7619. a.EATTRIBUTE9,a.EATTRIBUTE10
  7620. from ICSOutsourcingReceive a
  7621. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  7622. left join (
  7623. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  7624. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='23'
  7625. where isnull(ee.EATTRIBUTE1,'')=''
  7626. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  7627. ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  7628. left join ICSPurchaseOrder d on a.SourceCode = d.POCode and a.SourceSequence = d.Sequence and a.WorkPoint=d.WorkPoint
  7629. left join ICSWarehouse e on a.WHCode=e.WarehouseCode and a.WorkPoint=e.WorkPoint
  7630. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  7631. where a.Type='1' ";
  7632. sql = string.Format(sql, Figure);
  7633. #endregion
  7634. if (!string.IsNullOrWhiteSpace(queryJson))
  7635. {
  7636. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  7637. {
  7638. sql += " and a.RCVCode like '%" + queryParam["POCode"].ToString() + "%' ";
  7639. }
  7640. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  7641. {
  7642. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  7643. }
  7644. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  7645. {
  7646. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  7647. }
  7648. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  7649. {
  7650. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  7651. }
  7652. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  7653. {
  7654. sql += " and a.CreateDateTime >= '" + queryParam["FromTime"].ToString() + "' ";
  7655. }
  7656. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  7657. {
  7658. sql += " and a.CreateDateTime <= '" + queryParam["ToTime"].ToString() + "' ";
  7659. }
  7660. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  7661. {
  7662. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  7663. }
  7664. }
  7665. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  7666. {
  7667. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  7668. }
  7669. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  7670. {
  7671. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  7672. }
  7673. sql += @" GROUP BY a.Id,a.RCVCode,a.Sequence,a.InvCode,A.Quantity,A.Amount,a.RCVQuantity,b.InvName,e.WarehouseName,a.WHCode,b.InvStd,b.InvUnit,b.EffectiveEnable,b.EffectiveDays,d.POCode,d.Sequence,c.LOTQTY,
  7674. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.EATTRIBUTE,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,a.EATTRIBUTE9,a.EATTRIBUTE10 ) t
  7675. where 1=1 ";
  7676. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  7677. {
  7678. string POStatus = queryParam["POStatus"].ToString();
  7679. if (POStatus == "0")
  7680. {
  7681. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  7682. }
  7683. else if (POStatus == "1")
  7684. {
  7685. sql += " and Quantity-ISNULL(LOTQTY,0)=0";
  7686. }
  7687. else
  7688. {
  7689. sql += " and Quantity-ISNULL(LOTQTY,0)<>0";
  7690. }
  7691. }
  7692. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  7693. }
  7694. /// <summary>
  7695. /// 委外采购入库获取单据信息
  7696. /// </summary>
  7697. /// <param name="FGGDMOCode"></param>
  7698. /// <param name="Sequence"></param>
  7699. /// <param name="WorkPoint"></param>
  7700. /// <returns></returns>
  7701. public DataTable GetSubGridJsonOutPurchaseReceiveByCreate(string RCVCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  7702. {
  7703. DataTable dt = new DataTable();
  7704. object Figure = GetDecimalDigits();
  7705. List<DbParameter> parameter = new List<DbParameter>();
  7706. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn001', " + Quantity + ",1,1,'')";
  7707. object Num = SqlHelper.ExecuteScalar(SeachNum);
  7708. string sql = $@"SELECT a.InvCode, " + Num + @" as Quantity, b.InvName, b.ClassCode, b.InvStd, b.InvUnit
  7709. , CAST ( a.Amount AS DECIMAL ( 38,6 )) AS Amount
  7710. , CAST ( isnull( c.LOTQTY, 0 ) AS DECIMAL ( 38,6 ) ) AS CreatedQty
  7711. , CAST ( ( " + Num + @"- ISNULL( c.LOTQTY, 0 ) ) AS DECIMAL ( 38,6 ) ) AS thisCreateQty
  7712. , isnull( b.EffectiveEnable, 0 ) AS EffectiveEnable
  7713. , CAST ( isnull( b.EffectiveDays, 0 ) AS DECIMAL ( 38,6 ) ) AS EffectiveDays, case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  7714. , e.ProjectCode, e.BatchCode, e.Version, e.Brand, e.cFree1, e.cFree2, e.cFree3, e.cFree4, e.cFree5, e.cFree6, e.cFree7, e.cFree8, e.cFree9, e.cFree10 ,
  7715. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  7716. FROM ICSOutsourcingReceive a
  7717. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode AND a.WorkPoint= b.WorkPoint
  7718. LEFT JOIN ( SELECT b.TransCode,b.TransSequence, SUM ( isnull( Quantity, 0 ) ) LOTQTY
  7719. FROM ICSInventoryLot a
  7720. LEFT JOIN ICSInventoryLotDetail b ON a.LotNo= b.LotNo AND a.Type= '23'
  7721. WHERE isnull( a.EATTRIBUTE1, '' ) = ''
  7722. GROUP BY
  7723. b.TransCode,
  7724. b.TransSequence
  7725. ) c ON a.RCVCode = c.TransCode AND a.Sequence = c.TransSequence
  7726. LEFT JOIN ICSExtension e ON a.ExtensionID= e.ID AND a.WorkPoint= e.WorkPoint
  7727. WHERE 1 = 1
  7728. and a.RCVCode='" + RCVCode + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoint + "'";
  7729. sql = string.Format(sql, Figure);
  7730. return Repository().FindTableBySql(sql.ToString());
  7731. }
  7732. /// <summary>
  7733. /// 委外采购入库单生成条码 保存
  7734. /// </summary>
  7735. /// <param name="RCVCode"></param>
  7736. /// <param name="Sequence"></param>
  7737. /// <param name="keyValue"></param>
  7738. /// <param name="WorkPoint"></param>
  7739. /// <returns></returns>
  7740. public int SubmitFormWWCGRKDSC(string RCVCode, string Sequence, string keyValue, string WorkPoint)
  7741. {
  7742. var queryParam = keyValue.ToJObject();
  7743. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  7744. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  7745. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  7746. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  7747. decimal LOTQTY = minPackQty;
  7748. string Pre = "KCP" + RCVCode + (Convert.ToInt32(Sequence)).ToString("D4");
  7749. string sql = string.Empty;
  7750. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  7751. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  7752. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  7753. string sqls = string.Empty;
  7754. string Colspan = "";
  7755. string str1 = "";
  7756. List<string> ExtensionIDList = new List<string>();
  7757. #region 装箱的功能
  7758. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  7759. string VenCode = queryParam["VenCode"].ToString();
  7760. int PackCount = 0;//每箱放的数量
  7761. int Pack_YuShu = 0;//需要平摊的数量
  7762. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  7763. List<PackModel> List_Pack = new List<PackModel>();
  7764. int ZQty = 0;
  7765. if (createPackCount > 0)
  7766. {
  7767. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  7768. if (Pack_YuShu == 0)
  7769. {
  7770. PackCount = (createPageCount / createPackCount);
  7771. }
  7772. else
  7773. {
  7774. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  7775. }
  7776. for (int jj = 0; jj < createPackCount; jj++)
  7777. {
  7778. object CARID = Guid.NewGuid();
  7779. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  7780. sql += @" INSERT INTO dbo.ICSContainer
  7781. ( ID,ContainerCode ,
  7782. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  7783. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  7784. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  7785. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  7786. PackModel PP = new PackModel();
  7787. PP.ID = CARID.ToString();
  7788. PP.PackCode = Carton;
  7789. if (jj < Pack_YuShu)
  7790. {
  7791. PP.FristBarIndex = ZQty;
  7792. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  7793. }
  7794. else
  7795. {
  7796. PP.FristBarIndex = ZQty;
  7797. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  7798. }
  7799. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  7800. List_Pack.Add(PP);
  7801. }
  7802. }
  7803. #endregion
  7804. for (int i = 0; i < createPageCount; i++)
  7805. {
  7806. if (i + 1 == createPageCount)
  7807. {
  7808. if (minPackQty * createPageCount > thisCreateQty)
  7809. {
  7810. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  7811. }
  7812. }
  7813. 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();
  7814. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  7815. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  7816. bool flag = true;
  7817. foreach (var item in ExtensionIDList)
  7818. {
  7819. if (item == Colspan + WorkPoint)
  7820. {
  7821. flag = false;
  7822. }
  7823. }
  7824. if (ExtensionID == null && flag == true)
  7825. {
  7826. str1 = Guid.NewGuid().ToString();
  7827. 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)
  7828. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  7829. 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(),
  7830. MUSER, MUSERNAME, WorkPoints);
  7831. }
  7832. else if (ExtensionID != null)
  7833. {
  7834. str1 = ExtensionID.ToString();
  7835. }
  7836. ExtensionIDList.Add(Colspan + WorkPoint);
  7837. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  7838. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  7839. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  7840. LotNo, RCVCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  7841. sql += string.Format(@"
  7842. insert into ICSInventoryLot
  7843. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  7844. select
  7845. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','23','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  7846. from ICSOutsourcingReceive where RCVCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  7847. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, RCVCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  7848. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  7849. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  7850. sql += "\r\n";
  7851. //装箱的功能
  7852. if (List_Pack.Count > 0)
  7853. {
  7854. PackModel mm = new PackModel();
  7855. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  7856. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  7857. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  7858. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  7859. }
  7860. }
  7861. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  7862. return count;
  7863. }
  7864. /// <summary>
  7865. /// 委外采购入库单生成条码 保存(新)
  7866. /// </summary>
  7867. /// <param name="RCVCode"></param>
  7868. /// <param name="Sequence"></param>
  7869. /// <param name="keyValue"></param>
  7870. /// <param name="WorkPoint"></param>
  7871. /// <returns></returns>
  7872. public int SubmitFormWWCGRKDSCNew(string RCVCode, string Sequence, string keyValue, string WorkPoint)
  7873. {
  7874. var queryParam = keyValue.ToJObject();
  7875. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  7876. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  7877. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  7878. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  7879. List<decimal> lotQtys = new List<decimal>();
  7880. foreach (var jLotno in jLotnos)
  7881. {
  7882. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  7883. lotQtys.Add(qty);
  7884. }
  7885. int createPageCount = lotQtys.Count();
  7886. string Pre = "KCP" + RCVCode + (Convert.ToInt32(Sequence)).ToString("D4");
  7887. string sql = string.Empty;
  7888. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  7889. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  7890. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  7891. string sqls = string.Empty;
  7892. string Colspan = "";
  7893. string str1 = "";
  7894. List<string> ExtensionIDList = new List<string>();
  7895. #region 装箱的功能
  7896. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  7897. string VenCode = queryParam["VenCode"].ToString();
  7898. int PackCount = 0;//每箱放的数量
  7899. int Pack_YuShu = 0;//需要平摊的数量
  7900. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  7901. List<PackModel> List_Pack = new List<PackModel>();
  7902. int ZQty = 0;
  7903. if (createPackCount > 0)
  7904. {
  7905. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  7906. if (Pack_YuShu == 0)
  7907. {
  7908. PackCount = (createPageCount / createPackCount);
  7909. }
  7910. else
  7911. {
  7912. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  7913. }
  7914. for (int jj = 0; jj < createPackCount; jj++)
  7915. {
  7916. object CARID = Guid.NewGuid();
  7917. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  7918. sql += @" INSERT INTO dbo.ICSContainer
  7919. ( ID,ContainerCode ,
  7920. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  7921. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  7922. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  7923. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  7924. PackModel PP = new PackModel();
  7925. PP.ID = CARID.ToString();
  7926. PP.PackCode = Carton;
  7927. if (jj < Pack_YuShu)
  7928. {
  7929. PP.FristBarIndex = ZQty;
  7930. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  7931. }
  7932. else
  7933. {
  7934. PP.FristBarIndex = ZQty;
  7935. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  7936. }
  7937. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  7938. List_Pack.Add(PP);
  7939. }
  7940. }
  7941. #endregion
  7942. for (int i = 0; i < createPageCount; i++)
  7943. {
  7944. //if (i + 1 == createPageCount)
  7945. //{
  7946. // if (minPackQty * createPageCount > thisCreateQty)
  7947. // {
  7948. // LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  7949. // }
  7950. //}
  7951. decimal LOTQTY = lotQtys[i];
  7952. 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();
  7953. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  7954. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  7955. bool flag = true;
  7956. foreach (var item in ExtensionIDList)
  7957. {
  7958. if (item == Colspan + WorkPoint)
  7959. {
  7960. flag = false;
  7961. }
  7962. }
  7963. if (ExtensionID == null && flag == true)
  7964. {
  7965. str1 = Guid.NewGuid().ToString();
  7966. 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)
  7967. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  7968. 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(),
  7969. MUSER, MUSERNAME, WorkPoints);
  7970. }
  7971. else if (ExtensionID != null)
  7972. {
  7973. str1 = ExtensionID.ToString();
  7974. }
  7975. ExtensionIDList.Add(Colspan + WorkPoint);
  7976. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  7977. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  7978. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  7979. LotNo, RCVCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  7980. try
  7981. {
  7982. sql += string.Format(@"
  7983. insert into ICSInventoryLot
  7984. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  7985. select
  7986. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','23','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  7987. from ICSOutsourcingReceive where RCVCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  7988. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, RCVCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / LOTQTY, queryParam["ExpirationDate"].ToString()
  7989. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  7990. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  7991. sql += "\r\n";
  7992. }
  7993. catch (Exception EX)
  7994. {
  7995. throw EX;
  7996. }
  7997. //装箱的功能
  7998. if (List_Pack.Count > 0)
  7999. {
  8000. PackModel mm = new PackModel();
  8001. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  8002. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  8003. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  8004. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  8005. }
  8006. }
  8007. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  8008. return count;
  8009. }
  8010. /// <summary>
  8011. /// 铭锋 退货调拨申请单生成条码
  8012. /// </summary>
  8013. /// <param name="queryJson"></param>
  8014. /// <param name="jqgridparam"></param>
  8015. /// <returns></returns>
  8016. public DataTable GetGridJsonTransferApplication(string queryJson, ref Pagination jqgridparam)
  8017. {
  8018. DataTable dt = new DataTable();
  8019. var queryParam = queryJson.ToJObject();
  8020. List<DbParameter> parameter = new List<DbParameter>();
  8021. object Figure = GetDecimalDigits();
  8022. #region [SQL]
  8023. string sql = @" select * from (select distinct a.ID,a.TransferNO,a.Sequence
  8024. ,a.FromWarehouseCode as FromWHCode,e.WarehouseName as FromWHName,a.FromLocationCode as FromLotCode,h.LocationName as FromLotName,
  8025. a.ToWarehouseCode as ToWHCode,g.WarehouseName as ToWHName,a.ToLocationCode as ToLotCode,i.LocationName as ToLotName,
  8026. a.InvCode, b.InvName,b.InvStd,b.InvUnit,
  8027. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity
  8028. ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount
  8029. ,CAST(a.TransferQuantity AS DECIMAL(38,{0})) as TransferQuantity
  8030. ,c.LOTQTY
  8031. ,isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays
  8032. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  8033. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  8034. a.EATTRIBUTE9,a.EATTRIBUTE10
  8035. from ICSTransferApplication a
  8036. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8037. left join (
  8038. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8039. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='202'
  8040. where isnull(ee.EATTRIBUTE1,'')=''
  8041. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8042. ) c on a.TransferNO=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8043. left join ICSWarehouse e on a.FromWarehouseCode=e.WarehouseCode and a.WorkPoint=e.WorkPoint
  8044. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8045. left join ICSWarehouse g on a.ToWarehouseCode=g.WarehouseCode and a.WorkPoint=g.WorkPoint
  8046. left join ICSLocation h on a.FromLocationCode=h.LocationCode and a.WorkPoint=h.WorkPoint
  8047. left join ICSLocation i on a.ToLocationCode=i.LocationCode and a.WorkPoint=i.WorkPoint
  8048. where 1 = 1";
  8049. sql = string.Format(sql, Figure);
  8050. #endregion
  8051. if (!string.IsNullOrWhiteSpace(queryJson))
  8052. {
  8053. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  8054. {
  8055. sql += " and a.TransferNO like '%" + queryParam["POCode"].ToString() + "%' ";
  8056. }
  8057. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  8058. {
  8059. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  8060. }
  8061. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  8062. {
  8063. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  8064. }
  8065. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  8066. {
  8067. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  8068. }
  8069. }
  8070. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  8071. {
  8072. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  8073. }
  8074. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  8075. //{
  8076. // sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  8077. //}
  8078. sql += @"GROUP BY a.Id,a.TransferNO,a.Sequence,a.InvCode,A.Quantity,A.Amount,a.TransferQuantity,b.InvName,e.WarehouseName,a.FromWarehouseCode,e.WarehouseName,a.FromLocationCode,h.LocationName,
  8079. a.ToWarehouseCode,g.WarehouseName,a.ToLocationCode,i.LocationName,b.InvStd,b.InvUnit,b.EffectiveEnable,b.EffectiveDays,c.LOTQTY,
  8080. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,a.EATTRIBUTE9,a.EATTRIBUTE10 ) t
  8081. where 1=1 ";
  8082. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  8083. {
  8084. string POStatus = queryParam["POStatus"].ToString();
  8085. if (POStatus == "0")
  8086. {
  8087. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  8088. }
  8089. else if (POStatus == "1")
  8090. {
  8091. sql += " and Quantity-ISNULL(LOTQTY,0)=0";
  8092. }
  8093. else
  8094. {
  8095. sql += " and Quantity-ISNULL(LOTQTY,0)<>0";
  8096. }
  8097. }
  8098. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  8099. }
  8100. /// <summary>
  8101. /// 铭锋 退货调拨申请单获取单据信息
  8102. /// </summary>
  8103. /// <param name="TransferNO"></param>
  8104. /// <param name="Sequence"></param>
  8105. /// <param name="WorkPoint"></param>
  8106. /// <returns></returns>
  8107. public DataTable GetSubGridJsonTransferApplicationByCreate(string TransferNO, string Sequence, string WorkPoint)
  8108. {
  8109. DataTable dt = new DataTable();
  8110. object Figure = GetDecimalDigits();
  8111. List<DbParameter> parameter = new List<DbParameter>();
  8112. string sql = $@" SELECT a.InvCode,a.Quantity, b.InvName, b.ClassCode, b.InvStd, b.InvUnit
  8113. , CAST ( xx.Quantity AS DECIMAL ( 38,6 )) AS Amount
  8114. , CAST ( isnull( c.LOTQTY, 0 ) AS DECIMAL ( 38,6 ) ) AS CreatedQty
  8115. , CAST ( ( xx.Quantity- ISNULL( c.LOTQTY, 0 ) ) AS DECIMAL ( 38,6 ) ) AS thisCreateQty
  8116. , isnull( b.EffectiveEnable, 0 ) AS EffectiveEnable
  8117. , CAST ( isnull( b.EffectiveDays, 0 ) AS DECIMAL ( 38,6 ) ) AS EffectiveDays,isnull(b.EATTRIBUTE2,'') as MPQ
  8118. , e.ProjectCode, e.BatchCode, e.Version, e.Brand, e.cFree1, e.cFree2, e.cFree3, e.cFree4, e.cFree5, e.cFree6, e.cFree7, e.cFree8, e.cFree9, e.cFree10 ,
  8119. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  8120. FROM ICSTransferApplication a
  8121. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode AND a.WorkPoint= b.WorkPoint
  8122. LEFT JOIN ( SELECT a.Id, a.InvCode, a.Sequence, a.WorkPoint,CASE WHEN b.OverInType= '1' THEN a.Quantity* ( 1+b.OverInValue ) WHEN b.OverInType= '2' THEN a.Quantity+ b.OverInValue WHEN b.OverInType= '3' THEN 999999 ELSE a.Quantity
  8123. END AS Quantity
  8124. FROM ICSTransferApplication a
  8125. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode
  8126. AND a.WorkPoint= b.WorkPoint
  8127. ) xx ON xx.Id= a.Id
  8128. LEFT JOIN ( SELECT b.TransCode,b.TransSequence, SUM ( isnull( Quantity, 0 ) ) LOTQTY
  8129. FROM ICSInventoryLot a
  8130. LEFT JOIN ICSInventoryLotDetail b ON a.LotNo= b.LotNo AND a.Type= '202'
  8131. WHERE isnull( a.EATTRIBUTE1, '' ) = ''
  8132. GROUP BY
  8133. b.TransCode,
  8134. b.TransSequence
  8135. ) c ON a.TransferNO = c.TransCode AND a.Sequence = c.TransSequence
  8136. LEFT JOIN ICSExtension e ON a.ExtensionID= e.ID AND a.WorkPoint= e.WorkPoint
  8137. WHERE 1 = 1
  8138. and a.TransferNO='{TransferNO}' and a.Sequence='{Sequence}'
  8139. and a.WorkPoint='{WorkPoint}'";
  8140. sql = string.Format(sql, Figure);
  8141. return Repository().FindTableBySql(sql.ToString());
  8142. }
  8143. /// <summary>
  8144. /// 铭锋 退货调拨申请单生成条码 保存
  8145. /// </summary>
  8146. /// <param name="TransferNO"></param>
  8147. /// <param name="Sequence"></param>
  8148. /// <param name="keyValue"></param>
  8149. /// <param name="WorkPoint"></param>
  8150. /// <returns></returns>
  8151. public int SubmitFormTransferApplicatioSave(string TransferNO, string Sequence, string keyValue, string WorkPoint)
  8152. {
  8153. var queryParam = keyValue.ToJObject();
  8154. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  8155. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  8156. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  8157. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  8158. decimal LOTQTY = minPackQty;
  8159. string Pre = "KCP" + TransferNO + (Convert.ToInt32(Sequence)).ToString("D4");
  8160. string sql = string.Empty;
  8161. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  8162. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  8163. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  8164. string sqls = string.Empty;
  8165. string Colspan = "";
  8166. string str1 = "";
  8167. List<string> ExtensionIDList = new List<string>();
  8168. #region 装箱的功能
  8169. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  8170. string VenCode = queryParam["VenCode"].ToString();
  8171. int PackCount = 0;//每箱放的数量
  8172. int Pack_YuShu = 0;//需要平摊的数量
  8173. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  8174. List<PackModel> List_Pack = new List<PackModel>();
  8175. int ZQty = 0;
  8176. if (createPackCount > 0)
  8177. {
  8178. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  8179. if (Pack_YuShu == 0)
  8180. {
  8181. PackCount = (createPageCount / createPackCount);
  8182. }
  8183. else
  8184. {
  8185. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  8186. }
  8187. for (int jj = 0; jj < createPackCount; jj++)
  8188. {
  8189. object CARID = Guid.NewGuid();
  8190. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  8191. sql += @" INSERT INTO dbo.ICSContainer
  8192. ( ID,ContainerCode ,
  8193. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  8194. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  8195. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  8196. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  8197. PackModel PP = new PackModel();
  8198. PP.ID = CARID.ToString();
  8199. PP.PackCode = Carton;
  8200. if (jj < Pack_YuShu)
  8201. {
  8202. PP.FristBarIndex = ZQty;
  8203. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  8204. }
  8205. else
  8206. {
  8207. PP.FristBarIndex = ZQty;
  8208. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  8209. }
  8210. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  8211. List_Pack.Add(PP);
  8212. }
  8213. }
  8214. #endregion
  8215. for (int i = 0; i < createPageCount; i++)
  8216. {
  8217. if (i + 1 == createPageCount)
  8218. {
  8219. if (minPackQty * createPageCount > thisCreateQty)
  8220. {
  8221. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  8222. }
  8223. }
  8224. 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();
  8225. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  8226. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  8227. bool flag = true;
  8228. foreach (var item in ExtensionIDList)
  8229. {
  8230. if (item == Colspan + WorkPoint)
  8231. {
  8232. flag = false;
  8233. }
  8234. }
  8235. if (ExtensionID == null && flag == true)
  8236. {
  8237. str1 = Guid.NewGuid().ToString();
  8238. 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)
  8239. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  8240. 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(),
  8241. MUSER, MUSERNAME, WorkPoints);
  8242. }
  8243. else if (ExtensionID != null)
  8244. {
  8245. str1 = ExtensionID.ToString();
  8246. }
  8247. ExtensionIDList.Add(Colspan + WorkPoint);
  8248. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  8249. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  8250. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  8251. LotNo, TransferNO, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  8252. sql += string.Format(@"
  8253. insert into ICSInventoryLot
  8254. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  8255. select
  8256. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','202','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  8257. from ICSTransferApplication where TransferNO='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  8258. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, TransferNO, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  8259. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  8260. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  8261. sql += "\r\n";
  8262. //装箱的功能
  8263. if (List_Pack.Count > 0)
  8264. {
  8265. PackModel mm = new PackModel();
  8266. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  8267. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  8268. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  8269. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  8270. }
  8271. }
  8272. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  8273. return count;
  8274. }
  8275. public int SubmitFormTransferApplicatioSaveNew(string TransferNO, string Sequence, string keyValue, string WorkPoint)
  8276. {
  8277. var queryParam = keyValue.ToJObject();
  8278. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  8279. //decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  8280. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  8281. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  8282. List<decimal> lotQtys = new List<decimal>();
  8283. foreach (var jLotno in jLotnos)
  8284. {
  8285. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  8286. lotQtys.Add(qty);
  8287. }
  8288. int createPageCount = lotQtys.Count();
  8289. string Pre = "KCP" + TransferNO + (Convert.ToInt32(Sequence)).ToString("D4");
  8290. string sql = string.Empty;
  8291. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  8292. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  8293. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  8294. string sqls = string.Empty;
  8295. string Colspan = "";
  8296. string str1 = "";
  8297. List<string> ExtensionIDList = new List<string>();
  8298. #region 装箱的功能
  8299. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  8300. string VenCode = queryParam["VenCode"].ToString();
  8301. int PackCount = 0;//每箱放的数量
  8302. int Pack_YuShu = 0;//需要平摊的数量
  8303. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  8304. List<PackModel> List_Pack = new List<PackModel>();
  8305. int ZQty = 0;
  8306. if (createPackCount > 0)
  8307. {
  8308. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  8309. if (Pack_YuShu == 0)
  8310. {
  8311. PackCount = (createPageCount / createPackCount);
  8312. }
  8313. else
  8314. {
  8315. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  8316. }
  8317. for (int jj = 0; jj < createPackCount; jj++)
  8318. {
  8319. object CARID = Guid.NewGuid();
  8320. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  8321. sql += @" INSERT INTO dbo.ICSContainer
  8322. ( ID,ContainerCode ,
  8323. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  8324. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  8325. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  8326. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  8327. PackModel PP = new PackModel();
  8328. PP.ID = CARID.ToString();
  8329. PP.PackCode = Carton;
  8330. if (jj < Pack_YuShu)
  8331. {
  8332. PP.FristBarIndex = ZQty;
  8333. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  8334. }
  8335. else
  8336. {
  8337. PP.FristBarIndex = ZQty;
  8338. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  8339. }
  8340. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  8341. List_Pack.Add(PP);
  8342. }
  8343. }
  8344. #endregion
  8345. for (int i = 0; i < createPageCount; i++)
  8346. {
  8347. var LOTQTY = lotQtys[i];
  8348. 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();
  8349. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  8350. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  8351. bool flag = true;
  8352. foreach (var item in ExtensionIDList)
  8353. {
  8354. if (item == Colspan + WorkPoint)
  8355. {
  8356. flag = false;
  8357. }
  8358. }
  8359. if (ExtensionID == null && flag == true)
  8360. {
  8361. str1 = Guid.NewGuid().ToString();
  8362. 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)
  8363. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  8364. 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(),
  8365. MUSER, MUSERNAME, WorkPoints);
  8366. }
  8367. else if (ExtensionID != null)
  8368. {
  8369. str1 = ExtensionID.ToString();
  8370. }
  8371. ExtensionIDList.Add(Colspan + WorkPoint);
  8372. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  8373. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  8374. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  8375. LotNo, TransferNO, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  8376. sql += string.Format(@"
  8377. insert into ICSInventoryLot
  8378. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  8379. select
  8380. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','202','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  8381. from ICSTransferApplication where TransferNO='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  8382. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, TransferNO, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  8383. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  8384. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  8385. sql += "\r\n";
  8386. //装箱的功能
  8387. if (List_Pack.Count > 0)
  8388. {
  8389. PackModel mm = new PackModel();
  8390. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  8391. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  8392. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  8393. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  8394. }
  8395. }
  8396. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  8397. return count;
  8398. }
  8399. public DataTable GetSubGridJsonFCPCreate(string FCPMOCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  8400. {
  8401. DataTable dt = new DataTable();
  8402. object Figure = GetDecimalDigits();
  8403. List<DbParameter> parameter = new List<DbParameter>();
  8404. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn014', " + Quantity + ",1,2,'')";
  8405. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8406. string sql = @"
  8407. select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,CAST( a.Amount as DECIMAL(38,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  8408. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,
  8409. isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays, case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  8410. ,e.ProjectCode,e.BatchCode,e.Version,e.Brand,e.cFree1,e.cFree2,e.cFree3,e.cFree4,e.cFree5,e.cFree6,e.cFree7,e.cFree8,e.cFree9,e.cFree10,
  8411. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  8412. from ICSMOPick a
  8413. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  8414. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8415. left join (
  8416. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  8417. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='18'
  8418. where isnull(a.EATTRIBUTE1,'')=''
  8419. group by b.TransCode,b.TransSequence
  8420. ) c on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence
  8421. left join ICSExtension e on d.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  8422. WHERE 1=1
  8423. and d.MOCode='" + FCPMOCode + "' and d.Sequence+'~'+a.Sequence='" + Sequence + "'";
  8424. sql += " and a.WorkPoint='" + WorkPoint + "'";
  8425. sql = string.Format(sql, Figure);
  8426. return Repository().FindTableBySql(sql.ToString());
  8427. }
  8428. //副产品
  8429. public int SubmitFormFCP(string FCPMOCode, string Sequence, string keyValue, string WorkPoint)
  8430. {
  8431. var queryParam = keyValue.ToJObject();
  8432. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  8433. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  8434. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  8435. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  8436. decimal LOTQTY = minPackQty;
  8437. string Sequences = Sequence.Replace("~", "");
  8438. string Pre = "FCP" + FCPMOCode + (Convert.ToInt32(Sequences)).ToString("D4");
  8439. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  8440. string sql = string.Empty;
  8441. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  8442. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  8443. string sqls = string.Empty;
  8444. string Colspan = "";
  8445. string str1 = "";
  8446. List<string> ExtensionIDList = new List<string>();
  8447. #region 装箱的功能
  8448. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  8449. string VenCode = queryParam["VenCode"].ToString();
  8450. int PackCount = 0;//每箱放的数量
  8451. int Pack_YuShu = 0;//需要平摊的数量
  8452. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  8453. List<PackModel> List_Pack = new List<PackModel>();
  8454. int ZQty = 0;
  8455. if (createPackCount > 0)
  8456. {
  8457. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  8458. if (Pack_YuShu == 0)
  8459. {
  8460. PackCount = (createPageCount / createPackCount);
  8461. }
  8462. else
  8463. {
  8464. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  8465. }
  8466. for (int jj = 0; jj < createPackCount; jj++)
  8467. {
  8468. object CARID = Guid.NewGuid();
  8469. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  8470. sql += @" INSERT INTO dbo.ICSContainer
  8471. ( ID,ContainerCode ,
  8472. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  8473. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  8474. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  8475. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  8476. PackModel PP = new PackModel();
  8477. PP.ID = CARID.ToString();
  8478. PP.PackCode = Carton;
  8479. if (jj < Pack_YuShu)
  8480. {
  8481. PP.FristBarIndex = ZQty;
  8482. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  8483. }
  8484. else
  8485. {
  8486. PP.FristBarIndex = ZQty;
  8487. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  8488. }
  8489. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  8490. List_Pack.Add(PP);
  8491. }
  8492. }
  8493. #endregion
  8494. for (int i = 0; i < createPageCount; i++)
  8495. {
  8496. if (i + 1 == createPageCount)
  8497. {
  8498. if (minPackQty * createPageCount > thisCreateQty)
  8499. {
  8500. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  8501. }
  8502. }
  8503. 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();
  8504. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  8505. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  8506. bool flag = true;
  8507. foreach (var item in ExtensionIDList)
  8508. {
  8509. if (item == Colspan + WorkPoint)
  8510. {
  8511. flag = false;
  8512. }
  8513. }
  8514. if (ExtensionID == null && flag == true)
  8515. {
  8516. str1 = Guid.NewGuid().ToString();
  8517. 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)
  8518. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  8519. 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(),
  8520. MUSER, MUSERNAME, WorkPoints);
  8521. }
  8522. else if (ExtensionID != null)
  8523. {
  8524. str1 = ExtensionID.ToString();
  8525. }
  8526. ExtensionIDList.Add(Colspan + WorkPoint);
  8527. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  8528. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  8529. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  8530. LotNo, FCPMOCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  8531. sql += string.Format(@"insert into ICSInventoryLot
  8532. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  8533. select
  8534. newid(),'{0}',a.InvCode,'{1}','{10}','{2}','{8}','18','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  8535. from ICSMOPick a left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3' where d.MOCode='{6}' and d.Sequence+'~'+a.Sequence='{7}' and a.WorkPoint='{5}' ",
  8536. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, FCPMOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  8537. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  8538. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  8539. sql += "\r\n";
  8540. //装箱的功能
  8541. if (List_Pack.Count > 0)
  8542. {
  8543. PackModel mm = new PackModel();
  8544. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  8545. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  8546. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  8547. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  8548. }
  8549. }
  8550. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  8551. return count;
  8552. }
  8553. public bool GetGeneratedNum(string Code, string Sequence, string Type, string thisCreateQty, string InvCode, string Quantitys)
  8554. {
  8555. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  8556. DataTable dt = new DataTable();
  8557. List<DbParameter> parameter = new List<DbParameter>();
  8558. string sql = string.Empty;
  8559. bool flag = true;
  8560. if (Type == "1")
  8561. {
  8562. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn017', " + Quantitys + ",1,2,'')";
  8563. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8564. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8565. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8566. from ICSMOApplyNegDetail a
  8567. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  8568. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8569. left join (
  8570. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8571. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='1'
  8572. where isnull(ee.EATTRIBUTE1,'')=''
  8573. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8574. )c
  8575. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8576. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8577. where d.Type='1' and d.Status='2'
  8578. and a.ApplyNegCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8579. }
  8580. if (Type == "2")
  8581. {
  8582. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn008', " + Quantitys + ",1,2,'')";
  8583. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8584. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8585. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8586. from ICSOApplyNegDetail a
  8587. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  8588. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8589. left join (
  8590. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8591. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='2'
  8592. where isnull(ee.EATTRIBUTE1,'')=''
  8593. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8594. )c
  8595. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8596. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8597. WHERE d.Type='1' and a.OApplyNegCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8598. }
  8599. if (Type == "3")
  8600. {
  8601. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn011', " + Quantitys + ",1,2,'')";
  8602. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8603. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8604. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8605. from ICSMO a
  8606. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8607. left join (
  8608. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8609. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='3'
  8610. where isnull(ee.EATTRIBUTE1,'')=''
  8611. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8612. )c
  8613. on a.MOCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8614. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8615. WHERE 1=1 and a.MOStatus<>'3' and a.MOCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8616. }
  8617. if (Type == "4")
  8618. {
  8619. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn020', " + Quantitys + ",1,3,'')";
  8620. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8621. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8622. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8623. from ICSSDN a
  8624. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8625. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8626. left join(select a.SDNCode,a.Sequence,a.WorkPoint,
  8627. case when b.OverInType='1' then a.Quantity*(1+b.OverInValue) when b.OverInType='2' then a.Quantity+b.OverInValue when b.OverInType='3' then 999999 else a.Quantity end as Quantity
  8628. from ICSSDN a
  8629. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint) xx on xx.SDNCode=a.SDNCode and xx.Sequence=a.Sequence and xx.WorkPoint=a.WorkPoint
  8630. left join (
  8631. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8632. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='4'
  8633. where isnull(ee.EATTRIBUTE1,'')=''
  8634. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8635. )c
  8636. on a.SDNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8637. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8638. where a.Type='2'
  8639. and a.SDNCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8640. }
  8641. if (Type == "5")
  8642. {
  8643. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn021', " + Quantitys + ",1,4,'')";
  8644. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8645. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8646. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8647. from ICSOtherIn a
  8648. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8649. left join(select a.InCode,a.Sequence,a.WorkPoint,
  8650. case when b.OverInType='1' then a.Quantity*(1+b.OverInValue) when b.OverInType='2' then a.Quantity+b.OverInValue when b.OverInType='3' then 999999 else a.Quantity end as Quantity
  8651. from ICSOtherIn a
  8652. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint) xx on xx.InCode=a.InCode and xx.Sequence=a.Sequence and xx.WorkPoint=a.WorkPoint
  8653. left join (
  8654. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8655. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='5'
  8656. where isnull(ee.EATTRIBUTE1,'')=''
  8657. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8658. )c
  8659. on a.InCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8660. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8661. where a.Status='1' and ISNULL(a.EATTRIBUTE2,'1')='1'
  8662. and a.InCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8663. }
  8664. if (Type == "6")
  8665. {
  8666. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn023', " + Quantitys + ",1,4,'')";
  8667. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8668. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8669. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8670. from ICSReturn a
  8671. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8672. left join(select a.ReturnCode,a.Sequence,a.WorkPoint,
  8673. case when b.OverInType='1' then a.Quantity*(1+b.OverInValue) when b.OverInType='2' then a.Quantity+b.OverInValue when b.OverInType='3' then 999999 else a.Quantity end as Quantity
  8674. from ICSReturn a
  8675. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint) xx on xx.ReturnCode=a.ReturnCode and xx.Sequence=a.Sequence and xx.WorkPoint=a.WorkPoint
  8676. left join (
  8677. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8678. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='6'
  8679. where isnull(ee.EATTRIBUTE1,'')=''
  8680. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8681. ) c on a.ReturnCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8682. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8683. where a.Status='2'
  8684. and a.ReturnCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8685. }
  8686. if (Type == "7")
  8687. {
  8688. //锐腾添加退补逻辑
  8689. sql = @" select distinct CAST(isnull(xx.Quantity,0) AS DECIMAL(38,8)) as Quantity ,
  8690. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8691. from ICSDeliveryNotice a
  8692. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8693. left join(select a.DNCode,a.Sequence,a.WorkPoint,
  8694. " + Quantitys + @"*Convert(float,(ISNULL(a.EATTRIBUTE11,1)))+ISNULL(f.Quantity,0)+ISNULL(j.Quantity,0) as Quantity
  8695. from ICSDeliveryNotice a
  8696. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8697. left join ICSDeliveryNotice f ON a.DNDetailID=Isnull(f.EATTRIBUTE8,'') and a.WorkPoint=f.WorkPoint and f.DNType='2' and f.EATTRIBUTE7='退'
  8698. left join (SELECT PODetailID,WorkPoint,sum(Quantity) Quantity FROM ICSDeliveryNotice WHERE DNType='3' GROUP BY PODetailID,WorkPoint )j ON a.DNDetailID=j.PODetailID and a.WorkPoint=j.WorkPoint) xx on xx.DNCode=a.DNCode and xx.Sequence=a.Sequence and xx.WorkPoint=a.WorkPoint
  8699. left join (
  8700. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8701. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='7'
  8702. where isnull(ee.EATTRIBUTE1,'')=''
  8703. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8704. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8705. inner join ICSPurchaseOrder d on a.POID=d.POID and a.PODetailID=d.PODetailID and a.WorkPoint=d.WorkPoint
  8706. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  8707. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8708. where a.DNType='1' and a.Status='2' and a.ASNCode is null
  8709. and a.DNCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8710. }
  8711. if (Type == "8")
  8712. {
  8713. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn005', " + Quantitys + ",1,1,'')";
  8714. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8715. //锐腾添加退补逻辑
  8716. sql = @" select distinct CAST(isnull(xx.Quantity,0) AS DECIMAL(38,8)) as Quantity ,
  8717. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8718. from ICSODeliveryNotice a
  8719. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8720. left join(select a.ODNCode,a.Sequence,a.WorkPoint, " + Num + @"+ISNULL(f.Quantity,0)+ISNULL(j.Quantity,0) as Quantity
  8721. from ICSODeliveryNotice a
  8722. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8723. left join ICSODeliveryNotice f ON a.ODNDetailID=Isnull(f.EATTRIBUTE4,'') and a.WorkPoint=f.WorkPoint and f.ODNType='2' and f.EATTRIBUTE3='退'
  8724. left join (SELECT OODetailID,WorkPoint,sum(Quantity) Quantity FROM ICSODeliveryNotice WHERE ODNType='3' GROUP BY OODetailID,WorkPoint )j ON a.ODNDetailID=j.OODetailID and a.WorkPoint=j.WorkPoint) xx on xx.ODNCode=a.ODNCode and xx.Sequence=a.Sequence and xx.WorkPoint=a.WorkPoint
  8725. left join (
  8726. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8727. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='8'
  8728. where isnull(ee.EATTRIBUTE1,'')=''
  8729. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8730. ) c on a.ODNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8731. inner join ICSOutsourcingOrder d on a.OOID=d.OOID and a.OODetailID=d.OODetailID and a.WorkPoint=d.WorkPoint
  8732. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  8733. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8734. where a.ODNType='1' and a.Status='2' and a.OASNCode is null
  8735. and a.ODNCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8736. }
  8737. if (Type == "9")
  8738. {
  8739. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn013', " + Quantitys + ",1,2,'')";
  8740. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8741. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8742. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8743. from ICSManufactureReceive a
  8744. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8745. left join (
  8746. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8747. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='9'
  8748. where isnull(ee.EATTRIBUTE1,'')=''
  8749. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8750. ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8751. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8752. where a.Status='1' and a.Type='1'
  8753. and a.RCVCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8754. }
  8755. if (Type == "10")
  8756. {
  8757. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn003', " + Quantitys + ",1,1,'')";
  8758. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8759. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8760. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8761. from ICSDeliveryNotice a
  8762. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8763. left join (
  8764. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8765. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='10'
  8766. where isnull(ee.EATTRIBUTE1,'')=''
  8767. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8768. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8769. --inner join ICSPurchaseOrder d on a.POID=d.POID and a.PODetailID=d.PODetailID and a.WorkPoint=d.WorkPoint
  8770. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  8771. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8772. where a.DNType='3' and a.Status='2' and a.EATTRIBUTE1 is NOT null
  8773. and a.DNCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8774. }
  8775. if (Type == "11")
  8776. {
  8777. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn006', " + Quantitys + ",1,1,'')";
  8778. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8779. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8780. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8781. from ICSODeliveryNotice a
  8782. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8783. left join (
  8784. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8785. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='11'
  8786. where isnull(ee.EATTRIBUTE1,'')=''
  8787. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8788. ) c on a.ODNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8789. --inner join ICSOutsourcingOrder d on a.OOID=d.OOID and a.OODetailID=d.OODetailID and a.WorkPoint=d.WorkPoint
  8790. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  8791. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8792. where a.ODNType='3' and a.Status='2' and a.EATTRIBUTE1 is NOT null
  8793. and a.ODNCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8794. }
  8795. if (Type == "12")
  8796. {
  8797. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn018', " + Quantitys + ",1,2,'')";
  8798. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8799. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8800. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8801. from ICSMOApplyNegDetail a
  8802. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  8803. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8804. left join (
  8805. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8806. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='12'
  8807. where isnull(ee.EATTRIBUTE1,'')=''
  8808. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8809. )c
  8810. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8811. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8812. WHERE d.Type='2' and d.Status='2'
  8813. and a.ApplyNegCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8814. }
  8815. if (Type == "13")
  8816. {
  8817. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn019', " + Quantitys + ",1,2,'')";
  8818. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8819. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8820. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8821. from ICSMOApplyNegDetail a
  8822. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  8823. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8824. left join (
  8825. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8826. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='13'
  8827. where isnull(ee.EATTRIBUTE1,'')=''
  8828. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8829. )c
  8830. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8831. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8832. WHERE d.Type='3' and d.Status='2'
  8833. and a.ApplyNegCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8834. }
  8835. if (Type == "14")
  8836. {
  8837. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn009', " + Quantitys + ",1,1,'')";
  8838. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8839. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8840. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8841. from ICSOApplyNegDetail a
  8842. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  8843. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8844. left join (
  8845. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8846. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='14'
  8847. where isnull(ee.EATTRIBUTE1,'')=''
  8848. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8849. )c
  8850. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8851. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8852. WHERE d.Type='2'
  8853. and a.OApplyNegCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8854. }
  8855. if (Type == "15")
  8856. {
  8857. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn010', " + Quantitys + ",1,1,'')";
  8858. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8859. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8860. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8861. from ICSOApplyNegDetail a
  8862. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  8863. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8864. left join (
  8865. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8866. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='15'
  8867. where isnull(ee.EATTRIBUTE1,'')=''
  8868. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8869. )c
  8870. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8871. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8872. WHERE d.Type='3'
  8873. and a.OApplyNegCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8874. }
  8875. if (Type == "16")
  8876. {
  8877. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn015', " + Quantitys + ",1,2,'')";
  8878. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8879. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8880. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8881. from ICSMOPick a
  8882. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  8883. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8884. left join (
  8885. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8886. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='16'
  8887. where isnull(ee.EATTRIBUTE1,'')=''
  8888. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8889. )c
  8890. on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8891. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8892. where a.EATTRIBUTE1='1' and d.EATTRIBUTE1='1'
  8893. and d.MOCode='" + Code + "' and d.Sequence+'~'+a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8894. }
  8895. if (Type == "18")
  8896. {
  8897. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn014', " + Quantitys + ",1,2,'')";
  8898. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8899. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8900. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8901. from ICSMOPick a
  8902. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  8903. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8904. left join (
  8905. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8906. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='18'
  8907. where isnull(ee.EATTRIBUTE1,'')=''
  8908. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8909. )c
  8910. on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8911. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8912. where a.EATTRIBUTE1='1'
  8913. and d.MOCode='" + Code + "' and d.Sequence+'~'+a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8914. }
  8915. if (Type == "22")
  8916. {
  8917. sql = @" select distinct CAST(isnull(xx.Quantity,0) AS DECIMAL(38,8)) as Quantity ,
  8918. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8919. from ICSPurchaseReceive a
  8920. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8921. left join(select a.RCVCode,a.Sequence,a.WorkPoint,
  8922. case when b.OverInType='1' then a.Quantity*(1+b.OverInValue) when b.OverInType='2' then a.Quantity+b.OverInValue when b.OverInType='3' then 999999 else a.Quantity end as Quantity
  8923. from ICSPurchaseReceive a
  8924. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint) xx on xx.RCVCode=a.RCVCode and xx.Sequence=a.Sequence and xx.WorkPoint=a.WorkPoint
  8925. left join (
  8926. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8927. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='22'
  8928. where isnull(ee.EATTRIBUTE1,'')=''
  8929. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8930. ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8931. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8932. where a.Status='1'
  8933. and a.RCVCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8934. }
  8935. if (Type == "23")
  8936. {
  8937. sql = @" select distinct CAST(isnull(xx.Quantity,0) AS DECIMAL(38,8)) as Quantity ,
  8938. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8939. from ICSOutsourcingReceive a
  8940. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8941. left join(select a.RCVCode,a.Sequence,a.WorkPoint,
  8942. case when b.OverInType='1' then a.Quantity*(1+b.OverInValue) when b.OverInType='2' then a.Quantity+b.OverInValue when b.OverInType='3' then 999999 else a.Quantity end as Quantity
  8943. from ICSOutsourcingReceive a
  8944. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint) xx on xx.RCVCode=a.RCVCode and xx.Sequence=a.Sequence and xx.WorkPoint=a.WorkPoint
  8945. left join (
  8946. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8947. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='23'
  8948. where isnull(ee.EATTRIBUTE1,'')=''
  8949. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8950. ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8951. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8952. where a.Status='1'
  8953. and a.RCVCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8954. }
  8955. if (Type == "24")
  8956. {
  8957. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn026', " + Quantitys + ",1,3,'')";
  8958. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8959. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8960. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8961. from ICSSSD a
  8962. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8963. left join(select a.SDNCode,a.SDNSequence Sequence,a.WorkPoint,
  8964. case when b.OverInType='1' then a.Quantity*(1+b.OverInValue) when b.OverInType='2' then a.Quantity+b.OverInValue when b.OverInType='3' then 999999 else a.Quantity end as Quantity
  8965. from ICSSSD a
  8966. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint WHERE a.Type='2') xx on xx.SDNCode=a.SDNCode and xx.Sequence=a.SDNSequence and xx.WorkPoint=a.WorkPoint
  8967. left join (
  8968. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8969. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='5'
  8970. where isnull(ee.EATTRIBUTE1,'')=''
  8971. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8972. )c
  8973. on a.SDNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8974. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8975. where a.Status='1' and a.Type='2'
  8976. and a.SSDCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8977. }
  8978. dt = SqlHelper.GetDataTableBySql(sql);
  8979. decimal Quantity = Convert.ToDecimal(dt.Rows[0]["Quantity"].ToString());
  8980. decimal LOTQTY = Convert.ToDecimal(dt.Rows[0]["LOTQTY"].ToString());
  8981. decimal thisQty = Convert.ToDecimal(thisCreateQty);
  8982. if (LOTQTY + thisQty > Quantity)
  8983. {
  8984. flag = false;
  8985. }
  8986. return flag;
  8987. }
  8988. /// <summary>
  8989. /// 开立成品入库单(一键生成)
  8990. /// </summary>
  8991. public int SubmitFormKLCPRKALL(string keyValue)
  8992. {
  8993. string sql = string.Empty;
  8994. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  8995. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  8996. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  8997. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  8998. foreach (var item in res)
  8999. {
  9000. JObject jo = (JObject)item;
  9001. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  9002. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  9003. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  9004. decimal LOTQTY = minPackQty;
  9005. string Pre = "KCP" + jo["Code"].ToString() + (Convert.ToInt32(jo["Sequence"].ToString())).ToString("D4");
  9006. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  9007. string sqls = string.Empty;
  9008. string Colspan = "";
  9009. string str1 = "";
  9010. List<string> ExtensionIDList = new List<string>();
  9011. for (int i = 0; i < createPageCount; i++)
  9012. {
  9013. if (i + 1 == createPageCount)
  9014. {
  9015. if (minPackQty * createPageCount > thisCreateQty)
  9016. {
  9017. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  9018. }
  9019. }
  9020. 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();
  9021. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  9022. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  9023. bool flag = true;
  9024. foreach (var items in ExtensionIDList)
  9025. {
  9026. if (items == Colspan + WorkPoint)
  9027. {
  9028. flag = false;
  9029. }
  9030. }
  9031. if (ExtensionID == null && flag == true)
  9032. {
  9033. str1 = Guid.NewGuid().ToString();
  9034. 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)
  9035. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  9036. str1, 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(),
  9037. MUSER, MUSERNAME, WorkPoint);
  9038. }
  9039. else if (ExtensionID != null)
  9040. {
  9041. str1 = ExtensionID.ToString();
  9042. }
  9043. ExtensionIDList.Add(Colspan + WorkPoint);
  9044. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  9045. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  9046. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  9047. LotNo, jo["Code"].ToString(), jo["Sequence"].ToString(), MUSER, MUSERNAME, WorkPoint, jo["ID"].ToString());
  9048. sql += string.Format(@"
  9049. insert into ICSInventoryLot
  9050. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  9051. select
  9052. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','9','{3}','{4}', getdate(),'{5}','{9}'
  9053. from ICSManufactureReceive where RCVCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  9054. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, jo["Code"].ToString(), jo["Sequence"].ToString(), str1, Convert.ToDecimal(jo["Amount"].ToString()) / minPackQty * LOTQTY, jo["ExpirationDate"].ToString());
  9055. sql += "\r\n";
  9056. }
  9057. }
  9058. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  9059. return count;
  9060. }
  9061. /// <summary>
  9062. /// 审核到货单生成条码(一键生成)
  9063. /// </summary>
  9064. /// <param name="POCode"></param>
  9065. /// <param name="PORow"></param>
  9066. /// <param name="keyValue"></param>
  9067. /// 已改
  9068. /// <returns></returns>
  9069. public int SubmitFormSHDHALL(string keyValue)
  9070. {
  9071. string sql = string.Empty;
  9072. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  9073. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  9074. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  9075. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  9076. foreach (var resItem in res)
  9077. {
  9078. JObject jo = (JObject)resItem;
  9079. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  9080. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  9081. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  9082. decimal LOTQTY = minPackQty;
  9083. string Pre = "DN" + jo["Code"].ToString() + (Convert.ToInt32(jo["Sequence"])).ToString("D4");
  9084. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  9085. string sqls = string.Empty;
  9086. string Colspan = "";
  9087. string str1 = "";
  9088. List<string> ExtensionIDList = new List<string>();
  9089. for (int i = 0; i < createPageCount; i++)
  9090. {
  9091. if (i + 1 == createPageCount)
  9092. {
  9093. if (minPackQty * createPageCount > thisCreateQty)
  9094. {
  9095. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  9096. }
  9097. }
  9098. 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();
  9099. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  9100. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  9101. bool flag = true;
  9102. foreach (var item in ExtensionIDList)
  9103. {
  9104. if (item == Colspan + WorkPoint)
  9105. {
  9106. flag = false;
  9107. }
  9108. }
  9109. if (ExtensionID == null && flag == true)
  9110. {
  9111. str1 = Guid.NewGuid().ToString();
  9112. 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)
  9113. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  9114. str1, 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(),
  9115. MUSER, MUSERNAME, WorkPoint);
  9116. }
  9117. else if (ExtensionID != null)
  9118. {
  9119. str1 = ExtensionID.ToString();
  9120. }
  9121. ExtensionIDList.Add(Colspan + WorkPoint);
  9122. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  9123. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  9124. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  9125. LotNo, jo["Code"].ToString(), jo["Sequence"].ToString(), MUSER, MUSERNAME, WorkPoint, jo["ID"].ToString());
  9126. sql += string.Format(@"
  9127. insert into ICSInventoryLot
  9128. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  9129. select
  9130. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','7','{3}','{4}', getdate(),'{5}','{9}'
  9131. from ICSDeliveryNotice where DNCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  9132. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, jo["Code"].ToString(), jo["Sequence"], str1, Convert.ToDecimal(jo["Amount"].ToString()) / minPackQty * LOTQTY, jo["ExpirationDate"].ToString());
  9133. sql += "\r\n";
  9134. }
  9135. }
  9136. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  9137. return count;
  9138. }
  9139. /// <summary>
  9140. /// 审核委外到货单生成条码(一键生成)
  9141. /// </summary>
  9142. /// <param name="POCode"></param>
  9143. /// <param name="PORow"></param>
  9144. /// <param name="keyValue"></param>
  9145. /// 已改
  9146. /// <returns></returns>
  9147. public int SubmitFormWWSHDHALL(string keyValue)
  9148. {
  9149. string sql = string.Empty;
  9150. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  9151. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  9152. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  9153. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  9154. foreach (var resItem in res)
  9155. {
  9156. JObject jo = (JObject)resItem;
  9157. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  9158. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  9159. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  9160. decimal LOTQTY = minPackQty;
  9161. string Pre = "ODN" + jo["Code"] + (Convert.ToInt32(jo["Sequence"])).ToString("D4");
  9162. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  9163. string sqls = string.Empty;
  9164. string Colspan = "";
  9165. string str1 = "";
  9166. List<string> ExtensionIDList = new List<string>();
  9167. for (int i = 0; i < createPageCount; i++)
  9168. {
  9169. if (i + 1 == createPageCount)
  9170. {
  9171. if (minPackQty * createPageCount > thisCreateQty)
  9172. {
  9173. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  9174. }
  9175. }
  9176. 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();
  9177. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  9178. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  9179. bool flag = true;
  9180. foreach (var item in ExtensionIDList)
  9181. {
  9182. if (item == Colspan + WorkPoint)
  9183. {
  9184. flag = false;
  9185. }
  9186. }
  9187. if (ExtensionID == null && flag == true)
  9188. {
  9189. str1 = Guid.NewGuid().ToString();
  9190. 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)
  9191. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  9192. str1, 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(),
  9193. MUSER, MUSERNAME, WorkPoint);
  9194. }
  9195. else if (ExtensionID != null)
  9196. {
  9197. str1 = ExtensionID.ToString();
  9198. }
  9199. ExtensionIDList.Add(Colspan + WorkPoint);
  9200. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  9201. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  9202. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  9203. LotNo, jo["Code"], jo["Sequence"], MUSER, MUSERNAME, WorkPoint, jo["ID"]);
  9204. sql += string.Format(@"
  9205. insert into ICSInventoryLot
  9206. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  9207. select
  9208. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','8','{3}','{4}', getdate(),'{5}','{9}'
  9209. from ICSODeliveryNotice where ODNCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  9210. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, jo["Code"], jo["Sequence"], str1, Convert.ToDecimal(jo["Amount"].ToString()) / minPackQty * LOTQTY, jo["ExpirationDate"].ToString());
  9211. sql += "\r\n";
  9212. }
  9213. }
  9214. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  9215. return count;
  9216. }
  9217. public DataTable SelectICSColumnEnableForLotEnable()
  9218. {
  9219. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  9220. string sql = @" select ColumnCode from ICSColumnEnable
  9221. where Enable='0' and TableCode='ICSInventoryLot' and WorkPoint='" + WorkPoints + "' order by cast(Code as int)";
  9222. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  9223. return dt;
  9224. }
  9225. public DataTable GetLoadShowForColumn()
  9226. {
  9227. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  9228. string sql = @"
  9229. select * from ICSColumnEnable where TableCode='ICSInventoryLot' and WorkPoint='" + WorkPoints + "' order by cast(code as int) ";
  9230. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  9231. return dt;
  9232. }
  9233. public string GetAMEnable()
  9234. {
  9235. string Code = SqlHelper.GetItemsDetailEnabledMark("LotNoMaintenance");
  9236. return Code;
  9237. }
  9238. public DataTable SeachMeasure()
  9239. {
  9240. DataTable dt = new DataTable();
  9241. List<DbParameter> parameter = new List<DbParameter>();
  9242. string sql = @" SELECT Top 1 a.F_ItemCode as Code
  9243. FROM [dbo].[Sys_SRM_ItemsDetail] a
  9244. LEFT JOIN [dbo].[Sys_SRM_Items] b ON a.F_ItemId=b.F_Id
  9245. WHERE b.F_EnCode='CrtLot001' AND a.F_EnabledMark='1' ORDER BY a.F_ItemCode";
  9246. return Repository().FindTableBySql(sql.ToString());
  9247. }
  9248. public DataTable SeachLableofDisable()
  9249. {
  9250. DataTable dt = new DataTable();
  9251. List<DbParameter> parameter = new List<DbParameter>();
  9252. string sql = @"
  9253. SELECT a.F_ItemCode as Code,a.F_EnabledMark as Enable
  9254. FROM [dbo].[Sys_SRM_ItemsDetail] a
  9255. LEFT JOIN [dbo].[Sys_SRM_Items] b ON a.F_ItemId=b.F_Id
  9256. WHERE b.F_EnCode='Lot0001' ORDER BY a.F_SortCode";
  9257. return Repository().FindTableBySql(sql.ToString());
  9258. }
  9259. public DataTable SeachAmountEnablebyInvCode(string InvCode)
  9260. {
  9261. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  9262. DataTable dt = new DataTable();
  9263. List<DbParameter> parameter = new List<DbParameter>();
  9264. string sql = @"
  9265. select isnull(AmountEnable,0) as AmountEnable from dbo.ICSInventory where InvCode='" + InvCode + "' and WorkPoint='" + WorkPoint + "'";
  9266. return Repository().FindTableBySql(sql.ToString());
  9267. }
  9268. public DataTable SeachDatabyInvCode(string InvCode)
  9269. {
  9270. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  9271. DataTable dt = new DataTable();
  9272. List<DbParameter> parameter = new List<DbParameter>();
  9273. string sql = @"
  9274. select isnull(AmountEnable,0) as AmountEnable,
  9275. isnull(ContainerEnable,0) ContainerEnable
  9276. from dbo.ICSInventory where InvCode='" + InvCode + "' and WorkPoint='" + WorkPoint + "'";
  9277. return Repository().FindTableBySql(sql.ToString());
  9278. }
  9279. public string LotBindCode(String savePath, string Code, string Sequence)
  9280. {
  9281. //数据获取
  9282. try
  9283. {
  9284. int index = 1;
  9285. string msg = "";
  9286. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  9287. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  9288. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  9289. SqlConnection conn = SqlHelper.GetDataCenterConn();
  9290. string sql = "";
  9291. int count = 0;
  9292. DataTable data = FileToExcel.ExcelToTable(savePath);
  9293. int totalNum = data.AsEnumerable().Sum(row => int.Parse(row.Field<string>("条码数量")));
  9294. string sqlCode = @" select a.MOCode,a.Sequence, a.Quantity,a.Amount,a.InvCode,isnull(c.LOTQTY,0) as LOTQTY,
  9295. case when b.EffectiveEnable='1' then getdate()+b.EffectiveDays else '2999-12-31 00:00:00.000' end as ExpirationDate,
  9296. a.ExtensionID
  9297. from ICSMO a
  9298. left join (
  9299. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  9300. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='3'
  9301. where isnull(a.EATTRIBUTE1,'')=''
  9302. group by b.TransCode,b.TransSequence
  9303. ) c on a.MOCode=c.TransCode and a.Sequence=c.TransSequence
  9304. inner join dbo.ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint where a.MOCode='{0}' and a.Sequence='{1}' and a.WorkPoint='{2}'";
  9305. sqlCode = string.Format(sqlCode, Code, Sequence, WorkPoint);
  9306. DataTable dd = SqlHelper.CmdExecuteDataTable(sqlCode);
  9307. string ExtensionID = dd.Rows[0]["ExtensionID"].ToString();
  9308. string ExpirationDate = dd.Rows[0]["ExpirationDate"].ToString();
  9309. string InvCode = dd.Rows[0]["InvCode"].ToString();
  9310. decimal CQuantity = Convert.ToDecimal(dd.Rows[0]["Quantity"].ToString());
  9311. decimal CAmount = Convert.ToDecimal(dd.Rows[0]["Amount"].ToString());
  9312. decimal CLOTQTY = Convert.ToDecimal(dd.Rows[0]["LOTQTY"].ToString());
  9313. decimal SQTY = CQuantity - CLOTQTY;
  9314. if (totalNum > SQTY)
  9315. {
  9316. throw new Exception("单号: " + Code + "行号" + Sequence + " 所导入条码数量超出该单据可生成数量,该单据剩余可生成数量为" + SQTY + "!");
  9317. }
  9318. // string CodeSequence = "";
  9319. foreach (DataRow dr in data.Rows)
  9320. {
  9321. index++;
  9322. //string GUID = Guid.NewGuid().ToString();
  9323. // string Code = dr["单据号"].ToString().Trim().ToUpper();
  9324. // string Sequence = dr["单据行号"].ToString().Trim().ToUpper();
  9325. string LotNo = dr["条码"].ToString().Trim().ToUpper();
  9326. string Quantity = dr["条码数量"].ToString().Trim().ToUpper();
  9327. //if (CodeSequence != "" && CodeSequence != Code + Sequence)
  9328. //{
  9329. // throw new Exception("一次只能导入同一单据数据!");
  9330. //}
  9331. //else
  9332. //{
  9333. // CodeSequence = Code + Sequence;
  9334. //}
  9335. if (Code == "" || Code == null)
  9336. {
  9337. throw new Exception("第 " + index + " 行单据号不能为空!");
  9338. }
  9339. if (Sequence == "" || Sequence == null)
  9340. {
  9341. throw new Exception("第 " + index + " 行单据行号不能为空!");
  9342. }
  9343. if (LotNo == "" || LotNo == null)
  9344. {
  9345. throw new Exception("第 " + index + " 行条码不能为空!");
  9346. }
  9347. if (Quantity == "" || Quantity == null)
  9348. {
  9349. throw new Exception("第 " + index + " 行条码数量不能为空!");
  9350. }
  9351. //if (Convert.ToDecimal(Quantity) > (CQuantity - CLOTQTY))
  9352. //{
  9353. // decimal SQTY = CQuantity - CLOTQTY;
  9354. // throw new Exception("第 " + index + "行单号: " + Code + "行号" + Sequence + " 所输入条码数量超出该单据可生成数量,该单据剩余可生成数量为"+ SQTY + "!");
  9355. //}
  9356. var Amount = CAmount / CQuantity * Convert.ToDecimal(Quantity);
  9357. sql += @"Insert INto ICSInventoryLot
  9358. ( ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,Amount,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint)
  9359. Values (newid(),'{0}','{1}',getdate(),'{2}','{3}','{4}','{5}','3','{6}','{7}',getdate(),'{8}')
  9360. ";
  9361. sql += @" Insert INto ICSInventoryLotDetail
  9362. ( LotNo,TransID,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  9363. Values ('{0}','','{9}','{10}','{6}','{7}',getdate(),'{8}')";
  9364. sql = string.Format(sql, LotNo, InvCode, ExpirationDate, Quantity, Amount, ExtensionID, MUSER, MUSERNAME, WorkPoint, Code, Sequence);
  9365. }
  9366. count = SqlHelper.CmdExecuteNonQueryLi(sql);
  9367. if (count > 0)
  9368. {
  9369. msg = "导入成功";
  9370. }
  9371. else
  9372. {
  9373. return "无有效的导入数据。";
  9374. }
  9375. return msg;
  9376. }
  9377. catch (Exception ex)
  9378. {
  9379. return ex.Message;
  9380. }
  9381. }
  9382. /// <summary>
  9383. /// 生产退料(一键生成)
  9384. /// </summary>
  9385. public int SubmitFormGDTLALL(string keyValue)
  9386. {
  9387. string sql = string.Empty;
  9388. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  9389. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  9390. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  9391. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  9392. foreach (var item in res)
  9393. {
  9394. JObject jo = (JObject)item;
  9395. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  9396. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  9397. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  9398. decimal LOTQTY = minPackQty;
  9399. string Pre = "MDN" + jo["Code"].ToString() + (Convert.ToInt32(jo["Sequence"].ToString())).ToString("D4");
  9400. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  9401. string sqls = string.Empty;
  9402. string Colspan = "";
  9403. string str1 = "";
  9404. List<string> ExtensionIDList = new List<string>();
  9405. for (int i = 0; i < createPageCount; i++)
  9406. {
  9407. if (i + 1 == createPageCount)
  9408. {
  9409. if (minPackQty * createPageCount > thisCreateQty)
  9410. {
  9411. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  9412. }
  9413. }
  9414. 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();
  9415. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  9416. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  9417. bool flag = true;
  9418. foreach (var items in ExtensionIDList)
  9419. {
  9420. if (items == Colspan + WorkPoint)
  9421. {
  9422. flag = false;
  9423. }
  9424. }
  9425. if (ExtensionID == null && flag == true)
  9426. {
  9427. str1 = Guid.NewGuid().ToString();
  9428. 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)
  9429. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  9430. str1, 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(),
  9431. MUSER, MUSERNAME, WorkPoint);
  9432. }
  9433. else if (ExtensionID != null)
  9434. {
  9435. str1 = ExtensionID.ToString();
  9436. }
  9437. ExtensionIDList.Add(Colspan + WorkPoint);
  9438. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  9439. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  9440. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  9441. LotNo, jo["Code"].ToString(), jo["Sequence"].ToString(), MUSER, MUSERNAME, WorkPoint, jo["ID"].ToString());
  9442. sql += string.Format(@"
  9443. insert into ICSInventoryLot
  9444. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  9445. select
  9446. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','1','{3}','{4}', getdate(),'{5}','{9}'
  9447. from ICSMOApplyNegDetail where ApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  9448. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, jo["Code"].ToString(), jo["Sequence"].ToString(), str1, Convert.ToDecimal(jo["Amount"].ToString()) / minPackQty * LOTQTY, jo["ExpirationDate"].ToString());
  9449. sql += "\r\n";
  9450. }
  9451. }
  9452. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  9453. return count;
  9454. }
  9455. /// <summary>
  9456. /// 自动生成批次信息
  9457. /// </summary>
  9458. /// <param name="InvCode"></param>
  9459. /// <param name="WorkPoint"></param>
  9460. /// <returns></returns>
  9461. public DataTable GetVendorBatch()
  9462. {
  9463. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  9464. string pre = "C" + DateTime.Now.ToString("yyyyMMdd");
  9465. //var queryParam = queryJson.ToJObject();
  9466. //List<DbParameter> parameter = new List<DbParameter>();
  9467. //string dtPre = DateTime.Now.ToString("yyyyMMdd");
  9468. string sql = @"EXEC Addins_GetSerialCode '" + WorkPoint + "','ICSInventoryLot','BatchCode','" + pre + "',4";
  9469. return Repository().FindTableBySql(sql.ToString());
  9470. }
  9471. public DataTable GetVendorBatchBYInvCode(string InvCode, string WorkPoint)
  9472. {
  9473. DataTable dt = new DataTable();
  9474. string sqlClass = "SELECT EATTRIBUTE1 FROM ICSInventory WHERE InvCode='{0}'and WorkPoint='{1}'";
  9475. sqlClass = string.Format(sqlClass, InvCode, WorkPoint);
  9476. DataTable dtClass = SqlHelper.GetDataTableBySql(sqlClass);
  9477. string pre = dtClass.Rows[0]["EATTRIBUTE1"].ToString() + DateTime.Now.ToString("yyyyMMdd");
  9478. //var queryParam = queryJson.ToJObject();
  9479. //List<DbParameter> parameter = new List<DbParameter>();
  9480. //string dtPre = DateTime.Now.ToString("yyyyMMdd");
  9481. string sql = @"EXEC Addins_GetSerialCode '" + WorkPoint + "','ICSInventoryLot','BatchCode','" + pre + "',4";
  9482. return Repository().FindTableBySql(sql.ToString());
  9483. }
  9484. public DataTable GetReworkMo(string invcode, string Code, string SourceCode, ref Pagination jqgridparam)
  9485. {
  9486. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  9487. List<DbParameter> parameter = new List<DbParameter>();
  9488. DataTable table = new DataTable();
  9489. string wherestr = "";
  9490. if (!string.IsNullOrEmpty(invcode))
  9491. {
  9492. wherestr += " and a.InvCode like '%" + invcode + "%'";
  9493. }
  9494. if (!string.IsNullOrEmpty(Code))
  9495. {
  9496. wherestr += " and a.MOCode like '%" + Code + "%'";
  9497. }
  9498. string sql = @"SELECT
  9499. a.ID,
  9500. a.MOCode,
  9501. a.Sequence,
  9502. a.InvCode,
  9503. a.Quantity,
  9504. a.Amount,
  9505. a.RCVQuantity,
  9506. a.DepCode,
  9507. a.WHCode,
  9508. a.StartDate,
  9509. a.DueDate,
  9510. a.MOType,
  9511. a.MOStatus,
  9512. a.MOMemo,
  9513. a.CreatePerson,
  9514. a.CreateDateTime,
  9515. a.ERPStatus,
  9516. a.MOID,
  9517. a.MODetailID,
  9518. a.ExtensionID,
  9519. a.MUSER,
  9520. a.MUSERName,
  9521. a.MTIME,
  9522. a.WorkPoint,
  9523. a.EATTRIBUTE1,
  9524. a.EATTRIBUTE2,
  9525. a.EATTRIBUTE3,
  9526. a.EATTRIBUTE4,
  9527. a.EATTRIBUTE5,
  9528. a.EATTRIBUTE6,
  9529. a.EATTRIBUTE7,
  9530. a.EATTRIBUTE8,
  9531. a.EATTRIBUTE9,
  9532. a.EATTRIBUTE10,
  9533. b.InvName,
  9534. b.InvStd,
  9535. b.InvUnit
  9536. from
  9537. dbo.ICSMO a
  9538. left join dbo.ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  9539. where a.EATTRIBUTE1='1' and a.MOStatus<>'3' and a.WorkPoint = '" + WorkPoint + "'" + wherestr;
  9540. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  9541. }
  9542. //修改形态转换
  9543. public string LotReworkBind(string LotNo, string Code, string Sequence, string ExtensionID)
  9544. {
  9545. string Colspan = "";
  9546. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  9547. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  9548. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  9549. string msg = "";
  9550. string MTDOCCode = "";
  9551. DateTime TimeNow = DateTime.Now;
  9552. string sql = string.Empty;
  9553. //修改条码绑定关系
  9554. sql += @"update dbo.ICSInventoryLotDetail set TransCode='{0}' ,TransSequence='{1}' where LotNo in({2}) and WorkPoint='{3}'";
  9555. //修改条码批次
  9556. sql += @"update dbo.ICSInventoryLot set ExtensionID='{4}' where LotNo in({2}) and WorkPoint='{3}'";
  9557. //删除条码库存
  9558. sql += @"delete dbo.ICSWareHouseLotInfo where LotNo in({2}) and WorkPoint='{3}' ";
  9559. sql = string.Format(sql, Code, Sequence, LotNo, WorkPoint, ExtensionID);
  9560. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  9561. {
  9562. msg = "";
  9563. }
  9564. else
  9565. {
  9566. msg = "条码重新绑定失败!";
  9567. }
  9568. return msg;
  9569. }
  9570. /// <summary>
  9571. /// 一键退库(咖博士新增需求:根据生产退料单,B2、C类物料可以实现一键退库操作),调用PDA上架接口
  9572. /// </summary>
  9573. /// <param name="IDs"></param>
  9574. /// <returns></returns>
  9575. public string PostInWareHouse(string IDs)
  9576. {
  9577. string Colspan = "";
  9578. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  9579. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  9580. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  9581. string msg = "";
  9582. DateTime TimeNow = DateTime.Now;
  9583. string sql = string.Empty;
  9584. try
  9585. {
  9586. IDs = IDs.Substring(1, IDs.Length - 2);
  9587. //1.获取退料单中的B2和C类物料,检验是否全部生成条码,没有生成条码的单据需要先生成条码后一键退库
  9588. string whereSql1 = @"SELECT ' '+F_Define1+' '+F_Define2+' '+F_Define3+' '+F_Define4+' ' as Conditions FROM Sys_SRM_ItemsDetail WHERE F_ItemId=(SELECT F_Id FROM Sys_SRM_Items WHERE F_EnCode='Trans_btnInWareHouse' AND F_ParentId='abee1b7d-160b-4aa0-948c-440e48cf0649') AND F_ItemCode='01' ;
  9589. SELECT F_Define1,F_Define2 FROM Sys_SRM_ItemsDetail WHERE F_ItemId=(SELECT F_Id FROM Sys_SRM_Items WHERE F_EnCode='LocationCode' ) AND F_ItemCode='MaterialReturned' ";
  9590. string whereSql2 = @"
  9591. SELECT F_Define1,F_Define2 FROM Sys_SRM_ItemsDetail WHERE F_ItemId=(SELECT F_Id FROM Sys_SRM_Items WHERE F_EnCode='LocationCode' ) AND F_ItemCode='MaterialReturned' ";
  9592. DataTable dataTable1 = SqlHelper.CmdExecuteDataTable(whereSql1);
  9593. DataTable dataTable2 = SqlHelper.CmdExecuteDataTable(whereSql2);
  9594. if (dataTable1.Rows.Count <= 0)
  9595. {
  9596. throw new Exception("请先再自定义档案配置需要一键退库的物料信息!");
  9597. }
  9598. if (dataTable2.Rows.Count <= 0)
  9599. {
  9600. throw new Exception("请先再自定义档案配置需要一键退库的仓库库位信息!");
  9601. }
  9602. //判断是否全部生成条码
  9603. string isCreate = $@" SELECT a.ApplyNegCode,a.Sequence,a.Quantity,sum(isnull(c.Quantity,0)) as LotQuantity
  9604. FROM ICSMOApplyNegDetail a
  9605. left JOIN ICSInventoryLotDetail b ON a.ApplyNegCode=b.TransCode AND a.Sequence=b.TransSequence AND a.WorkPoint=b.WorkPoint
  9606. left JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint AND a.InvCode=c.InvCode
  9607. INNER JOIN ICSInventory e ON a.InvCode=e.InvCode AND a.WorkPoint=e.WorkPoint
  9608. WHERE a.ID IN ({IDs}) {dataTable1.Rows[0]["Conditions"]}
  9609. GROUP BY a.Quantity,a.Id,a.ApplyNegCode,a.Sequence ";
  9610. DataTable isCreatedt = SqlHelper.CmdExecuteDataTable(isCreate);
  9611. if (isCreatedt.Rows.Count <= 0)
  9612. {
  9613. throw new Exception("请先确认退料单物料类别信息,然后确认自定义档案配置可以自动出库的物料信息!");
  9614. }
  9615. else
  9616. {
  9617. for (int i = 0; i < isCreatedt.Rows.Count; i++)
  9618. {
  9619. if (isCreatedt.Rows[i]["Quantity"].ToDecimal() != isCreatedt.Rows[i]["LotQuantity"].ToDecimal())
  9620. {
  9621. throw new Exception($"请先将单据:{isCreatedt.Rows[i]["ApplyNegCode"]},行号:{isCreatedt.Rows[i]["Sequence"]} ,全部生成条码!");
  9622. }
  9623. }
  9624. }
  9625. //查询需要入库的条码信息
  9626. sql = $@" SELECT a.ApplyNegCode,a.Sequence,c.LotNo,c.Quantity,c.InvCode FROM ICSMOApplyNegDetail a
  9627. INNER JOIN ICSInventoryLotDetail b ON a.ApplyNegCode=b.TransCode AND a.Sequence=b.TransSequence AND a.WorkPoint=b.WorkPoint
  9628. INNER JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint AND a.InvCode=c.InvCode
  9629. LEFT JOIN ICSWareHouseLotInfo d ON d.LotNo=c.LotNo AND d.WorkPoint=c.WorkPoint
  9630. INNER JOIN ICSInventory e ON a.InvCode=e.InvCode AND a.WorkPoint=e.WorkPoint
  9631. WHERE
  9632. a.ID IN ({IDs}) {dataTable1.Rows[0]["Conditions"]} AND
  9633. d.ID is null ";
  9634. //2.查询退料的条码和退料的条码数量,拼接参数,调用PDA接口
  9635. var getSql = SqlHelper.CmdExecuteDataTable(sql);
  9636. if (getSql.Rows.Count > 0)
  9637. {
  9638. List<LOTStockUpCreateIModel> models = new List<LOTStockUpCreateIModel>();
  9639. LOTStockUpCreateIModel model = new LOTStockUpCreateIModel
  9640. {
  9641. User = MUSER,
  9642. MTime = TimeNow.ToString("yyyy-MM-dd HH:mm:ss"),
  9643. WorkPoint = WorkPoint,
  9644. TransType = "生产退料-生产退料单"
  9645. };
  9646. model.detail = new List<LOTStockUpCreateIModelList>();
  9647. for (int i = 0; i < getSql.Rows.Count; i++)
  9648. {
  9649. LOTStockUpCreateIModelList detail = new LOTStockUpCreateIModelList
  9650. {
  9651. LotNo = getSql.Rows[i]["LotNo"].ToString(),
  9652. WarehouseCode = dataTable2.Rows[0]["F_Define1"].ToString(),
  9653. LocationCode = dataTable2.Rows[0]["F_Define2"].ToString(),
  9654. TransCode = getSql.Rows[i]["ApplyNegCode"].ToString(),
  9655. TransSequence = getSql.Rows[i]["Sequence"].ToString(),
  9656. Quantity = getSql.Rows[i]["Quantity"].ToString(),
  9657. InvCode = getSql.Rows[i]["InvCode"].ToString()
  9658. };
  9659. model.detail.Add(detail);
  9660. }
  9661. models.Add(model);
  9662. var input = models.ToJson();
  9663. string APIURL = ConfigurationManager.ConnectionStrings["APIURL"].ConnectionString + "LOTStockUp/Create";
  9664. string result = HttpPost(APIURL, input);
  9665. Result res = result.ToObject<Result>();
  9666. if (!res.Success)
  9667. {
  9668. throw new Exception(res.Message);
  9669. }
  9670. msg = "";
  9671. }
  9672. return msg;
  9673. }
  9674. catch (Exception ex)
  9675. {
  9676. throw new Exception(ex.Message);
  9677. }
  9678. }
  9679. /// <summary>
  9680. /// 红字销售出库单生成条码列表数据
  9681. /// </summary>
  9682. /// <param name="queryJson"></param>
  9683. /// <param name="jqgridparam"></param>
  9684. /// <returns></returns>
  9685. public DataTable GetGridJsonWMSSSD(string queryJson, ref Pagination jqgridparam)
  9686. {
  9687. DataTable dt = new DataTable();
  9688. var queryParam = queryJson.ToJObject();
  9689. List<DbParameter> parameter = new List<DbParameter>();
  9690. object Figure = GetDecimalDigits();
  9691. #region [SQL]
  9692. string sql = @"select distinct a.ID,a.SSDCode,a.Sequence,a.CusCode,a.CusName,a.InvCode, b.InvName,b.InvStd,b.InvDesc,b.InvUnit,CAST(a.Quantity AS DECIMAL(38,6)) as Quantity ,CAST(a.Amount AS DECIMAL(38,6)) as Amount,CAST(a.SSDQuantity AS DECIMAL(38,6)) as SSDQuantity,CAST((a.Quantity-ISnull(a.SSDQuantity,0)) AS DECIMAL(38,6)) as NSSDQuantity,a.CreatePerson,a.CreateDateTime,
  9693. CAST(c.LOTQTY AS DECIMAL(38,6)) as LOTQTY ,case when isnull(b.EffectiveEnable,0)='1' then '是' else '否' end as EffectiveEnable
  9694. , CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,6)) as EffectiveDays ,Case when isnull(b.BatchEnable,0)='1' then '是' else '否' end as BatchEnable
  9695. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  9696. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10 ,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  9697. a.EATTRIBUTE9,a.EATTRIBUTE10
  9698. from ICSSSD a
  9699. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  9700. left join (
  9701. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  9702. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='24'
  9703. where isnull(ee.EATTRIBUTE1,'')=''
  9704. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  9705. ) c on a.SSDCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  9706. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  9707. where a.Type='2' and a.Status='1' ";
  9708. sql = string.Format(sql, Figure);
  9709. #endregion
  9710. if (!string.IsNullOrWhiteSpace(queryJson))
  9711. {
  9712. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  9713. {
  9714. sql += " and a.SSDCode like '%" + queryParam["POCode"].ToString() + "%' ";
  9715. }
  9716. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  9717. {
  9718. sql += " and a.CusCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  9719. }
  9720. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  9721. {
  9722. sql += " and a.CusName like '%" + queryParam["VenName"].ToString() + "%' ";
  9723. }
  9724. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  9725. {
  9726. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  9727. }
  9728. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  9729. {
  9730. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  9731. }
  9732. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  9733. {
  9734. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  9735. }
  9736. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  9737. {
  9738. sql += " and a.CreateDateTime >= '" + queryParam["FromTime"].ToString() + "' ";
  9739. }
  9740. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  9741. {
  9742. sql += " and a.CreateDateTime <= '" + queryParam["ToTime"].ToString() + "' ";
  9743. }
  9744. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  9745. {
  9746. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  9747. }
  9748. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  9749. {
  9750. string POStatus = queryParam["POStatus"].ToString();
  9751. if (POStatus == "0")
  9752. {
  9753. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  9754. }
  9755. else if (POStatus == "1")
  9756. {
  9757. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  9758. }
  9759. else
  9760. {
  9761. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  9762. }
  9763. }
  9764. if (!string.IsNullOrWhiteSpace(queryParam["WHStatus"].ToString()))
  9765. {
  9766. string WHStatus = queryParam["WHStatus"].ToString();
  9767. if (WHStatus == "0")
  9768. {
  9769. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  9770. }
  9771. else if (WHStatus == "1")
  9772. {
  9773. sql += " and a.Quantity-ISNULL(a.SSDQuantity,0)>0";
  9774. }
  9775. else
  9776. {
  9777. sql += " and a.Quantity-ISNULL(a.SSDQuantity,0)=0";
  9778. }
  9779. }
  9780. }
  9781. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  9782. {
  9783. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  9784. }
  9785. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  9786. {
  9787. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  9788. }
  9789. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  9790. }
  9791. /// <summary>
  9792. /// 红字销售出库单生成条码
  9793. /// </summary>
  9794. /// <param name="SDNCode"></param>
  9795. /// <param name="Sequence"></param>
  9796. /// <param name="keyValue"></param>
  9797. /// <param name="WorkPoint"></param>
  9798. /// <param name="AMEnable"></param>
  9799. /// <returns></returns>
  9800. public int SubmitFormSSD(string SSDCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  9801. {
  9802. var queryParam = keyValue.ToJObject();
  9803. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  9804. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  9805. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  9806. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  9807. decimal LOTQTY = minPackQty;
  9808. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  9809. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  9810. string Pre = "SSD" + SSDCode + (Convert.ToInt32(Sequence)).ToString("D4");
  9811. string sql = string.Empty;
  9812. //string VendorLot = queryParam["VendorLot"].ToString();
  9813. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  9814. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  9815. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  9816. string InvCode = queryParam["ClassCode"].ToString();
  9817. string sqls = string.Empty;
  9818. string Colspan = "";
  9819. string str1 = "";
  9820. string LotNo = string.Empty;
  9821. List<string> ExtensionIDList = new List<string>();
  9822. #region 装箱的功能
  9823. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  9824. string VenCode = queryParam["VenCode"].ToString();
  9825. int PackCount = 0;//每箱放的数量
  9826. int Pack_YuShu = 0;//需要平摊的数量
  9827. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  9828. List<PackModel> List_Pack = new List<PackModel>();
  9829. int ZQty = 0;
  9830. if (createPackCount > 0)
  9831. {
  9832. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  9833. if (Pack_YuShu == 0)
  9834. {
  9835. PackCount = (createPageCount / createPackCount);
  9836. }
  9837. else
  9838. {
  9839. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  9840. }
  9841. for (int jj = 0; jj < createPackCount; jj++)
  9842. {
  9843. object CARID = Guid.NewGuid();
  9844. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  9845. sql += @" INSERT INTO dbo.ICSContainer
  9846. ( ID,ContainerCode ,
  9847. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  9848. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  9849. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  9850. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  9851. PackModel PP = new PackModel();
  9852. PP.ID = CARID.ToString();
  9853. PP.PackCode = Carton;
  9854. if (jj < Pack_YuShu)
  9855. {
  9856. PP.FristBarIndex = ZQty;
  9857. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  9858. }
  9859. else
  9860. {
  9861. PP.FristBarIndex = ZQty;
  9862. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  9863. }
  9864. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  9865. List_Pack.Add(PP);
  9866. }
  9867. }
  9868. #endregion
  9869. for (int i = 0; i < createPageCount; i++)
  9870. {
  9871. if (i + 1 == createPageCount)
  9872. {
  9873. if (minPackQty * createPageCount > thisCreateQty)
  9874. {
  9875. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  9876. }
  9877. }
  9878. 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();
  9879. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  9880. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  9881. bool flag = true;
  9882. foreach (var item in ExtensionIDList)
  9883. {
  9884. if (item == Colspan + WorkPoint)
  9885. {
  9886. flag = false;
  9887. }
  9888. }
  9889. if (ExtensionID == null && flag == true)
  9890. {
  9891. str1 = Guid.NewGuid().ToString();
  9892. 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)
  9893. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  9894. 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(),
  9895. MUSER, MUSERNAME, WorkPoints);
  9896. }
  9897. else if (ExtensionID != null)
  9898. {
  9899. str1 = ExtensionID.ToString();
  9900. }
  9901. ExtensionIDList.Add(Colspan + WorkPoint);
  9902. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  9903. if (AMEnable == "true")
  9904. {
  9905. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  9906. }
  9907. else
  9908. {
  9909. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  9910. }
  9911. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  9912. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  9913. LotNo, SSDCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  9914. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  9915. //{
  9916. sql += string.Format(@"
  9917. insert into ICSInventoryLot
  9918. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  9919. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  9920. select
  9921. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','24','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  9922. from ICSSSD where SSDCode='{6}' and Sequence='{7}' and WorkPoint='{5}' and Type='2' and Status='1' ",
  9923. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, SSDCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  9924. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  9925. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  9926. sql += "\r\n";
  9927. //装箱的功能
  9928. if (List_Pack.Count > 0)
  9929. {
  9930. PackModel mm = new PackModel();
  9931. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  9932. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  9933. ( ID ,ContainerID ,LotNo ,MUSER ,MUSERName ,MTIME ,WorkPoint )
  9934. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  9935. }
  9936. //}
  9937. }
  9938. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  9939. return count;
  9940. }
  9941. /// <summary>
  9942. /// 红字销售出库单生成条码
  9943. /// </summary>
  9944. /// <param name="SDNCode"></param>
  9945. /// <param name="Sequence"></param>
  9946. /// <param name="keyValue"></param>
  9947. /// <param name="WorkPoint"></param>
  9948. /// <param name="AMEnable"></param>
  9949. /// <returns></returns>
  9950. public int SubmitFormSSDNew(string SSDCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  9951. {
  9952. var queryParam = keyValue.ToJObject();
  9953. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  9954. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  9955. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  9956. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  9957. List<decimal> lotQtys = new List<decimal>();
  9958. foreach (var jLotno in jLotnos)
  9959. {
  9960. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  9961. lotQtys.Add(qty);
  9962. }
  9963. int createPageCount = lotQtys.Count();
  9964. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  9965. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  9966. string Pre = "SSD" + SSDCode + (Convert.ToInt32(Sequence)).ToString("D4");
  9967. string sql = string.Empty;
  9968. //string VendorLot = queryParam["VendorLot"].ToString();
  9969. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  9970. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  9971. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  9972. string InvCode = queryParam["ClassCode"].ToString();
  9973. string sqls = string.Empty;
  9974. string Colspan = "";
  9975. string str1 = "";
  9976. string LotNo = string.Empty;
  9977. List<string> ExtensionIDList = new List<string>();
  9978. #region 装箱的功能
  9979. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  9980. string VenCode = queryParam["VenCode"].ToString();
  9981. int PackCount = 0;//每箱放的数量
  9982. int Pack_YuShu = 0;//需要平摊的数量
  9983. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  9984. List<PackModel> List_Pack = new List<PackModel>();
  9985. int ZQty = 0;
  9986. if (createPackCount > 0)
  9987. {
  9988. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  9989. if (Pack_YuShu == 0)
  9990. {
  9991. PackCount = (createPageCount / createPackCount);
  9992. }
  9993. else
  9994. {
  9995. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  9996. }
  9997. for (int jj = 0; jj < createPackCount; jj++)
  9998. {
  9999. object CARID = Guid.NewGuid();
  10000. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  10001. sql += @" INSERT INTO dbo.ICSContainer
  10002. ( ID,ContainerCode ,
  10003. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  10004. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  10005. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  10006. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  10007. PackModel PP = new PackModel();
  10008. PP.ID = CARID.ToString();
  10009. PP.PackCode = Carton;
  10010. if (jj < Pack_YuShu)
  10011. {
  10012. PP.FristBarIndex = ZQty;
  10013. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  10014. }
  10015. else
  10016. {
  10017. PP.FristBarIndex = ZQty;
  10018. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  10019. }
  10020. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  10021. List_Pack.Add(PP);
  10022. }
  10023. }
  10024. #endregion
  10025. for (int i = 0; i < createPageCount; i++)
  10026. {
  10027. var LOTQTY = lotQtys[i];
  10028. 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();
  10029. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  10030. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  10031. bool flag = true;
  10032. foreach (var item in ExtensionIDList)
  10033. {
  10034. if (item == Colspan + WorkPoint)
  10035. {
  10036. flag = false;
  10037. }
  10038. }
  10039. if (ExtensionID == null && flag == true)
  10040. {
  10041. str1 = Guid.NewGuid().ToString();
  10042. 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)
  10043. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  10044. 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(),
  10045. MUSER, MUSERNAME, WorkPoints);
  10046. }
  10047. else if (ExtensionID != null)
  10048. {
  10049. str1 = ExtensionID.ToString();
  10050. }
  10051. ExtensionIDList.Add(Colspan + WorkPoint);
  10052. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  10053. if (AMEnable == "true")
  10054. {
  10055. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  10056. }
  10057. else
  10058. {
  10059. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  10060. }
  10061. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  10062. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  10063. LotNo, SSDCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  10064. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  10065. //{
  10066. sql += string.Format(@"
  10067. insert into ICSInventoryLot
  10068. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  10069. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  10070. select
  10071. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','24','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  10072. from ICSSSD where SSDCode='{6}' and Sequence='{7}' and WorkPoint='{5}' and Type='2' and Status='1' ",
  10073. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, SSDCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  10074. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  10075. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  10076. sql += "\r\n";
  10077. //装箱的功能
  10078. if (List_Pack.Count > 0)
  10079. {
  10080. PackModel mm = new PackModel();
  10081. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  10082. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  10083. ( ID ,ContainerID ,LotNo ,MUSER ,MUSERName ,MTIME ,WorkPoint )
  10084. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  10085. }
  10086. //}
  10087. }
  10088. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  10089. return count;
  10090. }
  10091. /// <summary>
  10092. /// 红字销售出库单查询
  10093. /// </summary>
  10094. /// <param name="SSDCode"></param>
  10095. /// <param name="Sequence"></param>
  10096. /// <param name="WorkPoint"></param>
  10097. /// <returns></returns>
  10098. public DataTable GetSubGridJsonSSDByCreate(string SSDCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  10099. {
  10100. DataTable dt = new DataTable();
  10101. object Figure = GetDecimalDigits();
  10102. List<DbParameter> parameter = new List<DbParameter>();
  10103. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn026', " + Quantity + ",1,3,'')";
  10104. object Num = SqlHelper.ExecuteScalar(SeachNum);
  10105. string sql = @" select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, CAST( " + Num + @" AS DECIMAL(38,6)) as Quantity,CAST( a.Amount as DECIMAL(38,6)) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,6)) as CreatedQty,
  10106. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,6)) as thisCreateQty,
  10107. isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,6)) as EffectiveDays, case when CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) >=(CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' END) then (CASE WHEN b.EATTRIBUTE2='' OR b.EATTRIBUTE2 IS NULL THEN '0' else b.EATTRIBUTE2 END) else CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  10108. ,d.ProjectCode,d.BatchCode,d.Version,d.Brand,d.cFree1,d.cFree2,d.cFree3,d.cFree4,d.cFree5,d.cFree6,d.cFree7,d.cFree8,d.cFree9,d.cFree10,
  10109. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  10110. from ICSSSD a
  10111. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  10112. left join (
  10113. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  10114. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='24'
  10115. where isnull(a.EATTRIBUTE1,'')=''
  10116. group by b.TransCode,b.TransSequence
  10117. ) c on a.SSDCode=c.TransCode and a.Sequence=c.TransSequence
  10118. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  10119. WHERE a.Status='1'
  10120. and a.Type='2' and a.SSDCode='" + SSDCode + "' and a.Sequence='" + Sequence + "'";
  10121. sql += " and a.WorkPoint='" + WorkPoint + "'";
  10122. sql = string.Format(sql, Figure);
  10123. return Repository().FindTableBySql(sql.ToString());
  10124. }
  10125. /// <summary>
  10126. /// 派纳 线边仓调拨申请单生成条码
  10127. /// </summary>
  10128. /// <param name="queryJson"></param>
  10129. /// <param name="jqgridparam"></param>
  10130. /// <returns></returns>
  10131. public DataTable GetGridJsonTransferApplicationPN(string queryJson, ref Pagination jqgridparam)
  10132. {
  10133. DataTable dt = new DataTable();
  10134. var queryParam = queryJson.ToJObject();
  10135. List<DbParameter> parameter = new List<DbParameter>();
  10136. object Figure = GetDecimalDigits();
  10137. #region [SQL]
  10138. string sql = @" select * from (select distinct a.ID,a.TransferNO,a.Sequence
  10139. ,a.FromWarehouseCode as FromWHCode,e.WarehouseName as FromWHName,a.FromLocationCode as FromLotCode,h.LocationName as FromLotName,
  10140. a.ToWarehouseCode as ToWHCode,g.WarehouseName as ToWHName,a.ToLocationCode as ToLotCode,i.LocationName as ToLotName,
  10141. a.InvCode, b.InvName,b.InvStd,b.InvUnit,
  10142. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity
  10143. ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount
  10144. ,CAST(a.TransferQuantity AS DECIMAL(38,{0})) as TransferQuantity
  10145. ,c.LOTQTY
  10146. ,isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays
  10147. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  10148. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  10149. a.EATTRIBUTE9,a.EATTRIBUTE10
  10150. from ICSTransferApplication a
  10151. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  10152. left join (
  10153. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  10154. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='202'
  10155. where isnull(ee.EATTRIBUTE1,'')=''
  10156. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  10157. ) c on a.TransferNO=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  10158. left join ICSWarehouse e on a.FromWarehouseCode=e.WarehouseCode and a.WorkPoint=e.WorkPoint
  10159. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  10160. left join ICSWarehouse g on a.ToWarehouseCode=g.WarehouseCode and a.WorkPoint=g.WorkPoint
  10161. left join ICSLocation h on a.FromLocationCode=h.LocationCode and a.WorkPoint=h.WorkPoint
  10162. left join ICSLocation i on a.ToLocationCode=i.LocationCode and a.WorkPoint=i.WorkPoint
  10163. where 1 = 1 and a.FromWarehouseCode in (select B.F_ItemCode from Sys_SRM_Items A
  10164. LEFT JOIN Sys_SRM_ItemsDetail B ON B.F_ItemId=A.F_Id
  10165. where A.F_EnCode='WorkLineWHConfig')";
  10166. sql = string.Format(sql, Figure);
  10167. #endregion
  10168. if (!string.IsNullOrWhiteSpace(queryJson))
  10169. {
  10170. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  10171. {
  10172. sql += " and a.TransferNO like '%" + queryParam["POCode"].ToString() + "%' ";
  10173. }
  10174. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  10175. {
  10176. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  10177. }
  10178. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  10179. {
  10180. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  10181. }
  10182. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  10183. {
  10184. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  10185. }
  10186. }
  10187. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  10188. {
  10189. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  10190. }
  10191. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  10192. //{
  10193. // sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  10194. //}
  10195. sql += @"GROUP BY a.Id,a.TransferNO,a.Sequence,a.InvCode,A.Quantity,A.Amount,a.TransferQuantity,b.InvName,e.WarehouseName,a.FromWarehouseCode,e.WarehouseName,a.FromLocationCode,h.LocationName,
  10196. a.ToWarehouseCode,g.WarehouseName,a.ToLocationCode,i.LocationName,b.InvStd,b.InvUnit,b.EffectiveEnable,b.EffectiveDays,c.LOTQTY,
  10197. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,a.EATTRIBUTE9,a.EATTRIBUTE10 ) t
  10198. where 1=1 ";
  10199. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  10200. {
  10201. string POStatus = queryParam["POStatus"].ToString();
  10202. if (POStatus == "0")
  10203. {
  10204. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  10205. }
  10206. else if (POStatus == "1")
  10207. {
  10208. sql += " and Quantity-ISNULL(LOTQTY,0)=0";
  10209. }
  10210. else
  10211. {
  10212. sql += " and Quantity-ISNULL(LOTQTY,0)<>0";
  10213. }
  10214. }
  10215. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  10216. }
  10217. /// <summary>
  10218. /// 派纳 线边仓一步调入单生成条码
  10219. /// </summary>
  10220. /// <param name="queryJson"></param>
  10221. /// <param name="jqgridparam"></param>
  10222. /// <returns></returns>
  10223. public DataTable GetGridJsonOneSetpTransPN(string queryJson, ref Pagination jqgridparam)
  10224. {
  10225. DataTable dt = new DataTable();
  10226. var queryParam = queryJson.ToJObject();
  10227. List<DbParameter> parameter = new List<DbParameter>();
  10228. object Figure = GetDecimalDigits();
  10229. #region [SQL]
  10230. string sql = @" select * from (select distinct a.ID,a.TransferNO,a.Sequence
  10231. ,a.FromWarehouseCode as FromWHCode,e.WarehouseName as FromWHName,a.FromLocationCode as FromLotCode,h.LocationName as FromLotName,
  10232. a.ToWarehouseCode as ToWHCode,g.WarehouseName as ToWHName,a.ToLocationCode as ToLotCode,i.LocationName as ToLotName,
  10233. a.InvCode, b.InvName,b.InvStd,b.InvUnit,
  10234. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity
  10235. ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount
  10236. ,CAST(a.TransferQuantity AS DECIMAL(38,{0})) as TransferQuantity
  10237. ,c.LOTQTY
  10238. ,isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays
  10239. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  10240. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  10241. a.EATTRIBUTE9,a.EATTRIBUTE10
  10242. from ICSTransfer a
  10243. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  10244. left join (
  10245. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  10246. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='203'
  10247. where isnull(ee.EATTRIBUTE1,'')=''
  10248. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  10249. ) c on a.TransferNO=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  10250. left join ICSWarehouse e on a.FromWarehouseCode=e.WarehouseCode and a.WorkPoint=e.WorkPoint
  10251. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  10252. left join ICSWarehouse g on a.ToWarehouseCode=g.WarehouseCode and a.WorkPoint=g.WorkPoint
  10253. left join ICSLocation h on a.FromLocationCode=h.LocationCode and a.WorkPoint=h.WorkPoint
  10254. left join ICSLocation i on a.ToLocationCode=i.LocationCode and a.WorkPoint=i.WorkPoint
  10255. where 1 = 1 and a.Type=1 and a.FromWarehouseCode in (select B.F_ItemCode from Sys_SRM_Items A
  10256. LEFT JOIN Sys_SRM_ItemsDetail B ON B.F_ItemId=A.F_Id
  10257. where A.F_EnCode='WorkLineWHConfig')";
  10258. sql = string.Format(sql, Figure);
  10259. #endregion
  10260. if (!string.IsNullOrWhiteSpace(queryJson))
  10261. {
  10262. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  10263. {
  10264. sql += " and a.TransferNO like '%" + queryParam["POCode"].ToString() + "%' ";
  10265. }
  10266. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  10267. {
  10268. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  10269. }
  10270. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  10271. {
  10272. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  10273. }
  10274. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  10275. {
  10276. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  10277. }
  10278. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  10279. {
  10280. sql += " and a.CreateDateTime >= '" + queryParam["FromTime"].ToString() + "' ";
  10281. }
  10282. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  10283. {
  10284. sql += " and a.CreateDateTime <= '" + queryParam["ToTime"].ToString() + "' ";
  10285. }
  10286. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  10287. {
  10288. sql += " and a.FromWarehouseCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  10289. }
  10290. }
  10291. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  10292. {
  10293. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  10294. }
  10295. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  10296. //{
  10297. // sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  10298. //}
  10299. sql += @"GROUP BY a.Id,a.TransferNO,a.Sequence,a.InvCode,A.Quantity,A.Amount,a.TransferQuantity,b.InvName,e.WarehouseName,a.FromWarehouseCode,e.WarehouseName,a.FromLocationCode,h.LocationName,
  10300. a.ToWarehouseCode,g.WarehouseName,a.ToLocationCode,i.LocationName,b.InvStd,b.InvUnit,b.EffectiveEnable,b.EffectiveDays,c.LOTQTY,
  10301. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,a.EATTRIBUTE9,a.EATTRIBUTE10 ) t
  10302. where 1=1 ";
  10303. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  10304. {
  10305. string POStatus = queryParam["POStatus"].ToString();
  10306. if (POStatus == "0")
  10307. {
  10308. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  10309. }
  10310. else if (POStatus == "1")
  10311. {
  10312. sql += " and Quantity-ISNULL(LOTQTY,0)=0";
  10313. }
  10314. else
  10315. {
  10316. sql += " and Quantity-ISNULL(LOTQTY,0)<>0";
  10317. }
  10318. }
  10319. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  10320. }
  10321. /// <summary>
  10322. /// 派纳 线边仓调拨申请单生成条码 保存(生成条码的同时入库)
  10323. /// </summary>
  10324. /// <param name="TransferNO"></param>
  10325. /// <param name="Sequence"></param>
  10326. /// <param name="keyValue"></param>
  10327. /// <param name="WorkPoint"></param>
  10328. /// <returns></returns>
  10329. public int SubmitFormTransferApplicatioPNSave(string TransferNO, string Sequence, string keyValue, string WorkPoint)
  10330. {
  10331. var queryParam = keyValue.ToJObject();
  10332. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  10333. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  10334. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  10335. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  10336. decimal LOTQTY = minPackQty;
  10337. string Pre = "Tra" + TransferNO + (Convert.ToInt32(Sequence)).ToString("D4");
  10338. string sql = string.Empty;
  10339. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  10340. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  10341. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  10342. string Identification = Guid.NewGuid().ToString();
  10343. string sqls = string.Empty;
  10344. string Colspan = "";
  10345. string str1 = "";
  10346. List<string> ExtensionIDList = new List<string>();
  10347. #region 装箱的功能
  10348. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  10349. string VenCode = queryParam["VenCode"].ToString();
  10350. int PackCount = 0;//每箱放的数量
  10351. int Pack_YuShu = 0;//需要平摊的数量
  10352. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  10353. List<PackModel> List_Pack = new List<PackModel>();
  10354. int ZQty = 0;
  10355. if (createPackCount > 0)
  10356. {
  10357. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  10358. if (Pack_YuShu == 0)
  10359. {
  10360. PackCount = (createPageCount / createPackCount);
  10361. }
  10362. else
  10363. {
  10364. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  10365. }
  10366. for (int jj = 0; jj < createPackCount; jj++)
  10367. {
  10368. object CARID = Guid.NewGuid();
  10369. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  10370. sql += @" INSERT INTO dbo.ICSContainer
  10371. ( ID,ContainerCode ,
  10372. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  10373. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  10374. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  10375. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  10376. PackModel PP = new PackModel();
  10377. PP.ID = CARID.ToString();
  10378. PP.PackCode = Carton;
  10379. if (jj < Pack_YuShu)
  10380. {
  10381. PP.FristBarIndex = ZQty;
  10382. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  10383. }
  10384. else
  10385. {
  10386. PP.FristBarIndex = ZQty;
  10387. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  10388. }
  10389. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  10390. List_Pack.Add(PP);
  10391. }
  10392. }
  10393. #endregion
  10394. for (int i = 0; i < createPageCount; i++)
  10395. {
  10396. if (i + 1 == createPageCount)
  10397. {
  10398. if (minPackQty * createPageCount > thisCreateQty)
  10399. {
  10400. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  10401. }
  10402. }
  10403. 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();
  10404. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  10405. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  10406. bool flag = true;
  10407. foreach (var item in ExtensionIDList)
  10408. {
  10409. if (item == Colspan + WorkPoint)
  10410. {
  10411. flag = false;
  10412. }
  10413. }
  10414. if (ExtensionID == null && flag == true)
  10415. {
  10416. str1 = Guid.NewGuid().ToString();
  10417. 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)
  10418. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  10419. 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(),
  10420. MUSER, MUSERNAME, WorkPoints);
  10421. }
  10422. else if (ExtensionID != null)
  10423. {
  10424. str1 = ExtensionID.ToString();
  10425. }
  10426. ExtensionIDList.Add(Colspan + WorkPoint);
  10427. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  10428. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  10429. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  10430. LotNo, TransferNO, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  10431. sql += string.Format(@"
  10432. insert into ICSInventoryLot
  10433. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  10434. select
  10435. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','201','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  10436. from ICSTransferApplication where TransferNO='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  10437. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, TransferNO, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  10438. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  10439. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  10440. //派纳调拨申请单生成的条码需要自动入库
  10441. sql += string.Format(@"
  10442. INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint)
  10443. SELECT NEWID(),a.LotNo
  10444. ,(SELECT FromWarehouseCode FROM ICSTransferApplication WHERE TransferNO='{2}' AND Sequence='{3}' AND WorkPoint='{1}')
  10445. ,(SELECT TOP 1 A.LocationCode FROM ICSLocation A
  10446. INNER JOIN ICSWarehouse B ON B.ID=A.WHID AND B.WorkPoint=A.WorkPoint
  10447. INNER JOIN ICSTransferApplication C ON C.FromWarehouseCode=B.WarehouseCode AND C.WorkPoint=B.WorkPoint
  10448. WHERE C.TransferNO='{2}' AND C.Sequence='{3}' AND C.WorkPoint='{1}')
  10449. ,a.InvCode ,a.Quantity,SYSDATETIME(),'0','{4}' ,'{5}' ,SYSDATETIME() ,a.WorkPoint
  10450. FROM ICSInventoryLot a
  10451. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  10452. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'",
  10453. LotNo, WorkPoint, TransferNO, Sequence, MUSER, MUSERNAME);
  10454. sql += string.Format(@"
  10455. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  10456. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  10457. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  10458. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  10459. MTIME,WorkPoint)
  10460. SELECT NEWID(),'{2}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  10461. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  10462. '','0','6','75','1',D.TransferID,
  10463. D.TransferDetailID,D.TransferNO,D.Sequence,'MUSER' ,'MUSERNAME' ,
  10464. SYSDATETIME() ,a.WorkPoint
  10465. FROM ICSInventoryLot a
  10466. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  10467. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  10468. INNER JOIN ICSTransferApplication D ON D.TransferNO=B.TransCode AND D.Sequence=B.TransSequence AND D.WorkPoint=B.WorkPoint
  10469. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'",
  10470. LotNo, WorkPoint, Identification);
  10471. sql += "\r\n";
  10472. //装箱的功能
  10473. if (List_Pack.Count > 0)
  10474. {
  10475. PackModel mm = new PackModel();
  10476. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  10477. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  10478. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  10479. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  10480. }
  10481. }
  10482. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  10483. return count;
  10484. }
  10485. /// <summary>
  10486. /// 派纳 线边仓一步调入单生成条码 保存(生成条码的同时入库)
  10487. /// </summary>
  10488. /// <param name="TransferNO"></param>
  10489. /// <param name="Sequence"></param>
  10490. /// <param name="keyValue"></param>
  10491. /// <param name="WorkPoint"></param>
  10492. /// <returns></returns>
  10493. public int SubmitFormOneStepTransPNSave(string TransferNO, string Sequence, string keyValue, string WorkPoint)
  10494. {
  10495. var queryParam = keyValue.ToJObject();
  10496. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  10497. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  10498. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  10499. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  10500. decimal LOTQTY = minPackQty;
  10501. string Pre = "Tra" + TransferNO + (Convert.ToInt32(Sequence)).ToString("D4");
  10502. string sql = string.Empty;
  10503. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  10504. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  10505. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  10506. string Identification = Guid.NewGuid().ToString();
  10507. string sqls = string.Empty;
  10508. string Colspan = "";
  10509. string str1 = "";
  10510. List<string> ExtensionIDList = new List<string>();
  10511. #region 装箱的功能
  10512. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  10513. string VenCode = queryParam["VenCode"].ToString();
  10514. int PackCount = 0;//每箱放的数量
  10515. int Pack_YuShu = 0;//需要平摊的数量
  10516. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  10517. List<PackModel> List_Pack = new List<PackModel>();
  10518. int ZQty = 0;
  10519. if (createPackCount > 0)
  10520. {
  10521. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  10522. if (Pack_YuShu == 0)
  10523. {
  10524. PackCount = (createPageCount / createPackCount);
  10525. }
  10526. else
  10527. {
  10528. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  10529. }
  10530. for (int jj = 0; jj < createPackCount; jj++)
  10531. {
  10532. object CARID = Guid.NewGuid();
  10533. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  10534. sql += @" INSERT INTO dbo.ICSContainer
  10535. ( ID,ContainerCode ,
  10536. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  10537. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  10538. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  10539. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  10540. PackModel PP = new PackModel();
  10541. PP.ID = CARID.ToString();
  10542. PP.PackCode = Carton;
  10543. if (jj < Pack_YuShu)
  10544. {
  10545. PP.FristBarIndex = ZQty;
  10546. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  10547. }
  10548. else
  10549. {
  10550. PP.FristBarIndex = ZQty;
  10551. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  10552. }
  10553. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  10554. List_Pack.Add(PP);
  10555. }
  10556. }
  10557. #endregion
  10558. for (int i = 0; i < createPageCount; i++)
  10559. {
  10560. if (i + 1 == createPageCount)
  10561. {
  10562. if (minPackQty * createPageCount > thisCreateQty)
  10563. {
  10564. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  10565. }
  10566. }
  10567. 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();
  10568. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  10569. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  10570. bool flag = true;
  10571. foreach (var item in ExtensionIDList)
  10572. {
  10573. if (item == Colspan + WorkPoint)
  10574. {
  10575. flag = false;
  10576. }
  10577. }
  10578. if (ExtensionID == null && flag == true)
  10579. {
  10580. str1 = Guid.NewGuid().ToString();
  10581. 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)
  10582. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  10583. 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(),
  10584. MUSER, MUSERNAME, WorkPoints);
  10585. }
  10586. else if (ExtensionID != null)
  10587. {
  10588. str1 = ExtensionID.ToString();
  10589. }
  10590. ExtensionIDList.Add(Colspan + WorkPoint);
  10591. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  10592. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  10593. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  10594. LotNo, TransferNO, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  10595. sql += string.Format(@"
  10596. insert into ICSInventoryLot
  10597. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  10598. select
  10599. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','203','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  10600. from ICSTransfer where TransferNO='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  10601. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, TransferNO, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  10602. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  10603. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  10604. //派纳调拨申请单生成的条码需要自动入库
  10605. sql += string.Format(@"
  10606. INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint)
  10607. SELECT NEWID(),a.LotNo
  10608. ,(SELECT FromWarehouseCode FROM ICSTransfer WHERE TransferNO='{2}' AND Sequence='{3}' AND WorkPoint='{1}')
  10609. ,(SELECT TOP 1 A.LocationCode FROM ICSLocation A
  10610. INNER JOIN ICSWarehouse B ON B.ID=A.WHID AND B.WorkPoint=A.WorkPoint
  10611. INNER JOIN ICSTransfer C ON C.FromWarehouseCode=B.WarehouseCode AND C.WorkPoint=B.WorkPoint
  10612. WHERE C.TransferNO='{2}' AND C.Sequence='{3}' AND C.WorkPoint='{1}')
  10613. ,a.InvCode ,a.Quantity,SYSDATETIME(),'0','{4}' ,'{5}' ,SYSDATETIME() ,a.WorkPoint
  10614. FROM ICSInventoryLot a
  10615. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  10616. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'",
  10617. LotNo, WorkPoint, TransferNO, Sequence, MUSER, MUSERNAME);
  10618. sql += string.Format(@"
  10619. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  10620. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  10621. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  10622. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  10623. MTIME,WorkPoint)
  10624. SELECT NEWID(),'{2}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  10625. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  10626. '','0','6','75','1',D.TransferID,
  10627. D.TransferDetailID,D.TransferNO,D.Sequence,'MUSER' ,'MUSERNAME' ,
  10628. SYSDATETIME() ,a.WorkPoint
  10629. FROM ICSInventoryLot a
  10630. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  10631. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  10632. INNER JOIN ICSTransfer D ON D.TransferNO=B.TransCode AND D.Sequence=B.TransSequence AND D.WorkPoint=B.WorkPoint
  10633. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'",
  10634. LotNo, WorkPoint, Identification);
  10635. sql += "\r\n";
  10636. //装箱的功能
  10637. if (List_Pack.Count > 0)
  10638. {
  10639. PackModel mm = new PackModel();
  10640. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  10641. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  10642. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  10643. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  10644. }
  10645. }
  10646. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  10647. return count;
  10648. }
  10649. /// <summary>
  10650. /// 派纳 线边仓调拨申请单生成条码 保存(生成条码的同时入库)
  10651. /// </summary>
  10652. /// <param name="TransferNO"></param>
  10653. /// <param name="Sequence"></param>
  10654. /// <param name="keyValue"></param>
  10655. /// <param name="WorkPoint"></param>
  10656. /// <returns></returns>
  10657. public int SubmitFormTransferApplicatioPNSaveNew(string TransferNO, string Sequence, string keyValue, string WorkPoint)
  10658. {
  10659. var queryParam = keyValue.ToJObject();
  10660. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  10661. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  10662. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  10663. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  10664. List<decimal> lotQtys = new List<decimal>();
  10665. foreach (var jLotno in jLotnos)
  10666. {
  10667. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  10668. lotQtys.Add(qty);
  10669. }
  10670. int createPageCount = lotQtys.Count();
  10671. string Pre = "Tra" + TransferNO + (Convert.ToInt32(Sequence)).ToString("D4");
  10672. string sql = string.Empty;
  10673. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  10674. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  10675. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  10676. string Identification = Guid.NewGuid().ToString();
  10677. string sqls = string.Empty;
  10678. string Colspan = "";
  10679. string str1 = "";
  10680. List<string> ExtensionIDList = new List<string>();
  10681. #region 装箱的功能
  10682. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  10683. string VenCode = queryParam["VenCode"].ToString();
  10684. int PackCount = 0;//每箱放的数量
  10685. int Pack_YuShu = 0;//需要平摊的数量
  10686. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  10687. List<PackModel> List_Pack = new List<PackModel>();
  10688. int ZQty = 0;
  10689. if (createPackCount > 0)
  10690. {
  10691. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  10692. if (Pack_YuShu == 0)
  10693. {
  10694. PackCount = (createPageCount / createPackCount);
  10695. }
  10696. else
  10697. {
  10698. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  10699. }
  10700. for (int jj = 0; jj < createPackCount; jj++)
  10701. {
  10702. object CARID = Guid.NewGuid();
  10703. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  10704. sql += @" INSERT INTO dbo.ICSContainer
  10705. ( ID,ContainerCode ,
  10706. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  10707. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  10708. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  10709. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  10710. PackModel PP = new PackModel();
  10711. PP.ID = CARID.ToString();
  10712. PP.PackCode = Carton;
  10713. if (jj < Pack_YuShu)
  10714. {
  10715. PP.FristBarIndex = ZQty;
  10716. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  10717. }
  10718. else
  10719. {
  10720. PP.FristBarIndex = ZQty;
  10721. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  10722. }
  10723. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  10724. List_Pack.Add(PP);
  10725. }
  10726. }
  10727. #endregion
  10728. for (int i = 0; i < createPageCount; i++)
  10729. {
  10730. var LOTQTY = lotQtys[i];
  10731. 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();
  10732. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  10733. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  10734. bool flag = true;
  10735. foreach (var item in ExtensionIDList)
  10736. {
  10737. if (item == Colspan + WorkPoint)
  10738. {
  10739. flag = false;
  10740. }
  10741. }
  10742. if (ExtensionID == null && flag == true)
  10743. {
  10744. str1 = Guid.NewGuid().ToString();
  10745. 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)
  10746. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  10747. 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(),
  10748. MUSER, MUSERNAME, WorkPoints);
  10749. }
  10750. else if (ExtensionID != null)
  10751. {
  10752. str1 = ExtensionID.ToString();
  10753. }
  10754. ExtensionIDList.Add(Colspan + WorkPoint);
  10755. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  10756. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  10757. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  10758. LotNo, TransferNO, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  10759. sql += string.Format(@"
  10760. insert into ICSInventoryLot
  10761. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  10762. select
  10763. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','201','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  10764. from ICSTransferApplication where TransferNO='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  10765. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, TransferNO, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  10766. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  10767. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  10768. //派纳调拨申请单生成的条码需要自动入库
  10769. sql += string.Format(@"
  10770. INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint)
  10771. SELECT NEWID(),a.LotNo
  10772. ,(SELECT FromWarehouseCode FROM ICSTransferApplication WHERE TransferNO='{2}' AND Sequence='{3}' AND WorkPoint='{1}')
  10773. ,(SELECT TOP 1 A.LocationCode FROM ICSLocation A
  10774. INNER JOIN ICSWarehouse B ON B.ID=A.WHID AND B.WorkPoint=A.WorkPoint
  10775. INNER JOIN ICSTransferApplication C ON C.FromWarehouseCode=B.WarehouseCode AND C.WorkPoint=B.WorkPoint
  10776. WHERE C.TransferNO='{2}' AND C.Sequence='{3}' AND C.WorkPoint='{1}')
  10777. ,a.InvCode ,a.Quantity,SYSDATETIME(),'0','{4}' ,'{5}' ,SYSDATETIME() ,a.WorkPoint
  10778. FROM ICSInventoryLot a
  10779. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  10780. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'",
  10781. LotNo, WorkPoint, TransferNO, Sequence, MUSER, MUSERNAME);
  10782. sql += string.Format(@"
  10783. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  10784. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  10785. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  10786. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  10787. MTIME,WorkPoint)
  10788. SELECT NEWID(),'{2}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  10789. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  10790. '','0','6','75','1',D.TransferID,
  10791. D.TransferDetailID,D.TransferNO,D.Sequence,'MUSER' ,'MUSERNAME' ,
  10792. SYSDATETIME() ,a.WorkPoint
  10793. FROM ICSInventoryLot a
  10794. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  10795. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  10796. INNER JOIN ICSTransferApplication D ON D.TransferNO=B.TransCode AND D.Sequence=B.TransSequence AND D.WorkPoint=B.WorkPoint
  10797. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'",
  10798. LotNo, WorkPoint, Identification);
  10799. sql += "\r\n";
  10800. //装箱的功能
  10801. if (List_Pack.Count > 0)
  10802. {
  10803. PackModel mm = new PackModel();
  10804. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  10805. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  10806. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  10807. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  10808. }
  10809. }
  10810. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  10811. return count;
  10812. }
  10813. /// <summary>
  10814. /// 派纳 线边仓一步调入单生成条码 保存(生成条码的同时入库---非规则生成条码)
  10815. /// </summary>
  10816. /// <param name="TransferNO"></param>
  10817. /// <param name="Sequence"></param>
  10818. /// <param name="keyValue"></param>
  10819. /// <param name="WorkPoint"></param>
  10820. /// <returns></returns>
  10821. public int SubmitFormOneStepTransferPNSaveNew(string TransferNO, string Sequence, string keyValue, string WorkPoint)
  10822. {
  10823. var queryParam = keyValue.ToJObject();
  10824. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  10825. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  10826. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  10827. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  10828. List<decimal> lotQtys = new List<decimal>();
  10829. foreach (var jLotno in jLotnos)
  10830. {
  10831. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  10832. lotQtys.Add(qty);
  10833. }
  10834. int createPageCount = lotQtys.Count();
  10835. string Pre = "Tra" + TransferNO + (Convert.ToInt32(Sequence)).ToString("D4");
  10836. string sql = string.Empty;
  10837. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  10838. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  10839. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  10840. string Identification = Guid.NewGuid().ToString();
  10841. string sqls = string.Empty;
  10842. string Colspan = "";
  10843. string str1 = "";
  10844. List<string> ExtensionIDList = new List<string>();
  10845. #region 装箱的功能
  10846. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  10847. string VenCode = queryParam["VenCode"].ToString();
  10848. int PackCount = 0;//每箱放的数量
  10849. int Pack_YuShu = 0;//需要平摊的数量
  10850. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  10851. List<PackModel> List_Pack = new List<PackModel>();
  10852. int ZQty = 0;
  10853. if (createPackCount > 0)
  10854. {
  10855. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  10856. if (Pack_YuShu == 0)
  10857. {
  10858. PackCount = (createPageCount / createPackCount);
  10859. }
  10860. else
  10861. {
  10862. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  10863. }
  10864. for (int jj = 0; jj < createPackCount; jj++)
  10865. {
  10866. object CARID = Guid.NewGuid();
  10867. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  10868. sql += @" INSERT INTO dbo.ICSContainer
  10869. ( ID,ContainerCode ,
  10870. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  10871. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  10872. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  10873. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  10874. PackModel PP = new PackModel();
  10875. PP.ID = CARID.ToString();
  10876. PP.PackCode = Carton;
  10877. if (jj < Pack_YuShu)
  10878. {
  10879. PP.FristBarIndex = ZQty;
  10880. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  10881. }
  10882. else
  10883. {
  10884. PP.FristBarIndex = ZQty;
  10885. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  10886. }
  10887. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  10888. List_Pack.Add(PP);
  10889. }
  10890. }
  10891. #endregion
  10892. for (int i = 0; i < createPageCount; i++)
  10893. {
  10894. var LOTQTY = lotQtys[i];
  10895. 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();
  10896. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  10897. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  10898. bool flag = true;
  10899. foreach (var item in ExtensionIDList)
  10900. {
  10901. if (item == Colspan + WorkPoint)
  10902. {
  10903. flag = false;
  10904. }
  10905. }
  10906. if (ExtensionID == null && flag == true)
  10907. {
  10908. str1 = Guid.NewGuid().ToString();
  10909. 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)
  10910. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  10911. 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(),
  10912. MUSER, MUSERNAME, WorkPoints);
  10913. }
  10914. else if (ExtensionID != null)
  10915. {
  10916. str1 = ExtensionID.ToString();
  10917. }
  10918. ExtensionIDList.Add(Colspan + WorkPoint);
  10919. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  10920. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  10921. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  10922. LotNo, TransferNO, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  10923. sql += string.Format(@"
  10924. insert into ICSInventoryLot
  10925. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  10926. select
  10927. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','201','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  10928. from ICSTransfer where TransferNO='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  10929. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, TransferNO, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  10930. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  10931. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  10932. //派纳调拨申请单生成的条码需要自动入库
  10933. sql += string.Format(@"
  10934. INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint)
  10935. SELECT NEWID(),a.LotNo
  10936. ,(SELECT FromWarehouseCode FROM ICSTransfer WHERE TransferNO='{2}' AND Sequence='{3}' AND WorkPoint='{1}')
  10937. ,(SELECT TOP 1 A.LocationCode FROM ICSLocation A
  10938. INNER JOIN ICSWarehouse B ON B.ID=A.WHID AND B.WorkPoint=A.WorkPoint
  10939. INNER JOIN ICSTransfer C ON C.FromWarehouseCode=B.WarehouseCode AND C.WorkPoint=B.WorkPoint
  10940. WHERE C.TransferNO='{2}' AND C.Sequence='{3}' AND C.WorkPoint='{1}')
  10941. ,a.InvCode ,a.Quantity,SYSDATETIME(),'0','{4}' ,'{5}' ,SYSDATETIME() ,a.WorkPoint
  10942. FROM ICSInventoryLot a
  10943. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  10944. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'",
  10945. LotNo, WorkPoint, TransferNO, Sequence, MUSER, MUSERNAME);
  10946. sql += string.Format(@"
  10947. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  10948. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  10949. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  10950. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  10951. MTIME,WorkPoint)
  10952. SELECT NEWID(),'{2}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  10953. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  10954. '','0','6','75','1',D.TransferID,
  10955. D.TransferDetailID,D.TransferNO,D.Sequence,'MUSER' ,'MUSERNAME' ,
  10956. SYSDATETIME() ,a.WorkPoint
  10957. FROM ICSInventoryLot a
  10958. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  10959. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  10960. INNER JOIN ICSTransfer D ON D.TransferNO=B.TransCode AND D.Sequence=B.TransSequence AND D.WorkPoint=B.WorkPoint
  10961. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'",
  10962. LotNo, WorkPoint, Identification);
  10963. sql += "\r\n";
  10964. //装箱的功能
  10965. if (List_Pack.Count > 0)
  10966. {
  10967. PackModel mm = new PackModel();
  10968. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  10969. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  10970. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  10971. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  10972. }
  10973. }
  10974. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  10975. return count;
  10976. }
  10977. /// <summary>
  10978. /// 派纳 线边仓调拨申请单获取单据信息
  10979. /// </summary>
  10980. /// <param name="TransferNO"></param>
  10981. /// <param name="Sequence"></param>
  10982. /// <param name="WorkPoint"></param>
  10983. /// <returns></returns>
  10984. public DataTable GetSubGridJsonTransferApplicationByCreatePN(string TransferNO, string Sequence, string WorkPoint)
  10985. {
  10986. DataTable dt = new DataTable();
  10987. object Figure = GetDecimalDigits();
  10988. List<DbParameter> parameter = new List<DbParameter>();
  10989. string sql = $@" SELECT a.InvCode,a.Quantity, b.InvName, b.ClassCode, b.InvStd, b.InvUnit
  10990. , CAST ( xx.Quantity AS DECIMAL ( 38,6 )) AS Amount
  10991. , CAST ( isnull( c.LOTQTY, 0 ) AS DECIMAL ( 38,6 ) ) AS CreatedQty
  10992. , CAST ( ( xx.Quantity- ISNULL( c.LOTQTY, 0 ) ) AS DECIMAL ( 38,6 ) ) AS thisCreateQty
  10993. , isnull( b.EffectiveEnable, 0 ) AS EffectiveEnable
  10994. , CAST ( isnull( b.EffectiveDays, 0 ) AS DECIMAL ( 38,6 ) ) AS EffectiveDays,isnull(b.EATTRIBUTE2,'') as MPQ
  10995. , e.ProjectCode, e.BatchCode, e.Version, e.Brand, e.cFree1, e.cFree2, e.cFree3, e.cFree4, e.cFree5, e.cFree6, e.cFree7, e.cFree8, e.cFree9, e.cFree10 ,
  10996. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  10997. FROM ICSTransferApplication a
  10998. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode AND a.WorkPoint= b.WorkPoint
  10999. LEFT JOIN ( SELECT a.Id, a.InvCode, a.Sequence, a.WorkPoint,CASE WHEN b.OverInType= '1' THEN a.Quantity* ( 1+b.OverInValue ) WHEN b.OverInType= '2' THEN a.Quantity+ b.OverInValue WHEN b.OverInType= '3' THEN 999999 ELSE a.Quantity
  11000. END AS Quantity
  11001. FROM ICSTransferApplication a
  11002. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode
  11003. AND a.WorkPoint= b.WorkPoint
  11004. ) xx ON xx.Id= a.Id
  11005. LEFT JOIN ( SELECT b.TransCode,b.TransSequence, SUM ( isnull( Quantity, 0 ) ) LOTQTY
  11006. FROM ICSInventoryLot a
  11007. LEFT JOIN ICSInventoryLotDetail b ON a.LotNo= b.LotNo AND a.Type= '202'
  11008. WHERE isnull( a.EATTRIBUTE1, '' ) = ''
  11009. GROUP BY
  11010. b.TransCode,
  11011. b.TransSequence
  11012. ) c ON a.TransferNO = c.TransCode AND a.Sequence = c.TransSequence
  11013. LEFT JOIN ICSExtension e ON a.ExtensionID= e.ID AND a.WorkPoint= e.WorkPoint
  11014. WHERE 1 = 1
  11015. and a.TransferNO='{TransferNO}' and a.Sequence='{Sequence}'
  11016. and a.WorkPoint='{WorkPoint}'";
  11017. sql = string.Format(sql, Figure);
  11018. return Repository().FindTableBySql(sql.ToString());
  11019. }
  11020. /// <summary>
  11021. /// 派纳 线边仓一步调入单获取单据信息
  11022. /// </summary>
  11023. /// <param name="TransferNO"></param>
  11024. /// <param name="Sequence"></param>
  11025. /// <param name="WorkPoint"></param>
  11026. /// <returns></returns>
  11027. public DataTable GetSubGridJsonOneSetpTransByCreatePN(string TransferNO, string Sequence, string WorkPoint)
  11028. {
  11029. DataTable dt = new DataTable();
  11030. object Figure = GetDecimalDigits();
  11031. List<DbParameter> parameter = new List<DbParameter>();
  11032. string sql = $@" SELECT a.InvCode,a.Quantity, b.InvName, b.ClassCode, b.InvStd, b.InvUnit
  11033. , CAST ( xx.Quantity AS DECIMAL ( 38,6 )) AS Amount
  11034. , CAST ( isnull( c.LOTQTY, 0 ) AS DECIMAL ( 38,6 ) ) AS CreatedQty
  11035. , CAST ( ( xx.Quantity- ISNULL( c.LOTQTY, 0 ) ) AS DECIMAL ( 38,6 ) ) AS thisCreateQty
  11036. , isnull( b.EffectiveEnable, 0 ) AS EffectiveEnable
  11037. , CAST ( isnull( b.EffectiveDays, 0 ) AS DECIMAL ( 38,6 ) ) AS EffectiveDays,isnull(b.EATTRIBUTE2,'') as MPQ
  11038. , e.ProjectCode, e.BatchCode, e.Version, e.Brand, e.cFree1, e.cFree2, e.cFree3, e.cFree4, e.cFree5, e.cFree6, e.cFree7, e.cFree8, e.cFree9, e.cFree10 ,
  11039. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  11040. FROM ICSTransfer a
  11041. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode AND a.WorkPoint= b.WorkPoint
  11042. LEFT JOIN ( SELECT a.Id, a.InvCode, a.Sequence, a.WorkPoint,CASE WHEN b.OverInType= '1' THEN a.Quantity* ( 1+b.OverInValue ) WHEN b.OverInType= '2' THEN a.Quantity+ b.OverInValue WHEN b.OverInType= '3' THEN 999999 ELSE a.Quantity
  11043. END AS Quantity
  11044. FROM ICSTransfer a
  11045. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode
  11046. AND a.WorkPoint= b.WorkPoint
  11047. ) xx ON xx.Id= a.Id
  11048. LEFT JOIN ( SELECT b.TransCode,b.TransSequence, SUM ( isnull( Quantity, 0 ) ) LOTQTY
  11049. FROM ICSInventoryLot a
  11050. LEFT JOIN ICSInventoryLotDetail b ON a.LotNo= b.LotNo AND a.Type= '203'
  11051. WHERE isnull( a.EATTRIBUTE1, '' ) = '' AND a.Type=1
  11052. GROUP BY
  11053. b.TransCode,
  11054. b.TransSequence
  11055. ) c ON a.TransferNO = c.TransCode AND a.Sequence = c.TransSequence
  11056. LEFT JOIN ICSExtension e ON a.ExtensionID= e.ID AND a.WorkPoint= e.WorkPoint
  11057. WHERE 1 = 1
  11058. and a.TransferNO='{TransferNO}' and a.Sequence='{Sequence}'
  11059. and a.WorkPoint='{WorkPoint}'";
  11060. sql = string.Format(sql, Figure);
  11061. return Repository().FindTableBySql(sql.ToString());
  11062. }
  11063. public int SubmitFormCGRKALL(string keyValue)
  11064. {
  11065. string sql = string.Empty;
  11066. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  11067. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  11068. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  11069. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  11070. foreach (var item in res)
  11071. {
  11072. JObject jo = (JObject)item;
  11073. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  11074. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  11075. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  11076. decimal LOTQTY = minPackQty;
  11077. string Pre = "KCP" + jo["Code"].ToString() + (Convert.ToInt32(jo["Sequence"].ToString())).ToString("D4");
  11078. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  11079. string sqls = string.Empty;
  11080. string Colspan = "";
  11081. string str1 = "";
  11082. List<string> ExtensionIDList = new List<string>();
  11083. for (int i = 0; i < createPageCount; i++)
  11084. {
  11085. if (i + 1 == createPageCount)
  11086. {
  11087. if (minPackQty * createPageCount > thisCreateQty)
  11088. {
  11089. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  11090. }
  11091. }
  11092. 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();
  11093. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  11094. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  11095. bool flag = true;
  11096. foreach (var items in ExtensionIDList)
  11097. {
  11098. if (items == Colspan + WorkPoint)
  11099. {
  11100. flag = false;
  11101. }
  11102. }
  11103. if (ExtensionID == null && flag == true)
  11104. {
  11105. str1 = Guid.NewGuid().ToString();
  11106. 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)
  11107. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  11108. str1, 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(),
  11109. MUSER, MUSERNAME, WorkPoint);
  11110. }
  11111. else if (ExtensionID != null)
  11112. {
  11113. str1 = ExtensionID.ToString();
  11114. }
  11115. ExtensionIDList.Add(Colspan + WorkPoint);
  11116. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  11117. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  11118. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  11119. LotNo, jo["Code"].ToString(), jo["Sequence"].ToString(), MUSER, MUSERNAME, WorkPoint, jo["ID"].ToString());
  11120. sql += string.Format(@"
  11121. insert into ICSInventoryLot
  11122. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  11123. select
  11124. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','22','{3}','{4}', getdate(),'{5}','{9}'
  11125. from ICSPurchaseReceive where RCVCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  11126. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, jo["Code"].ToString(), jo["Sequence"].ToString(), str1, Convert.ToDecimal(jo["Amount"].ToString()) / minPackQty * LOTQTY, jo["ExpirationDate"].ToString());
  11127. sql += "\r\n";
  11128. }
  11129. }
  11130. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  11131. return count;
  11132. }
  11133. /// <summary>
  11134. /// 销售退货生成条码(一键生成)
  11135. /// </summary>
  11136. /// <param name="POCode"></param>
  11137. /// <param name="PORow"></param>
  11138. /// <param name="keyValue"></param>
  11139. /// 已改
  11140. /// <returns></returns>
  11141. public int SubmitFormXSTHALL(string keyValue)
  11142. {
  11143. string sql = string.Empty;
  11144. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  11145. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  11146. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  11147. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  11148. foreach (var resItem in res)
  11149. {
  11150. JObject jo = (JObject)resItem;
  11151. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  11152. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  11153. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  11154. decimal LOTQTY = minPackQty;
  11155. string Pre = "SR" + jo["Code"].ToString() + (Convert.ToInt32(jo["Sequence"])).ToString("D4");
  11156. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  11157. string sqls = string.Empty;
  11158. string Colspan = "";
  11159. string str1 = "";
  11160. List<string> ExtensionIDList = new List<string>();
  11161. for (int i = 0; i < createPageCount; i++)
  11162. {
  11163. if (i + 1 == createPageCount)
  11164. {
  11165. if (minPackQty * createPageCount > thisCreateQty)
  11166. {
  11167. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  11168. }
  11169. }
  11170. 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();
  11171. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  11172. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  11173. bool flag = true;
  11174. foreach (var item in ExtensionIDList)
  11175. {
  11176. if (item == Colspan + WorkPoint)
  11177. {
  11178. flag = false;
  11179. }
  11180. }
  11181. if (ExtensionID == null && flag == true)
  11182. {
  11183. str1 = Guid.NewGuid().ToString();
  11184. 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)
  11185. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  11186. str1, 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(),
  11187. MUSER, MUSERNAME, WorkPoint);
  11188. }
  11189. else if (ExtensionID != null)
  11190. {
  11191. str1 = ExtensionID.ToString();
  11192. }
  11193. ExtensionIDList.Add(Colspan + WorkPoint);
  11194. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  11195. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  11196. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  11197. LotNo, jo["Code"].ToString(), jo["Sequence"].ToString(), MUSER, MUSERNAME, WorkPoint, jo["ID"].ToString());
  11198. sql += string.Format(@"
  11199. insert into ICSInventoryLot
  11200. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  11201. select
  11202. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','7','{3}','{4}', getdate(),'{5}','{9}'
  11203. from ICSSDN where Type='2' and SDNCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  11204. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, jo["Code"].ToString(), jo["Sequence"], str1, Convert.ToDecimal(jo["Amount"].ToString()) / minPackQty * LOTQTY, jo["ExpirationDate"].ToString());
  11205. sql += "\r\n";
  11206. }
  11207. }
  11208. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  11209. return count;
  11210. }
  11211. /// <summary>
  11212. /// 其他入库生成条码(一键生成)
  11213. /// </summary>
  11214. /// <param name="POCode"></param>
  11215. /// <param name="PORow"></param>
  11216. /// <param name="keyValue"></param>
  11217. /// 已改
  11218. /// <returns></returns>
  11219. public int SubmitFormQiTaALL(string keyValue)
  11220. {
  11221. string sql = string.Empty;
  11222. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  11223. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  11224. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  11225. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  11226. foreach (var resItem in res)
  11227. {
  11228. JObject jo = (JObject)resItem;
  11229. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  11230. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  11231. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  11232. decimal LOTQTY = minPackQty;
  11233. string Pre = "QT" + jo["Code"].ToString() + (Convert.ToInt32(jo["Sequence"])).ToString("D4");
  11234. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  11235. string sqls = string.Empty;
  11236. string Colspan = "";
  11237. string str1 = "";
  11238. List<string> ExtensionIDList = new List<string>();
  11239. for (int i = 0; i < createPageCount; i++)
  11240. {
  11241. if (i + 1 == createPageCount)
  11242. {
  11243. if (minPackQty * createPageCount > thisCreateQty)
  11244. {
  11245. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  11246. }
  11247. }
  11248. 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();
  11249. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  11250. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  11251. bool flag = true;
  11252. foreach (var item in ExtensionIDList)
  11253. {
  11254. if (item == Colspan + WorkPoint)
  11255. {
  11256. flag = false;
  11257. }
  11258. }
  11259. if (ExtensionID == null && flag == true)
  11260. {
  11261. str1 = Guid.NewGuid().ToString();
  11262. 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)
  11263. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  11264. str1, 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(),
  11265. MUSER, MUSERNAME, WorkPoint);
  11266. }
  11267. else if (ExtensionID != null)
  11268. {
  11269. str1 = ExtensionID.ToString();
  11270. }
  11271. ExtensionIDList.Add(Colspan + WorkPoint);
  11272. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  11273. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  11274. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  11275. LotNo, jo["Code"].ToString(), jo["Sequence"].ToString(), MUSER, MUSERNAME, WorkPoint, jo["ID"].ToString());
  11276. sql += string.Format(@"
  11277. insert into ICSInventoryLot
  11278. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  11279. select
  11280. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','5','{3}','{4}', getdate(),'{5}','{9}'
  11281. from ICSOtherIn where InCode='{6}' and Sequence='{7}' and WorkPoint='{5}' and ISNULL(EATTRIBUTE2,'1')='1'",
  11282. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, jo["Code"].ToString(), jo["Sequence"], str1, Convert.ToDecimal(jo["Amount"].ToString()) / minPackQty * LOTQTY, jo["ExpirationDate"].ToString());
  11283. sql += "\r\n";
  11284. }
  11285. }
  11286. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  11287. return count;
  11288. }
  11289. /// <summary>
  11290. /// 材料出库退料(一键生成)
  11291. /// </summary>
  11292. public int SubmitFormCLCKTLALL(string keyValue)
  11293. {
  11294. string sql = string.Empty;
  11295. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  11296. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  11297. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  11298. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  11299. foreach (var item in res)
  11300. {
  11301. JObject jo = (JObject)item;
  11302. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  11303. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  11304. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  11305. decimal LOTQTY = minPackQty;
  11306. string Pre = "MD" + jo["Code"].ToString() + (Convert.ToInt32(jo["Sequence"].ToString())).ToString("D4");
  11307. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  11308. string sqls = string.Empty;
  11309. string Colspan = "";
  11310. string str1 = "";
  11311. List<string> ExtensionIDList = new List<string>();
  11312. for (int i = 0; i < createPageCount; i++)
  11313. {
  11314. if (i + 1 == createPageCount)
  11315. {
  11316. if (minPackQty * createPageCount > thisCreateQty)
  11317. {
  11318. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  11319. }
  11320. }
  11321. 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();
  11322. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  11323. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  11324. bool flag = true;
  11325. foreach (var items in ExtensionIDList)
  11326. {
  11327. if (items == Colspan + WorkPoint)
  11328. {
  11329. flag = false;
  11330. }
  11331. }
  11332. if (ExtensionID == null && flag == true)
  11333. {
  11334. str1 = Guid.NewGuid().ToString();
  11335. 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)
  11336. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  11337. str1, 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(),
  11338. MUSER, MUSERNAME, WorkPoint);
  11339. }
  11340. else if (ExtensionID != null)
  11341. {
  11342. str1 = ExtensionID.ToString();
  11343. }
  11344. ExtensionIDList.Add(Colspan + WorkPoint);
  11345. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  11346. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  11347. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  11348. LotNo, jo["Code"].ToString(), jo["Sequence"].ToString(), MUSER, MUSERNAME, WorkPoint, jo["ID"].ToString());
  11349. sql += string.Format(@"
  11350. insert into ICSInventoryLot
  11351. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  11352. select
  11353. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','13','{3}','{4}', getdate(),'{5}','{9}'
  11354. from ICSMOApplyNegDetail where ApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  11355. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, jo["Code"].ToString(), jo["Sequence"].ToString(), str1, Convert.ToDecimal(jo["Amount"].ToString()) / minPackQty * LOTQTY, jo["ExpirationDate"].ToString());
  11356. sql += "\r\n";
  11357. }
  11358. }
  11359. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  11360. return count;
  11361. }
  11362. #region 晶华项目立库对接
  11363. public void IsALLCreate(string code, string type)
  11364. {
  11365. var workPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  11366. object Figure = GetDecimalDigits();
  11367. string querySql = "";
  11368. string codeName = "";
  11369. //采购到货
  11370. if (type == "7")
  11371. {
  11372. querySql = @"select distinct a.ID, a.DNCode,a.Sequence,
  11373. CAST(a.Quantity AS DECIMAL(38,{1})) as Quantity ,
  11374. CAST(a.RCVQuantity AS DECIMAL(38,{1})) as RCVQuantity,CAST((a.Quantity - ISnull(a.RCVQuantity, 0)) AS DECIMAL(38,{1})) as NRCVQuantity,
  11375. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,{1})) as LOTQTY
  11376. from ICSDeliveryNotice a
  11377. left join ICSInventory b on a.InvCode = b.InvCode and a.WorkPoint = b.WorkPoint
  11378. left join (
  11379. select mm.TransCode, mm.TransSequence, sum(isnull(ee.Quantity, 0)) LOTQTY, ee.WorkPoint from ICSInventoryLot ee
  11380. left join ICSInventoryLotDetail mm on ee.LotNo = mm.LotNo and ee.type = '7'
  11381. where isnull(ee.EATTRIBUTE1, '') = ''
  11382. group by mm.TransCode, mm.TransSequence, ee.WorkPoint
  11383. ) c on a.DNCode = c.TransCode and a.Sequence = c.TransSequence and a.WorkPoint = c.WorkPoint
  11384. where a.DNType = '1' and a.Status = '2' and a.ASNCode is null AND A.DNCode='{0}' ";
  11385. codeName = "采购订单";
  11386. }
  11387. var table = SqlHelper.CmdExecuteDataTable(string.Format(querySql, code, Figure));
  11388. if (table.Rows.Count <= 0)
  11389. throw new Exception($"{codeName}:{code} 不存在!");
  11390. if (table.AsEnumerable().FirstOrDefault(a => Convert.ToDecimal(a["Quantity"]) > Convert.ToDecimal(a["LOTQTY"])) != null)
  11391. throw new Exception($"{codeName}:{code} 还未全部生成条码,无法传输立库数据");
  11392. }
  11393. /// <summary>
  11394. /// 获取立库仓库信息
  11395. /// </summary>
  11396. /// <returns></returns>
  11397. public IEnumerable<object> GetHighWareMsg()
  11398. {
  11399. SystemManage.ItemsApp service = new SystemManage.ItemsApp();
  11400. SystemManage.ItemsDetailApp services = new SystemManage.ItemsDetailApp();
  11401. var itemEntity = service.GetForm2("晶华高架库维护");
  11402. if (itemEntity == null)
  11403. throw new Exception("高架库信息未维护!");
  11404. var entitys = services.GetList(itemId: itemEntity.F_Id);
  11405. foreach (var entity in entitys)
  11406. {
  11407. yield return new { WarehouseCode = entity.F_ItemCode, WareHouseName = entity.F_ItemName };
  11408. }
  11409. }
  11410. private void IsHighWare(IEnumerable<string> wareHouseCodes)
  11411. {
  11412. SystemManage.ItemsApp service = new SystemManage.ItemsApp();
  11413. SystemManage.ItemsDetailApp services = new SystemManage.ItemsDetailApp();
  11414. var itemEntity = service.GetForm2("晶华高架库维护");
  11415. if (itemEntity == null)
  11416. throw new Exception("高架库信息未维护!");
  11417. var highCodes = services.GetList(itemId: itemEntity.F_Id).Select(a => a.F_ItemCode);
  11418. wareHouseCodes.ToList().ForEach(code =>
  11419. {
  11420. if (!highCodes.Contains(code))
  11421. throw new Exception($"仓库:{code} 不是高架库,请确认!");
  11422. });
  11423. }
  11424. private LikuRet JinHuaLiKuInStock(JinHuaLiKuInStock inStock)
  11425. {
  11426. var url = ConfigurationManager.ConnectionStrings["JinHuaLiKuIn"] == null ? "" : ConfigurationManager.ConnectionStrings["JinHuaLiKuIn"].ConnectionString;
  11427. if (string.IsNullOrEmpty(url))
  11428. throw new Exception("获取立库入库接口信息失败!");
  11429. return HttpPost<LikuRet>(url, JsonConvert.SerializeObject(inStock));
  11430. }
  11431. /// <summary>
  11432. ///采购订单入库传输至立库系统
  11433. /// </summary>
  11434. /// <returns></returns>
  11435. public void JinHuaLiKuPoMainIn(string wareHouseCode, string workPoint, string type, string poDatas)
  11436. {
  11437. var array = JArray.Parse(poDatas);
  11438. IsHighWare(new List<string> { wareHouseCode });//是否高架库
  11439. //IsALLCreate(poCode, type);//是否条码全部生成
  11440. var poCode = array[0]["PoCode"].ToString();
  11441. var poSeq = string.Join(",", array.Select(a => "'" + a["Sequence"].ToString() + "'"));
  11442. var LotNos = string.Join(",", array.Select(a => "'" + a["LotNo"].ToString() + "'"));
  11443. var Code = GetSerialCode(workPoint, "IcsInventoryLot", "Eattribute28", poCode + DateTime.Now.ToString("yyyyMMdd"), 4);
  11444. JinHuaLiKuInStock inStock = new JinHuaLiKuInStock();
  11445. inStock.HeadReq.FunName = "materialInStock";
  11446. inStock.BodyReq.Main.DocType = "3";
  11447. inStock.BodyReq.Main.DocNo = Code;
  11448. string searchSql = $@"
  11449. With TempLot as
  11450. (
  11451. Select b.TransCode,b.TransSequence,a.Quantity,a.InvCode,a.WorkPoint,a.LotNo,a.ExtensionId from ICSInventoryLot a
  11452. Left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='7'
  11453. Where isnull(a.EATTRIBUTE1,'')='' and b.TransCode='{poCode}' and b.TransSequence in ({poSeq}) and a.LotNo in ({LotNos}) and a.workPoint='{workPoint}' and isnull(a.EATTRIBUTE30,'')=''
  11454. )
  11455. Select
  11456. lot.TransSequence,lot.Quantity,lot.LotNo,Ext.BatchCode,
  11457. Inv.InvUnit,Inv.InvStd,Inv.InvCode,Inv.InvName,Notice.VenCode,vendor.VenName,Notice.Mtime
  11458. From TempLot lot
  11459. Left Join IcsInventory Inv on Inv.InvCode=lot.InvCode and Inv.WorkPoint=lot.WorkPoint
  11460. Left Join ICSExtension Ext on Ext.Id=lot.ExtensionId
  11461. Left Join ICSDeliveryNotice Notice on Notice.DnCode=lot.TransCode and Notice.Sequence=lot.TransSequence and Notice.WorkPoint=inv.WorkPoint
  11462. Left Join IcsVendor vendor on vendor.VenCode=Notice.VenCode and vendor.Workpoint=lot.WorkPoint
  11463. Where lot.WorkPoint='{workPoint}'
  11464. ";
  11465. var DetailTable = SqlHelper.ExecuteTable(searchSql);
  11466. if (DetailTable.Rows.Count <= 0)
  11467. throw new Exception("获取未上传的条码信息失败!");
  11468. inStock.BodyReq.Main.SupplierCode = DetailTable.Rows[0]["VenCode"].ToString();
  11469. inStock.BodyReq.Main.SupplierName = DetailTable.Rows[0]["VenName"].ToString();
  11470. inStock.BodyReq.Main.DocDate = DetailTable.Rows[0]["Mtime"].ToString();
  11471. var lineNum = 1;
  11472. DetailTable.AsEnumerable().ToList().ForEach(a =>
  11473. {
  11474. LiKuInStockDetail detail = new LiKuInStockDetail();
  11475. detail.LineNum = lineNum;
  11476. detail.rowno = 1;
  11477. detail.MaterialCode = a["InvCode"].ToString();
  11478. detail.MaterialName = a["InvName"].ToString();
  11479. detail.Lot = a["BatchCode"].ToString();
  11480. detail.Spec = a["InvStd"].ToString();
  11481. detail.Quantity = Convert.ToDecimal(a["Quantity"]);
  11482. detail.UnitCode = a["InvUnit"].ToString();
  11483. detail.UnitName = a["InvUnit"].ToString();
  11484. detail.LotNo = a["LotNo"].ToString();
  11485. detail.WhCode = wareHouseCode;
  11486. detail.weight = 0;
  11487. inStock.BodyReq.Detail.Add(detail);
  11488. lineNum++;
  11489. });
  11490. var lotnos = string.Join(",", inStock.BodyReq.Detail.Select(a => "'" + a.LotNo + "'"));
  11491. string updateSql = $"Update ICSInventoryLot set Eattribute28='{Code}',EATTRIBUTE30='1' Where LotNo in ({lotnos}) and WorkPoint='{workPoint}' ";
  11492. string connstr = DbHelper.FromMd5(ConfigurationManager.ConnectionStrings["connstr"].ConnectionString);
  11493. var log = LogFactory.GetLogger(this.GetType());
  11494. using (SqlConnection conn = new SqlConnection(connstr))
  11495. {
  11496. conn.Open();
  11497. SqlCommand cmd = new SqlCommand();
  11498. cmd.Connection = conn;
  11499. cmd.Transaction = conn.BeginTransaction();
  11500. cmd.CommandText = updateSql;
  11501. try
  11502. {
  11503. cmd.ExecuteScalar();
  11504. var ret = JinHuaLiKuInStock(inStock);
  11505. log.Info($"Params:{JsonConvert.SerializeObject(inStock)}\r\n Return:{JsonConvert.SerializeObject(ret)}\r\n");
  11506. if (!ret.IsSuccess)
  11507. throw new Exception(ret.Message);
  11508. cmd.Transaction.Commit();
  11509. }
  11510. catch (Exception ex)
  11511. {
  11512. cmd.Transaction.Rollback();
  11513. throw ex;
  11514. }
  11515. }
  11516. }
  11517. #endregion
  11518. }
  11519. public class PackModel
  11520. {
  11521. public string ID { get; set; }
  11522. public string PackCode { get; set; }
  11523. public int FristBarIndex { get; set; }
  11524. public int LastBarIndex { get; set; }
  11525. }
  11526. }